From 500edd2a66e89caeb3457433b9ad4d88a16f1269 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Herv=C3=A9=20Boutemy?=
Date: Fri, 7 Apr 2023 12:43:47 +0200
Subject: [PATCH 01/46] link to plexus-xml Git repo
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 0a573595..a956a58a 100644
--- a/README.md
+++ b/README.md
@@ -14,4 +14,4 @@ For publishing [the site](https://codehaus-plexus.github.io/plexus-utils/) do th
mvn -Preporting verify site site:stage scm-publish:publish-scm
```
-Starting with version 4, XML classes (in `org.codehaus.plexus.util.xml` and `org.codehaus.plexus.util.xml.pull`) have been extracted to a separate `plexus-xml` 4: if you need them, just use this new artifact.
+Starting with version 4, XML classes (in `org.codehaus.plexus.util.xml` and `org.codehaus.plexus.util.xml.pull`) have been extracted to a separate [`plexus-xml`](https://github.com/codehaus-plexus/plexus-xml/) 4: if you need them, just use this new artifact.
From 921bfcb1036c444be7b751e2d737418937484676 Mon Sep 17 00:00:00 2001
From: Guillaume Nodet
Date: Mon, 17 Apr 2023 13:23:30 +0200
Subject: [PATCH 02/46] Add deploy job
---
.github/workflows/maven.yml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 81f67f61..39970153 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -23,3 +23,9 @@ jobs:
build:
name: Build it
uses: codehaus-plexus/.github/.github/workflows/maven.yml@v0.0.5
+
+ deploy:
+ name: Deploy
+ needs: build
+ uses: mojohaus/.github/.github/workflows/maven-deploy.yml@master
+ secrets: inherit
From 26ec959e65981b421dee8999afb3126df10746e6 Mon Sep 17 00:00:00 2001
From: Guillaume Nodet
Date: Mon, 17 Apr 2023 13:32:50 +0200
Subject: [PATCH 03/46] Add ossrh snapshot repository
---
pom.xml | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/pom.xml b/pom.xml
index ff239a69..96d31f25 100644
--- a/pom.xml
+++ b/pom.xml
@@ -69,6 +69,19 @@ limitations under the License.
+
+
+ oss.snapshots
+ https://oss.sonatype.org/content/repositories/plexus-snapshots/
+
+ true
+
+
+ false
+
+
+
+
From 21bf1654318ac4814c9f9c97418a0be69cd8d215 Mon Sep 17 00:00:00 2001
From: Guillaume Nodet
Date: Wed, 19 Apr 2023 08:50:43 +0200
Subject: [PATCH 04/46] Use codehaus-plexus workflow
---
.github/workflows/maven.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 39970153..fd924e7d 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -27,5 +27,5 @@ jobs:
deploy:
name: Deploy
needs: build
- uses: mojohaus/.github/.github/workflows/maven-deploy.yml@master
+ uses: codehaus-plexus/.github/.github/workflows/maven-deploy.yml@master
secrets: inherit
From cbca15afd728b8653ed651f16e01c6873fc603af Mon Sep 17 00:00:00 2001
From: Sylwester Lachiewicz
Date: Fri, 12 May 2023 00:21:53 +0200
Subject: [PATCH 05/46] Switch build ci workflow to master branch (#250)
---
.github/workflows/maven.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index fd924e7d..09feae47 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -22,7 +22,7 @@ on: [push, pull_request]
jobs:
build:
name: Build it
- uses: codehaus-plexus/.github/.github/workflows/maven.yml@v0.0.5
+ uses: codehaus-plexus/.github/.github/workflows/maven.yml@master
deploy:
name: Deploy
From 60b1b79e42c81a00ca2507622e0b73370cdb67f5 Mon Sep 17 00:00:00 2001
From: Guillaume Nodet
Date: Tue, 16 May 2023 18:44:05 +0200
Subject: [PATCH 06/46] Remove unused/unmaintained jira export (#247)
---
jira/PLXUTILS-1.json | 1 -
jira/PLXUTILS-10.json | 1 -
jira/PLXUTILS-100.json | 1 -
jira/PLXUTILS-101.json | 1 -
jira/PLXUTILS-102.json | 1 -
jira/PLXUTILS-103.json | 1 -
jira/PLXUTILS-104.json | 1 -
jira/PLXUTILS-105.json | 1 -
jira/PLXUTILS-106.json | 1 -
jira/PLXUTILS-107.json | 1 -
jira/PLXUTILS-108.json | 1 -
jira/PLXUTILS-109.json | 1 -
jira/PLXUTILS-11.json | 1 -
jira/PLXUTILS-110.json | 1 -
jira/PLXUTILS-111.json | 1 -
jira/PLXUTILS-112.json | 1 -
jira/PLXUTILS-113.json | 1 -
jira/PLXUTILS-114.json | 1 -
jira/PLXUTILS-116.json | 1 -
jira/PLXUTILS-117.json | 1 -
jira/PLXUTILS-118.json | 1 -
jira/PLXUTILS-119.json | 1 -
jira/PLXUTILS-12.json | 1 -
jira/PLXUTILS-120.json | 1 -
jira/PLXUTILS-121.json | 1 -
jira/PLXUTILS-122.json | 1 -
jira/PLXUTILS-123.json | 1 -
jira/PLXUTILS-124.json | 1 -
jira/PLXUTILS-125.json | 1 -
jira/PLXUTILS-126.json | 1 -
jira/PLXUTILS-127.json | 1 -
jira/PLXUTILS-128.json | 1 -
jira/PLXUTILS-129.json | 1 -
jira/PLXUTILS-13.json | 1 -
jira/PLXUTILS-130.json | 1 -
jira/PLXUTILS-131.json | 1 -
jira/PLXUTILS-132.json | 1 -
jira/PLXUTILS-133.json | 1 -
jira/PLXUTILS-134.json | 1 -
jira/PLXUTILS-135.json | 1 -
jira/PLXUTILS-136.json | 1 -
jira/PLXUTILS-137.json | 1 -
jira/PLXUTILS-138.json | 1 -
jira/PLXUTILS-139.json | 1 -
jira/PLXUTILS-14.json | 1 -
jira/PLXUTILS-140.json | 1 -
jira/PLXUTILS-141.json | 1 -
jira/PLXUTILS-142.json | 1 -
jira/PLXUTILS-143.json | 1 -
jira/PLXUTILS-144.json | 1 -
jira/PLXUTILS-145.json | 1 -
jira/PLXUTILS-146.json | 1 -
jira/PLXUTILS-147.json | 1 -
jira/PLXUTILS-148.json | 1 -
jira/PLXUTILS-149.json | 1 -
jira/PLXUTILS-15.json | 1 -
jira/PLXUTILS-150.json | 1 -
jira/PLXUTILS-151.json | 1 -
jira/PLXUTILS-152.json | 1 -
jira/PLXUTILS-153.json | 1 -
jira/PLXUTILS-154.json | 1 -
jira/PLXUTILS-155.json | 1 -
jira/PLXUTILS-156.json | 1 -
jira/PLXUTILS-157.json | 1 -
jira/PLXUTILS-158.json | 1 -
jira/PLXUTILS-159.json | 1 -
jira/PLXUTILS-16.json | 1 -
jira/PLXUTILS-160.json | 1 -
jira/PLXUTILS-161.json | 1 -
jira/PLXUTILS-162.json | 1 -
jira/PLXUTILS-163.json | 1 -
jira/PLXUTILS-164.json | 1 -
jira/PLXUTILS-165.json | 1 -
jira/PLXUTILS-166.json | 1 -
jira/PLXUTILS-167.json | 1 -
jira/PLXUTILS-168.json | 1 -
jira/PLXUTILS-169.json | 1 -
jira/PLXUTILS-17.json | 1 -
jira/PLXUTILS-170.json | 1 -
jira/PLXUTILS-171.json | 1 -
jira/PLXUTILS-172.json | 1 -
jira/PLXUTILS-173.json | 1 -
jira/PLXUTILS-18.json | 1 -
jira/PLXUTILS-19.json | 1 -
jira/PLXUTILS-2.json | 1 -
jira/PLXUTILS-20.json | 1 -
jira/PLXUTILS-21.json | 1 -
jira/PLXUTILS-22.json | 1 -
jira/PLXUTILS-23.json | 1 -
jira/PLXUTILS-24.json | 1 -
jira/PLXUTILS-25.json | 1 -
jira/PLXUTILS-26.json | 1 -
jira/PLXUTILS-27.json | 1 -
jira/PLXUTILS-28.json | 1 -
jira/PLXUTILS-29.json | 1 -
jira/PLXUTILS-3.json | 1 -
jira/PLXUTILS-30.json | 1 -
jira/PLXUTILS-31.json | 1 -
jira/PLXUTILS-32.json | 1 -
jira/PLXUTILS-33.json | 1 -
jira/PLXUTILS-34.json | 1 -
jira/PLXUTILS-35.json | 1 -
jira/PLXUTILS-36.json | 1 -
jira/PLXUTILS-37.json | 1 -
jira/PLXUTILS-38.json | 1 -
jira/PLXUTILS-39.json | 1 -
jira/PLXUTILS-4.json | 1 -
jira/PLXUTILS-40.json | 1 -
jira/PLXUTILS-41.json | 1 -
jira/PLXUTILS-42.json | 1 -
jira/PLXUTILS-43.json | 1 -
jira/PLXUTILS-44.json | 1 -
jira/PLXUTILS-45.json | 1 -
jira/PLXUTILS-46.json | 1 -
jira/PLXUTILS-47.json | 1 -
jira/PLXUTILS-48.json | 1 -
jira/PLXUTILS-49.json | 1 -
jira/PLXUTILS-5.json | 1 -
jira/PLXUTILS-50.json | 1 -
jira/PLXUTILS-51.json | 1 -
jira/PLXUTILS-52.json | 1 -
jira/PLXUTILS-53.json | 1 -
jira/PLXUTILS-54.json | 1 -
jira/PLXUTILS-55.json | 1 -
jira/PLXUTILS-56.json | 1 -
jira/PLXUTILS-57.json | 1 -
jira/PLXUTILS-58.json | 1 -
jira/PLXUTILS-59.json | 1 -
jira/PLXUTILS-6.json | 1 -
jira/PLXUTILS-60.json | 1 -
jira/PLXUTILS-61.json | 1 -
jira/PLXUTILS-62.json | 1 -
jira/PLXUTILS-63.json | 1 -
jira/PLXUTILS-64.json | 1 -
jira/PLXUTILS-65.json | 1 -
jira/PLXUTILS-66.json | 1 -
jira/PLXUTILS-67.json | 1 -
jira/PLXUTILS-68.json | 1 -
jira/PLXUTILS-69.json | 1 -
jira/PLXUTILS-7.json | 1 -
jira/PLXUTILS-70.json | 1 -
jira/PLXUTILS-71.json | 1 -
jira/PLXUTILS-72.json | 1 -
jira/PLXUTILS-73.json | 1 -
jira/PLXUTILS-74.json | 1 -
jira/PLXUTILS-75.json | 1 -
jira/PLXUTILS-76.json | 1 -
jira/PLXUTILS-77.json | 1 -
jira/PLXUTILS-78.json | 1 -
jira/PLXUTILS-79.json | 1 -
jira/PLXUTILS-8.json | 1 -
jira/PLXUTILS-80.json | 1 -
jira/PLXUTILS-81.json | 1 -
jira/PLXUTILS-82.json | 1 -
jira/PLXUTILS-83.json | 1 -
jira/PLXUTILS-84.json | 1 -
jira/PLXUTILS-85.json | 1 -
jira/PLXUTILS-86.json | 1 -
jira/PLXUTILS-87.json | 1 -
jira/PLXUTILS-88.json | 1 -
jira/PLXUTILS-89.json | 1 -
jira/PLXUTILS-9.json | 1 -
jira/PLXUTILS-90.json | 1 -
jira/PLXUTILS-91.json | 1 -
jira/PLXUTILS-92.json | 1 -
jira/PLXUTILS-93.json | 1 -
jira/PLXUTILS-94.json | 1 -
jira/PLXUTILS-95.json | 1 -
jira/PLXUTILS-96.json | 1 -
jira/PLXUTILS-97.json | 1 -
jira/PLXUTILS-98.json | 1 -
jira/PLXUTILS-99.json | 1 -
172 files changed, 172 deletions(-)
delete mode 100644 jira/PLXUTILS-1.json
delete mode 100644 jira/PLXUTILS-10.json
delete mode 100644 jira/PLXUTILS-100.json
delete mode 100644 jira/PLXUTILS-101.json
delete mode 100644 jira/PLXUTILS-102.json
delete mode 100644 jira/PLXUTILS-103.json
delete mode 100644 jira/PLXUTILS-104.json
delete mode 100644 jira/PLXUTILS-105.json
delete mode 100644 jira/PLXUTILS-106.json
delete mode 100644 jira/PLXUTILS-107.json
delete mode 100644 jira/PLXUTILS-108.json
delete mode 100644 jira/PLXUTILS-109.json
delete mode 100644 jira/PLXUTILS-11.json
delete mode 100644 jira/PLXUTILS-110.json
delete mode 100644 jira/PLXUTILS-111.json
delete mode 100644 jira/PLXUTILS-112.json
delete mode 100644 jira/PLXUTILS-113.json
delete mode 100644 jira/PLXUTILS-114.json
delete mode 100644 jira/PLXUTILS-116.json
delete mode 100644 jira/PLXUTILS-117.json
delete mode 100644 jira/PLXUTILS-118.json
delete mode 100644 jira/PLXUTILS-119.json
delete mode 100644 jira/PLXUTILS-12.json
delete mode 100644 jira/PLXUTILS-120.json
delete mode 100644 jira/PLXUTILS-121.json
delete mode 100644 jira/PLXUTILS-122.json
delete mode 100644 jira/PLXUTILS-123.json
delete mode 100644 jira/PLXUTILS-124.json
delete mode 100644 jira/PLXUTILS-125.json
delete mode 100644 jira/PLXUTILS-126.json
delete mode 100644 jira/PLXUTILS-127.json
delete mode 100644 jira/PLXUTILS-128.json
delete mode 100644 jira/PLXUTILS-129.json
delete mode 100644 jira/PLXUTILS-13.json
delete mode 100644 jira/PLXUTILS-130.json
delete mode 100644 jira/PLXUTILS-131.json
delete mode 100644 jira/PLXUTILS-132.json
delete mode 100644 jira/PLXUTILS-133.json
delete mode 100644 jira/PLXUTILS-134.json
delete mode 100644 jira/PLXUTILS-135.json
delete mode 100644 jira/PLXUTILS-136.json
delete mode 100644 jira/PLXUTILS-137.json
delete mode 100644 jira/PLXUTILS-138.json
delete mode 100644 jira/PLXUTILS-139.json
delete mode 100644 jira/PLXUTILS-14.json
delete mode 100644 jira/PLXUTILS-140.json
delete mode 100644 jira/PLXUTILS-141.json
delete mode 100644 jira/PLXUTILS-142.json
delete mode 100644 jira/PLXUTILS-143.json
delete mode 100644 jira/PLXUTILS-144.json
delete mode 100644 jira/PLXUTILS-145.json
delete mode 100644 jira/PLXUTILS-146.json
delete mode 100644 jira/PLXUTILS-147.json
delete mode 100644 jira/PLXUTILS-148.json
delete mode 100644 jira/PLXUTILS-149.json
delete mode 100644 jira/PLXUTILS-15.json
delete mode 100644 jira/PLXUTILS-150.json
delete mode 100644 jira/PLXUTILS-151.json
delete mode 100644 jira/PLXUTILS-152.json
delete mode 100644 jira/PLXUTILS-153.json
delete mode 100644 jira/PLXUTILS-154.json
delete mode 100644 jira/PLXUTILS-155.json
delete mode 100644 jira/PLXUTILS-156.json
delete mode 100644 jira/PLXUTILS-157.json
delete mode 100644 jira/PLXUTILS-158.json
delete mode 100644 jira/PLXUTILS-159.json
delete mode 100644 jira/PLXUTILS-16.json
delete mode 100644 jira/PLXUTILS-160.json
delete mode 100644 jira/PLXUTILS-161.json
delete mode 100644 jira/PLXUTILS-162.json
delete mode 100644 jira/PLXUTILS-163.json
delete mode 100644 jira/PLXUTILS-164.json
delete mode 100644 jira/PLXUTILS-165.json
delete mode 100644 jira/PLXUTILS-166.json
delete mode 100644 jira/PLXUTILS-167.json
delete mode 100644 jira/PLXUTILS-168.json
delete mode 100644 jira/PLXUTILS-169.json
delete mode 100644 jira/PLXUTILS-17.json
delete mode 100644 jira/PLXUTILS-170.json
delete mode 100644 jira/PLXUTILS-171.json
delete mode 100644 jira/PLXUTILS-172.json
delete mode 100644 jira/PLXUTILS-173.json
delete mode 100644 jira/PLXUTILS-18.json
delete mode 100644 jira/PLXUTILS-19.json
delete mode 100644 jira/PLXUTILS-2.json
delete mode 100644 jira/PLXUTILS-20.json
delete mode 100644 jira/PLXUTILS-21.json
delete mode 100644 jira/PLXUTILS-22.json
delete mode 100644 jira/PLXUTILS-23.json
delete mode 100644 jira/PLXUTILS-24.json
delete mode 100644 jira/PLXUTILS-25.json
delete mode 100644 jira/PLXUTILS-26.json
delete mode 100644 jira/PLXUTILS-27.json
delete mode 100644 jira/PLXUTILS-28.json
delete mode 100644 jira/PLXUTILS-29.json
delete mode 100644 jira/PLXUTILS-3.json
delete mode 100644 jira/PLXUTILS-30.json
delete mode 100644 jira/PLXUTILS-31.json
delete mode 100644 jira/PLXUTILS-32.json
delete mode 100644 jira/PLXUTILS-33.json
delete mode 100644 jira/PLXUTILS-34.json
delete mode 100644 jira/PLXUTILS-35.json
delete mode 100644 jira/PLXUTILS-36.json
delete mode 100644 jira/PLXUTILS-37.json
delete mode 100644 jira/PLXUTILS-38.json
delete mode 100644 jira/PLXUTILS-39.json
delete mode 100644 jira/PLXUTILS-4.json
delete mode 100644 jira/PLXUTILS-40.json
delete mode 100644 jira/PLXUTILS-41.json
delete mode 100644 jira/PLXUTILS-42.json
delete mode 100644 jira/PLXUTILS-43.json
delete mode 100644 jira/PLXUTILS-44.json
delete mode 100644 jira/PLXUTILS-45.json
delete mode 100644 jira/PLXUTILS-46.json
delete mode 100644 jira/PLXUTILS-47.json
delete mode 100644 jira/PLXUTILS-48.json
delete mode 100644 jira/PLXUTILS-49.json
delete mode 100644 jira/PLXUTILS-5.json
delete mode 100644 jira/PLXUTILS-50.json
delete mode 100644 jira/PLXUTILS-51.json
delete mode 100644 jira/PLXUTILS-52.json
delete mode 100644 jira/PLXUTILS-53.json
delete mode 100644 jira/PLXUTILS-54.json
delete mode 100644 jira/PLXUTILS-55.json
delete mode 100644 jira/PLXUTILS-56.json
delete mode 100644 jira/PLXUTILS-57.json
delete mode 100644 jira/PLXUTILS-58.json
delete mode 100644 jira/PLXUTILS-59.json
delete mode 100644 jira/PLXUTILS-6.json
delete mode 100644 jira/PLXUTILS-60.json
delete mode 100644 jira/PLXUTILS-61.json
delete mode 100644 jira/PLXUTILS-62.json
delete mode 100644 jira/PLXUTILS-63.json
delete mode 100644 jira/PLXUTILS-64.json
delete mode 100644 jira/PLXUTILS-65.json
delete mode 100644 jira/PLXUTILS-66.json
delete mode 100644 jira/PLXUTILS-67.json
delete mode 100644 jira/PLXUTILS-68.json
delete mode 100644 jira/PLXUTILS-69.json
delete mode 100644 jira/PLXUTILS-7.json
delete mode 100644 jira/PLXUTILS-70.json
delete mode 100644 jira/PLXUTILS-71.json
delete mode 100644 jira/PLXUTILS-72.json
delete mode 100644 jira/PLXUTILS-73.json
delete mode 100644 jira/PLXUTILS-74.json
delete mode 100644 jira/PLXUTILS-75.json
delete mode 100644 jira/PLXUTILS-76.json
delete mode 100644 jira/PLXUTILS-77.json
delete mode 100644 jira/PLXUTILS-78.json
delete mode 100644 jira/PLXUTILS-79.json
delete mode 100644 jira/PLXUTILS-8.json
delete mode 100644 jira/PLXUTILS-80.json
delete mode 100644 jira/PLXUTILS-81.json
delete mode 100644 jira/PLXUTILS-82.json
delete mode 100644 jira/PLXUTILS-83.json
delete mode 100644 jira/PLXUTILS-84.json
delete mode 100644 jira/PLXUTILS-85.json
delete mode 100644 jira/PLXUTILS-86.json
delete mode 100644 jira/PLXUTILS-87.json
delete mode 100644 jira/PLXUTILS-88.json
delete mode 100644 jira/PLXUTILS-89.json
delete mode 100644 jira/PLXUTILS-9.json
delete mode 100644 jira/PLXUTILS-90.json
delete mode 100644 jira/PLXUTILS-91.json
delete mode 100644 jira/PLXUTILS-92.json
delete mode 100644 jira/PLXUTILS-93.json
delete mode 100644 jira/PLXUTILS-94.json
delete mode 100644 jira/PLXUTILS-95.json
delete mode 100644 jira/PLXUTILS-96.json
delete mode 100644 jira/PLXUTILS-97.json
delete mode 100644 jira/PLXUTILS-98.json
delete mode 100644 jira/PLXUTILS-99.json
diff --git a/jira/PLXUTILS-1.json b/jira/PLXUTILS-1.json
deleted file mode 100644
index 448ea7b4..00000000
--- a/jira/PLXUTILS-1.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 218f0850..00000000
--- a/jira/PLXUTILS-10.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index a9945d84..00000000
--- a/jira/PLXUTILS-100.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 0654aa2d..00000000
--- a/jira/PLXUTILS-101.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index f06fa106..00000000
--- a/jira/PLXUTILS-102.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 8238adfa..00000000
--- a/jira/PLXUTILS-103.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index e46097b6..00000000
--- a/jira/PLXUTILS-104.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 17e31dd2..00000000
--- a/jira/PLXUTILS-105.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 4330f87b..00000000
--- a/jira/PLXUTILS-106.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 63ca44b1..00000000
--- a/jira/PLXUTILS-107.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index ae206289..00000000
--- a/jira/PLXUTILS-108.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 69c913d9..00000000
--- a/jira/PLXUTILS-109.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 2d91a9b7..00000000
--- a/jira/PLXUTILS-11.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index dec0c785..00000000
--- a/jira/PLXUTILS-110.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index bc0c60bd..00000000
--- a/jira/PLXUTILS-111.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index e4d58a82..00000000
--- a/jira/PLXUTILS-112.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 3d84166a..00000000
--- a/jira/PLXUTILS-113.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index e024bb9b..00000000
--- a/jira/PLXUTILS-114.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index da03b638..00000000
--- a/jira/PLXUTILS-116.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index accecf86..00000000
--- a/jira/PLXUTILS-117.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 9b6d65c3..00000000
--- a/jira/PLXUTILS-118.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 4be817cf..00000000
--- a/jira/PLXUTILS-119.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 430d5be9..00000000
--- a/jira/PLXUTILS-120.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index d093fa12..00000000
--- a/jira/PLXUTILS-121.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 70b5f4c0..00000000
--- a/jira/PLXUTILS-122.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 8d9abfae..00000000
--- a/jira/PLXUTILS-123.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 647a3cd6..00000000
--- a/jira/PLXUTILS-124.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index e30ff475..00000000
--- a/jira/PLXUTILS-125.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 5e974d83..00000000
--- a/jira/PLXUTILS-126.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 64a41bd0..00000000
--- a/jira/PLXUTILS-127.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index e157331d..00000000
--- a/jira/PLXUTILS-128.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 4a20c97e..00000000
--- a/jira/PLXUTILS-129.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 4990eb1f..00000000
--- a/jira/PLXUTILS-13.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index bd23415a..00000000
--- a/jira/PLXUTILS-130.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index c4a5c486..00000000
--- a/jira/PLXUTILS-131.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index ca54dd62..00000000
--- a/jira/PLXUTILS-132.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index bd228ea2..00000000
--- a/jira/PLXUTILS-133.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index fb65df21..00000000
--- a/jira/PLXUTILS-134.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index d9ba44bc..00000000
--- a/jira/PLXUTILS-135.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index fed22b1c..00000000
--- a/jira/PLXUTILS-136.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index add540e9..00000000
--- a/jira/PLXUTILS-137.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 86f6cef4..00000000
--- a/jira/PLXUTILS-138.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index bf39eb84..00000000
--- a/jira/PLXUTILS-139.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 32577215..00000000
--- a/jira/PLXUTILS-14.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index e7b3f417..00000000
--- a/jira/PLXUTILS-140.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 3d686417..00000000
--- a/jira/PLXUTILS-141.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 579462a2..00000000
--- a/jira/PLXUTILS-142.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 4753e97b..00000000
--- a/jira/PLXUTILS-143.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 4915eaba..00000000
--- a/jira/PLXUTILS-144.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 4a6880ae..00000000
--- a/jira/PLXUTILS-145.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 5fb113ac..00000000
--- a/jira/PLXUTILS-146.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 1bc376ee..00000000
--- a/jira/PLXUTILS-147.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index abbf888f..00000000
--- a/jira/PLXUTILS-148.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 86ff2fd3..00000000
--- a/jira/PLXUTILS-149.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 1c726246..00000000
--- a/jira/PLXUTILS-15.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index b69730af..00000000
--- a/jira/PLXUTILS-150.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 1806cd19..00000000
--- a/jira/PLXUTILS-151.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 5e01e5c7..00000000
--- a/jira/PLXUTILS-152.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 3412f224..00000000
--- a/jira/PLXUTILS-153.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 46266ea6..00000000
--- a/jira/PLXUTILS-154.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index f3d18615..00000000
--- a/jira/PLXUTILS-155.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index cdc789d8..00000000
--- a/jira/PLXUTILS-156.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 777eed0b..00000000
--- a/jira/PLXUTILS-157.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 9bde90a2..00000000
--- a/jira/PLXUTILS-158.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 92c23462..00000000
--- a/jira/PLXUTILS-159.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 5f105b47..00000000
--- a/jira/PLXUTILS-16.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 8dddd92b..00000000
--- a/jira/PLXUTILS-160.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 3e8173e0..00000000
--- a/jira/PLXUTILS-161.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 1cefc8d7..00000000
--- a/jira/PLXUTILS-162.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 4d2c2328..00000000
--- a/jira/PLXUTILS-163.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index d08db1a7..00000000
--- a/jira/PLXUTILS-164.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 4dfcf704..00000000
--- a/jira/PLXUTILS-165.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index b23dc4b9..00000000
--- a/jira/PLXUTILS-166.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 656fac2b..00000000
--- a/jira/PLXUTILS-167.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 5cf0bd5c..00000000
--- a/jira/PLXUTILS-168.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 8c27c142..00000000
--- a/jira/PLXUTILS-169.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index be73e450..00000000
--- a/jira/PLXUTILS-17.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index cd6f3c69..00000000
--- a/jira/PLXUTILS-170.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 63238c88..00000000
--- a/jira/PLXUTILS-171.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 32a13cb5..00000000
--- a/jira/PLXUTILS-172.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 741a92dc..00000000
--- a/jira/PLXUTILS-173.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index a4741616..00000000
--- a/jira/PLXUTILS-18.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 697959c1..00000000
--- a/jira/PLXUTILS-19.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 8ee99e2a..00000000
--- a/jira/PLXUTILS-2.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 857d9868..00000000
--- a/jira/PLXUTILS-20.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index aeb23113..00000000
--- a/jira/PLXUTILS-21.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 990383d4..00000000
--- a/jira/PLXUTILS-22.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 4c3d32c8..00000000
--- a/jira/PLXUTILS-23.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index c2b6af19..00000000
--- a/jira/PLXUTILS-24.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 93a1b86c..00000000
--- a/jira/PLXUTILS-25.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index eab92e9a..00000000
--- a/jira/PLXUTILS-26.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 32f61c70..00000000
--- a/jira/PLXUTILS-27.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 7d02f906..00000000
--- a/jira/PLXUTILS-28.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 7e16db35..00000000
--- a/jira/PLXUTILS-29.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index d32e419d..00000000
--- a/jira/PLXUTILS-3.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 0e7070c9..00000000
--- a/jira/PLXUTILS-30.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 9e9277af..00000000
--- a/jira/PLXUTILS-31.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 73b89955..00000000
--- a/jira/PLXUTILS-32.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 1db8af74..00000000
--- a/jira/PLXUTILS-33.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index e888f8f0..00000000
--- a/jira/PLXUTILS-34.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 5c3fde13..00000000
--- a/jira/PLXUTILS-35.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 192d18ea..00000000
--- a/jira/PLXUTILS-36.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 6f734d9e..00000000
--- a/jira/PLXUTILS-37.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 44a829ee..00000000
--- a/jira/PLXUTILS-38.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index bc7a9611..00000000
--- a/jira/PLXUTILS-39.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 26848a60..00000000
--- a/jira/PLXUTILS-4.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 0152e1de..00000000
--- a/jira/PLXUTILS-40.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index b608bf30..00000000
--- a/jira/PLXUTILS-41.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index c7cb2049..00000000
--- a/jira/PLXUTILS-42.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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 An build tool like maven is very nice.\r\n
\r\n{code} \r\n\r\nand in xml, we should have:\r\n{code:xml}\r\n\r\n An build tool like maven is very nice.\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
deleted file mode 100644
index 10b3835c..00000000
--- a/jira/PLXUTILS-43.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 4c7ac46e..00000000
--- a/jira/PLXUTILS-44.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index fb7679f0..00000000
--- a/jira/PLXUTILS-45.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index c8d5cd7a..00000000
--- a/jira/PLXUTILS-46.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index b3d9887c..00000000
--- a/jira/PLXUTILS-47.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index c7285f2a..00000000
--- a/jira/PLXUTILS-48.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index e3538d2c..00000000
--- a/jira/PLXUTILS-49.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index b134bf8c..00000000
--- a/jira/PLXUTILS-5.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index f653f65f..00000000
--- a/jira/PLXUTILS-50.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index e4f319a6..00000000
--- a/jira/PLXUTILS-51.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 901a9e4c..00000000
--- a/jira/PLXUTILS-52.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index b42e00f1..00000000
--- a/jira/PLXUTILS-53.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index b256142f..00000000
--- a/jira/PLXUTILS-54.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 80097656..00000000
--- a/jira/PLXUTILS-55.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 12628c11..00000000
--- a/jira/PLXUTILS-56.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 104171e0..00000000
--- a/jira/PLXUTILS-57.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index eb10ddd4..00000000
--- a/jira/PLXUTILS-58.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 426d64ac..00000000
--- a/jira/PLXUTILS-59.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index efc04158..00000000
--- a/jira/PLXUTILS-6.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 46ae121b..00000000
--- a/jira/PLXUTILS-60.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 31862183..00000000
--- a/jira/PLXUTILS-61.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 3ea3bcae..00000000
--- a/jira/PLXUTILS-62.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 35a30ff0..00000000
--- a/jira/PLXUTILS-63.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 58e7e43b..00000000
--- a/jira/PLXUTILS-64.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 16fa2198..00000000
--- a/jira/PLXUTILS-65.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index bb25e7b8..00000000
--- a/jira/PLXUTILS-66.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 9d52e8f8..00000000
--- a/jira/PLXUTILS-67.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 85d81691..00000000
--- a/jira/PLXUTILS-68.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 389a5f5f..00000000
--- a/jira/PLXUTILS-69.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 3d1a9ba4..00000000
--- a/jira/PLXUTILS-7.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index f92c9a0c..00000000
--- a/jira/PLXUTILS-70.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 858ed943..00000000
--- a/jira/PLXUTILS-71.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 23b433fb..00000000
--- a/jira/PLXUTILS-72.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index aaef05a5..00000000
--- a/jira/PLXUTILS-73.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index d665669e..00000000
--- a/jira/PLXUTILS-74.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index a50b19d6..00000000
--- a/jira/PLXUTILS-75.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index f66a816f..00000000
--- a/jira/PLXUTILS-76.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 5257d3a3..00000000
--- a/jira/PLXUTILS-77.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index a16eaee7..00000000
--- a/jira/PLXUTILS-78.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 5a625091..00000000
--- a/jira/PLXUTILS-79.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 8875a346..00000000
--- a/jira/PLXUTILS-8.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 016dc3c5..00000000
--- a/jira/PLXUTILS-80.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index ee6a78b3..00000000
--- a/jira/PLXUTILS-81.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index f4481f30..00000000
--- a/jira/PLXUTILS-82.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 01d7fdc5..00000000
--- a/jira/PLXUTILS-83.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index e5a72536..00000000
--- a/jira/PLXUTILS-84.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 074ade83..00000000
--- a/jira/PLXUTILS-85.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 017a38f2..00000000
--- a/jira/PLXUTILS-86.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 48456fa3..00000000
--- a/jira/PLXUTILS-87.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index fd1639e3..00000000
--- a/jira/PLXUTILS-88.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 2ee1454d..00000000
--- a/jira/PLXUTILS-89.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 15c7687a..00000000
--- a/jira/PLXUTILS-9.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index c13bdea7..00000000
--- a/jira/PLXUTILS-90.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index a7764c8e..00000000
--- a/jira/PLXUTILS-91.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 2105539a..00000000
--- a/jira/PLXUTILS-92.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 83de36e6..00000000
--- a/jira/PLXUTILS-93.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 54bee20b..00000000
--- a/jira/PLXUTILS-94.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index edef18ad..00000000
--- a/jira/PLXUTILS-95.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 1aaf5aac..00000000
--- a/jira/PLXUTILS-96.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 1d7059bb..00000000
--- a/jira/PLXUTILS-97.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 551f0ae0..00000000
--- a/jira/PLXUTILS-98.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
deleted file mode 100644
index 393ae43c..00000000
--- a/jira/PLXUTILS-99.json
+++ /dev/null
@@ -1 +0,0 @@
-{"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
From b4ee91f9ff621fbf037a0ef169cacda54eb8c4cb Mon Sep 17 00:00:00 2001
From: Guillaume Nodet
Date: Wed, 17 May 2023 07:58:23 +0200
Subject: [PATCH 07/46] Switch to junit 5 (#245)
---
pom.xml | 6 +-
.../plexus/util/CollectionUtilsTest.java | 14 +-
.../plexus/util/DirectoryScannerTest.java | 48 ++---
.../plexus/util/DirectoryWalkerTest.java | 22 +-
.../plexus/util/FileBasedTestCase.java | 90 +++-----
.../codehaus/plexus/util/FileUtilsTest.java | 194 +++++++++---------
.../org/codehaus/plexus/util/IOUtilTest.java | 91 +++-----
.../util/InterpolationFilterReaderTest.java | 6 +-
.../LineOrientedInterpolatingReaderTest.java | 18 +-
.../plexus/util/MatchPatternTest.java | 8 +-
.../plexus/util/MatchPatternsTest.java | 6 +-
.../java/org/codehaus/plexus/util/OsTest.java | 10 +-
.../codehaus/plexus/util/PathToolTest.java | 8 +-
.../org/codehaus/plexus/util/PerfTest.java | 2 +-
.../plexus/util/ReflectionUtilsTest.java | 6 +-
.../plexus/util/SelectorUtilsTest.java | 10 +-
.../plexus/util/StringInputStreamTest.java | 37 ----
.../codehaus/plexus/util/StringUtilsTest.java | 34 +--
.../codehaus/plexus/util/SweeperPoolTest.java | 46 ++---
.../plexus/util/cli/CommandLineUtilsTest.java | 10 +-
.../plexus/util/cli/CommandlineTest.java | 31 ++-
.../plexus/util/cli/DefaultConsumerTest.java | 2 +-
.../util/cli/EnhancedStringTokenizerTest.java | 75 +++----
.../plexus/util/cli/StreamPumperTest.java | 14 +-
.../util/cli/shell/BourneShellTest.java | 10 +-
.../util/dag/CycleDetectedExceptionTest.java | 6 +-
.../plexus/util/dag/CycleDetectorTest.java | 60 +++---
.../org/codehaus/plexus/util/dag/DAGTest.java | 8 +-
.../util/dag/TopologicalSorterTest.java | 12 +-
.../codehaus/plexus/util/dag/VertexTest.java | 4 +-
.../ReflectionValueExtractorTest.java | 22 +-
.../util/io/CachingOutputStreamTest.java | 16 +-
.../plexus/util/io/CachingWriterTest.java | 14 +-
.../plexus/util/reflection/ReflectorTest.java | 10 +-
34 files changed, 428 insertions(+), 522 deletions(-)
delete mode 100644 src/test/java/org/codehaus/plexus/util/StringInputStreamTest.java
diff --git a/pom.xml b/pom.xml
index 96d31f25..9efd9fa2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -62,9 +62,9 @@ limitations under the License.
true
- junit
- junit
- 4.13.2
+ org.junit.jupiter
+ junit-jupiter
+ 5.9.2
test
diff --git a/src/test/java/org/codehaus/plexus/util/CollectionUtilsTest.java b/src/test/java/org/codehaus/plexus/util/CollectionUtilsTest.java
index 70add088..edd76231 100644
--- a/src/test/java/org/codehaus/plexus/util/CollectionUtilsTest.java
+++ b/src/test/java/org/codehaus/plexus/util/CollectionUtilsTest.java
@@ -16,9 +16,9 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
import java.util.ArrayList;
import java.util.HashMap;
@@ -26,7 +26,7 @@
import java.util.Map;
import java.util.Properties;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/**
* CollectionUtilsTest class.
@@ -135,7 +135,7 @@ public void testMergeMapArray()
/**
* testMavenPropertiesLoading.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testMavenPropertiesLoading()
{
// Mimic MavenSession properties loading. Properties listed
@@ -195,7 +195,7 @@ public void testMavenPropertiesLoading()
/**
* testIteratorToListWithAPopulatedList.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testIteratorToListWithAPopulatedList()
{
List original = new ArrayList();
@@ -218,7 +218,7 @@ public void testIteratorToListWithAPopulatedList()
/**
* testIteratorToListWithAEmptyList.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testIteratorToListWithAEmptyList()
{
List original = new ArrayList();
diff --git a/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java b/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java
index 86c6dd20..3901e594 100644
--- a/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java
+++ b/src/test/java/org/codehaus/plexus/util/DirectoryScannerTest.java
@@ -16,11 +16,11 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
import java.io.File;
import java.io.IOException;
@@ -35,10 +35,8 @@
import java.util.List;
import java.util.Set;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TestName;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
/**
* Base class for testcases doing tests with files.
@@ -50,15 +48,12 @@
public class DirectoryScannerTest
extends FileBasedTestCase
{
- @Rule
- public TestName name = new TestName();
-
private static String testDir = getTestDirectory().getPath();
/**
* setUp.
*/
- @Before
+ @BeforeEach
public void setUp()
{
try
@@ -190,7 +185,7 @@ private boolean checkTestFilesSymlinks()
catch ( IOException e )
{
System.err.println( String.format( "The unit test '%s.%s' will be skipped, reason: %s",
- this.getClass().getSimpleName(), name.getMethodName(),
+ this.getClass().getSimpleName(), getTestMethodName(),
e.getMessage() ) );
System.out.println( String.format( "This test requires symlinks files in '%s' directory.",
symlinksDirectory.getPath() ) );
@@ -217,11 +212,10 @@ public void testGeneral()
List fileNames = FileUtils.getFiles( new File( testDir ), includes, excludes, false );
- assertEquals( "Wrong number of results.", 3, fileNames.size() );
- assertTrue( "3 not found.", fileNames.contains( new File( "scanner3.dat" ) ) );
- assertTrue( "4 not found.", fileNames.contains( new File( "scanner4.dat" ) ) );
- assertTrue( "5 not found.", fileNames.contains( new File( "scanner5.dat" ) ) );
-
+ assertEquals( 3, fileNames.size(), "Wrong number of results." );
+ assertTrue( fileNames.contains( new File( "scanner3.dat" ) ), "3 not found." );
+ assertTrue( fileNames.contains( new File( "scanner4.dat" ) ), "4 not found." );
+ assertTrue( fileNames.contains( new File( "scanner5.dat" ) ), "5 not found." );
}
/**
@@ -241,10 +235,10 @@ public void testIncludesExcludesWithWhiteSpaces()
List fileNames = FileUtils.getFiles( new File( testDir ), includes, excludes, false );
- assertEquals( "Wrong number of results.", 3, fileNames.size() );
- assertTrue( "3 not found.", fileNames.contains( new File( "scanner3.dat" ) ) );
- assertTrue( "4 not found.", fileNames.contains( new File( "scanner4.dat" ) ) );
- assertTrue( "5 not found.", fileNames.contains( new File( "scanner5.dat" ) ) );
+ assertEquals( 3, fileNames.size(), "Wrong number of results." );
+ assertTrue( fileNames.contains( new File( "scanner3.dat" ) ), "3 not found." );
+ assertTrue( fileNames.contains( new File( "scanner4.dat" ) ), "4 not found." );
+ assertTrue( fileNames.contains( new File( "scanner5.dat" ) ), "5 not found." );
}
/**
@@ -347,7 +341,7 @@ public void testDirectoriesWithHyphens()
ds.scan();
String[] files = ds.getIncludedFiles();
- assertEquals( "Wrong number of results.", 3, files.length );
+ assertEquals( 3, files.length, "Wrong number of results." );
}
/**
@@ -395,7 +389,7 @@ public void testAntExcludesOverrideIncludes()
*
* @throws java.io.IOException if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testAntExcludesOverrideIncludesWithExplicitAntPrefix()
throws IOException
{
@@ -436,7 +430,7 @@ public void testAntExcludesOverrideIncludesWithExplicitAntPrefix()
*
* @throws java.io.IOException if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testRegexIncludeWithExcludedPrefixDirs()
throws IOException
{
@@ -472,7 +466,7 @@ public void testRegexIncludeWithExcludedPrefixDirs()
*
* @throws java.io.IOException if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testRegexExcludeWithNegativeLookahead()
throws IOException
{
diff --git a/src/test/java/org/codehaus/plexus/util/DirectoryWalkerTest.java b/src/test/java/org/codehaus/plexus/util/DirectoryWalkerTest.java
index 757ce718..da925818 100644
--- a/src/test/java/org/codehaus/plexus/util/DirectoryWalkerTest.java
+++ b/src/test/java/org/codehaus/plexus/util/DirectoryWalkerTest.java
@@ -16,13 +16,13 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import org.junit.jupiter.api.Test;
-import java.io.File;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
-import org.junit.Test;
+import java.io.File;
/**
* DirectoryWalkerTest class.
@@ -50,11 +50,11 @@ public void testDirectoryWalk()
walker.scan();
- assertEquals( "Walk Collector / Starting Count", 1, collector.startCount );
- assertNotNull( "Walk Collector / Starting Dir", collector.startingDir );
- assertEquals( "Walk Collector / Finish Count", 1, collector.finishCount );
- assertEquals( "Walk Collector / Steps Count", 4, collector.steps.size() );
- assertTrue( "Walk Collector / percentage low >= 0", collector.percentageLow >= 0 );
- assertTrue( "Walk Collector / percentage high <= 100", collector.percentageHigh <= 100 );
+ assertEquals( 1, collector.startCount, "Walk Collector / Starting Count" );
+ assertNotNull( collector.startingDir, "Walk Collector / Starting Dir" );
+ assertEquals( 1, collector.finishCount, "Walk Collector / Finish Count" );
+ assertEquals( 4, collector.steps.size(), "Walk Collector / Steps Count" );
+ assertTrue( collector.percentageLow >= 0, "Walk Collector / percentage low >= 0" );
+ assertTrue( collector.percentageHigh <= 100, "Walk Collector / percentage high <= 100" );
}
}
diff --git a/src/test/java/org/codehaus/plexus/util/FileBasedTestCase.java b/src/test/java/org/codehaus/plexus/util/FileBasedTestCase.java
index 3e111b4e..ac592e66 100644
--- a/src/test/java/org/codehaus/plexus/util/FileBasedTestCase.java
+++ b/src/test/java/org/codehaus/plexus/util/FileBasedTestCase.java
@@ -16,7 +16,13 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertTrue;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.TestInfo;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
@@ -27,11 +33,10 @@
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.Writer;
+import java.lang.reflect.Method;
import java.nio.file.Files;
import java.util.Arrays;
-import junit.framework.AssertionFailedError;
-
/**
* Base class for testcases doing tests with files.
*
@@ -43,6 +48,8 @@ public abstract class FileBasedTestCase
{
private static File testDir;
+ private TestInfo testInfo;
+
/**
* getTestDirectory.
*
@@ -186,7 +193,7 @@ protected File newFile( String filename )
protected void checkFile( final File file, final File referenceFile )
throws Exception
{
- assertTrue( "Check existence of output file", file.exists() );
+ assertTrue( file.exists(), "Check existence of output file" );
assertEqualContent( referenceFile, file );
}
@@ -205,7 +212,7 @@ protected void checkWrite( final OutputStream output )
}
catch ( final Throwable t )
{
- throw new AssertionFailedError( "The copy() method closed the stream " + "when it shouldn't have. "
+ fail( "The copy() method closed the stream " + "when it shouldn't have. "
+ t.getMessage() );
}
}
@@ -225,7 +232,7 @@ protected void checkWrite( final Writer output )
}
catch ( final Throwable t )
{
- throw new AssertionFailedError( "The copy() method closed the stream " + "when it shouldn't have. "
+ fail( "The copy() method closed the stream " + "when it shouldn't have. "
+ t.getMessage() );
}
}
@@ -241,7 +248,7 @@ protected void deleteFile( final File file )
{
if ( file.exists() )
{
- assertTrue( "Couldn't delete file: " + file, file.delete() );
+ assertTrue( file.delete(), "Couldn't delete file: " + file );
}
}
@@ -258,37 +265,10 @@ private void assertEqualContent( final File f0, final File f1 )
* + " and " + f1 + " have differing file sizes (" + f0.length() + " vs " + f1.length() + ")", ( f0.length() ==
* f1.length() ) );
*/
- final InputStream is0 = Files.newInputStream( f0.toPath() );
- try
- {
- final InputStream is1 = Files.newInputStream( f1.toPath() );
- try
- {
- final byte[] buf0 = new byte[1024];
- final byte[] buf1 = new byte[1024];
- int n0 = 0;
- int n1 = 0;
-
- while ( -1 != n0 )
- {
- n0 = is0.read( buf0 );
- n1 = is1.read( buf1 );
- assertTrue( "The files " + f0 + " and " + f1 + " have differing number of bytes available (" + n0
- + " vs " + n1 + ")", ( n0 == n1 ) );
-
- assertTrue( "The files " + f0 + " and " + f1 + " have different content",
- Arrays.equals( buf0, buf1 ) );
- }
- }
- finally
- {
- is1.close();
- }
- }
- finally
- {
- is0.close();
- }
+ byte[] buf0 = Files.readAllBytes( f0.toPath() );
+ byte[] buf1 = Files.readAllBytes( f0.toPath() );
+ assertArrayEquals( buf0, buf1,
+ "The files " + f0 + " and " + f1 + " have different content" );
}
/**
@@ -301,20 +281,8 @@ private void assertEqualContent( final File f0, final File f1 )
protected void assertEqualContent( final byte[] b0, final File file )
throws IOException
{
- final InputStream is = Files.newInputStream( file.toPath() );
- try
- {
- byte[] b1 = new byte[b0.length];
- int numRead = is.read( b1 );
- assertTrue( "Different number of bytes", numRead == b0.length && is.available() == 0 );
- for ( int i = 0; i < numRead; assertTrue( "Byte " + i + " differs (" + b0[i] + " != " + b1[i] + ")",
- b0[i] == b1[i] ), i++ )
- ;
- }
- finally
- {
- is.close();
- }
+ byte[] b1 = Files.readAllBytes( file.toPath() );
+ assertArrayEquals(b0, b1, "Content differs");
}
/**
@@ -324,9 +292,9 @@ protected void assertEqualContent( final byte[] b0, final File file )
*/
protected void assertIsDirectory( File file )
{
- assertTrue( "The File doesn't exists: " + file.getAbsolutePath(), file.exists() );
+ assertTrue( file.exists(), "The File doesn't exists: " + file.getAbsolutePath() );
- assertTrue( "The File isn't a directory: " + file.getAbsolutePath(), file.isDirectory() );
+ assertTrue( file.isDirectory(), "The File isn't a directory: " + file.getAbsolutePath() );
}
/**
@@ -336,8 +304,18 @@ protected void assertIsDirectory( File file )
*/
protected void assertIsFile( File file )
{
- assertTrue( "The File doesn't exists: " + file.getAbsolutePath(), file.exists() );
+ assertTrue( file.exists(), "The File doesn't exists: " + file.getAbsolutePath() );
+
+ assertTrue( file.isFile(), "The File isn't a file: " + file.getAbsolutePath() );
+ }
- assertTrue( "The File isn't a file: " + file.getAbsolutePath(), file.isFile() );
+ @BeforeEach
+ void init(TestInfo testInfo) {
+ this.testInfo = testInfo;
}
+
+ protected String getTestMethodName() {
+ return testInfo.getTestMethod().map(Method::getName).orElse(null);
+ }
+
}
diff --git a/src/test/java/org/codehaus/plexus/util/FileUtilsTest.java b/src/test/java/org/codehaus/plexus/util/FileUtilsTest.java
index 4d63957c..5c106088 100644
--- a/src/test/java/org/codehaus/plexus/util/FileUtilsTest.java
+++ b/src/test/java/org/codehaus/plexus/util/FileUtilsTest.java
@@ -16,12 +16,12 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
import java.io.ByteArrayInputStream;
import java.io.File;
@@ -36,10 +36,8 @@
import java.nio.file.Paths;
import java.util.Properties;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TestName;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
/**
* This is used to test FileUtils for correctness.
@@ -53,9 +51,6 @@
public final class FileUtilsTest
extends FileBasedTestCase
{
- @Rule
- public TestName name = new TestName();
-
// Test data
/**
@@ -91,7 +86,7 @@ public FileUtilsTest()
*
* @throws java.lang.Exception if any.
*/
- @Before
+ @BeforeEach
public void setUp()
throws Exception
{
@@ -187,8 +182,9 @@ public void testToURLs()
URL[] urls = FileUtils.toURLs( files );
- assertEquals( "The length of the generated URL's is not equals to the length of files. " + "Was " + files.length
- + ", expected " + urls.length, files.length, urls.length );
+ assertEquals( files.length, urls.length,
+ "The length of the generated URL's is not equals to the length of files. " + "Was " + files.length
+ + ", expected " + urls.length );
for ( int i = 0; i < urls.length; i++ )
{
@@ -258,7 +254,7 @@ public void testContentEquals()
throws Exception
{
// Non-existent files
- final File file = new File( getTestDirectory(), name.getMethodName() );
+ final File file = new File( getTestDirectory(), getTestMethodName() );
assertTrue( FileUtils.contentEquals( file, file ) );
// TODO Should comparing 2 directories throw an Exception instead of returning false?
@@ -266,15 +262,15 @@ public void testContentEquals()
assertTrue( !FileUtils.contentEquals( getTestDirectory(), getTestDirectory() ) );
// Different files
- final File objFile1 = new File( getTestDirectory(), name.getMethodName() + ".object" );
+ final File objFile1 = new File( getTestDirectory(), getTestMethodName() + ".object" );
objFile1.deleteOnExit();
FileUtils.copyURLToFile( getClass().getResource( "/java/lang/Object.class" ), objFile1 );
- final File objFile2 = new File( getTestDirectory(), name.getMethodName() + ".collection" );
+ final File objFile2 = new File( getTestDirectory(), getTestMethodName() + ".collection" );
objFile2.deleteOnExit();
FileUtils.copyURLToFile( getClass().getResource( "/java/util/Collection.class" ), objFile2 );
- assertTrue( "Files should not be equal.", !FileUtils.contentEquals( objFile1, objFile2 ) );
+ assertTrue( !FileUtils.contentEquals( objFile1, objFile2 ), "Files should not be equal." );
// Equal files
file.createNewFile();
@@ -290,8 +286,8 @@ public void testContentEquals()
public void testRemovePath()
{
final String fileName =
- FileUtils.removePath( new File( getTestDirectory(), name.getMethodName() ).getAbsolutePath() );
- assertEquals( name.getMethodName(), fileName );
+ FileUtils.removePath( new File( getTestDirectory(), getTestMethodName() ).getAbsolutePath() );
+ assertEquals( getTestMethodName(), fileName );
}
// getPath
@@ -303,7 +299,7 @@ public void testRemovePath()
public void testGetPath()
{
final String fileName =
- FileUtils.getPath( new File( getTestDirectory(), name.getMethodName() ).getAbsolutePath() );
+ FileUtils.getPath( new File( getTestDirectory(), getTestMethodName() ).getAbsolutePath() );
assertEquals( getTestDirectory().getAbsolutePath(), fileName );
}
@@ -319,7 +315,7 @@ public void testCopyURLToFile()
throws Exception
{
// Creates file
- final File file = new File( getTestDirectory(), name.getMethodName() );
+ final File file = new File( getTestDirectory(), getTestMethodName() );
file.deleteOnExit();
// Loads resource
@@ -330,8 +326,8 @@ public void testCopyURLToFile()
final InputStream fis = Files.newInputStream( file.toPath() );
try
{
- assertTrue( "Content is not equal.",
- IOUtil.contentEquals( getClass().getResourceAsStream( resourceName ), fis ) );
+ assertTrue( IOUtil.contentEquals( getClass().getResourceAsStream( resourceName ), fis ),
+ "Content is not equal.");
}
finally
{
@@ -370,10 +366,10 @@ public void testForceMkdir()
FileUtils.forceMkdir( getTestDirectory() );
// Creates test file
- final File testFile = new File( getTestDirectory(), name.getMethodName() );
+ final File testFile = new File( getTestDirectory(), getTestMethodName() );
testFile.deleteOnExit();
testFile.createNewFile();
- assertTrue( "Test file does not exist.", testFile.exists() );
+ assertTrue( testFile.exists(), "Test file does not exist." );
// Tests with existing file
try
@@ -389,7 +385,7 @@ public void testForceMkdir()
// Tests with non-existent directory
FileUtils.forceMkdir( testFile );
- assertTrue( "Directory was not created.", testFile.exists() );
+ assertTrue( testFile.exists(), "Directory was not created." );
if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
{
@@ -418,7 +414,7 @@ public void testForceMkdir()
public void testSizeOfDirectory()
throws Exception
{
- final File file = new File( getTestDirectory(), name.getMethodName() );
+ final File file = new File( getTestDirectory(), getTestMethodName() );
// Non-existent file
try
@@ -448,7 +444,7 @@ public void testSizeOfDirectory()
file.delete();
file.mkdir();
- assertEquals( "Unexpected directory size", TEST_DIRECTORY_SIZE, FileUtils.sizeOfDirectory( file ) );
+ assertEquals( TEST_DIRECTORY_SIZE, FileUtils.sizeOfDirectory( file ), "Unexpected directory size" );
}
// isFileNewer
@@ -474,8 +470,8 @@ public void testCopyFile1()
{
final File destination = new File( getTestDirectory(), "copy1.txt" );
FileUtils.copyFile( testFile1, destination );
- assertTrue( "Check Exist", destination.exists() );
- assertTrue( "Check Full copy", destination.length() == testFile1Size );
+ assertTrue( destination.exists(), "Check Exist" );
+ assertTrue( destination.length() == testFile1Size, "Check Full copy" );
}
/**
@@ -489,8 +485,8 @@ public void testCopyFile2()
{
final File destination = new File( getTestDirectory(), "copy2.txt" );
FileUtils.copyFile( testFile1, destination );
- assertTrue( "Check Exist", destination.exists() );
- assertTrue( "Check Full copy", destination.length() == testFile2Size );
+ assertTrue( destination.exists(), "Check Exist" );
+ assertTrue( destination.length() == testFile2Size, "Check Full copy" );
}
/**
@@ -509,8 +505,8 @@ public void testCopyFile3()
}
final File destination = new File( destDirectory, "copy2.txt" );
FileUtils.copyFile( testFile1, destination );
- assertTrue( "Check Exist", destination.exists() );
- assertTrue( "Check Full copy", destination.length() == testFile2Size );
+ assertTrue( destination.exists(), "Check Exist" );
+ assertTrue( destination.length() == testFile2Size, "Check Full copy" );
}
// linkFile
@@ -525,9 +521,9 @@ public void testLinkFile1()
{
final File destination = new File( getTestDirectory(), "link1.txt" );
FileUtils.linkFile( testFile1, destination );
- assertTrue( "Check Exist", destination.exists() );
- assertTrue( "Check File length", destination.length() == testFile1Size );
- assertTrue( "Check is link", Files.isSymbolicLink(destination.toPath()));
+ assertTrue( destination.exists(), "Check Exist" );
+ assertTrue( destination.length() == testFile1Size, "Check File length" );
+ assertTrue( Files.isSymbolicLink(destination.toPath()), "Check is link" );
}
/**
@@ -541,9 +537,9 @@ public void testLinkFile2()
{
final File destination = new File( getTestDirectory(), "link2.txt" );
FileUtils.linkFile( testFile1, destination );
- assertTrue( "Check Exist", destination.exists() );
- assertTrue( "Check File length", destination.length() == testFile2Size );
- assertTrue( "Check is link", Files.isSymbolicLink(destination.toPath()));
+ assertTrue( destination.exists(), "Check Exist" );
+ assertTrue( destination.length() == testFile2Size, "Check File length" );
+ assertTrue( Files.isSymbolicLink(destination.toPath()), "Check is link" );
}
/**
@@ -562,9 +558,9 @@ public void testLinkFile3()
}
final File destination = new File( destDirectory, "link2.txt" );
FileUtils.linkFile( testFile1, destination );
- assertTrue( "Check Exist", destination.exists() );
- assertTrue( "Check File length", destination.length() == testFile2Size );
- assertTrue( "Check is link", Files.isSymbolicLink(destination.toPath()));
+ assertTrue( destination.exists(), "Check Exist" );
+ assertTrue( destination.length() == testFile2Size, "Check File length" );
+ assertTrue( Files.isSymbolicLink(destination.toPath()), "Check is link" );
}
// copyFileIfModified
@@ -593,8 +589,8 @@ public void testCopyIfModifiedWhenSourceIsNewer()
source.setLastModified( System.currentTimeMillis() );
// Copy will occur when source is newer
- assertTrue( "Failed copy. Target file should have been updated.",
- FileUtils.copyFileIfModified( source, destination ) );
+ assertTrue( FileUtils.copyFileIfModified( source, destination ),
+ "Failed copy. Target file should have been updated." );
}
/**
@@ -620,7 +616,8 @@ public void testCopyIfModifiedWhenSourceIsOlder()
FileUtils.copyFile( testFile1, destination );
// Copy will occur when destination is newer
- assertFalse( "Source file should not have been copied.", FileUtils.copyFileIfModified( source, destination ) );
+ assertFalse( FileUtils.copyFileIfModified( source, destination ),
+ "Source file should not have been copied." );
}
/**
@@ -643,7 +640,8 @@ public void testCopyIfModifiedWhenSourceHasZeroDate()
File destination = new File( getTestDirectory(), "temp/copy1.txt" );
// Should copy the source to the non existing destination.
- assertTrue( "Source file should have been copied.", FileUtils.copyFileIfModified( source, destination ) );
+ assertTrue( FileUtils.copyFileIfModified( source, destination ),
+ "Source file should have been copied." );
}
// forceDelete
@@ -659,9 +657,9 @@ public void testForceDeleteAFile1()
{
final File destination = new File( getTestDirectory(), "copy1.txt" );
destination.createNewFile();
- assertTrue( "Copy1.txt doesn't exist to delete", destination.exists() );
+ assertTrue( destination.exists(), "Copy1.txt doesn't exist to delete" );
FileUtils.forceDelete( destination );
- assertTrue( "Check No Exist", !destination.exists() );
+ assertTrue( !destination.exists(), "Check No Exist" );
}
/**
@@ -675,9 +673,9 @@ public void testForceDeleteAFile2()
{
final File destination = new File( getTestDirectory(), "copy2.txt" );
destination.createNewFile();
- assertTrue( "Copy2.txt doesn't exist to delete", destination.exists() );
+ assertTrue( destination.exists(), "Copy2.txt doesn't exist to delete" );
FileUtils.forceDelete( destination );
- assertTrue( "Check No Exist", !destination.exists() );
+ assertTrue( !destination.exists(), "Check No Exist" );
}
// copyFileToDirectory
@@ -698,8 +696,8 @@ public void testCopyFile1ToDir()
}
final File destination = new File( directory, testFile1.getName() );
FileUtils.copyFileToDirectory( testFile1, directory );
- assertTrue( "Check Exist", destination.exists() );
- assertTrue( "Check Full copy", destination.length() == testFile1Size );
+ assertTrue( destination.exists(), "Check Exist" );
+ assertTrue( destination.length() == testFile1Size, "Check Full copy" );
}
/**
@@ -718,8 +716,8 @@ public void testCopyFile2ToDir()
}
final File destination = new File( directory, testFile1.getName() );
FileUtils.copyFileToDirectory( testFile1, directory );
- assertTrue( "Check Exist", destination.exists() );
- assertTrue( "Check Full copy", destination.length() == testFile2Size );
+ assertTrue( destination.exists(), "Check Exist" );
+ assertTrue( destination.length() == testFile2Size, "Check Full copy" );
}
// copyFileToDirectoryIfModified
@@ -747,12 +745,12 @@ public void testCopyFile1ToDirIfModified()
final File target = new File( getTestDirectory() + "/subdir", testFile1.getName() );
long timestamp = target.lastModified();
- assertTrue( "Check Exist", destination.exists() );
- assertTrue( "Check Full copy", destination.length() == testFile1Size );
+ assertTrue( destination.exists(), "Check Exist" );
+ assertTrue( destination.length() == testFile1Size, "Check Full copy" );
FileUtils.copyFileToDirectoryIfModified( testFile1, directory );
- assertTrue( "Timestamp was changed", timestamp == target.lastModified() );
+ assertTrue( timestamp == target.lastModified(), "Timestamp was changed" );
}
/**
@@ -778,12 +776,12 @@ public void testCopyFile2ToDirIfModified()
final File target = new File( getTestDirectory() + "/subdir", testFile2.getName() );
long timestamp = target.lastModified();
- assertTrue( "Check Exist", destination.exists() );
- assertTrue( "Check Full copy", destination.length() == testFile2Size );
+ assertTrue( destination.exists(), "Check Exist" );
+ assertTrue( destination.length() == testFile2Size, "Check Full copy" );
FileUtils.copyFileToDirectoryIfModified( testFile2, directory );
- assertTrue( "Timestamp was changed", timestamp == target.lastModified() );
+ assertTrue( timestamp == target.lastModified(), "Timestamp was changed" );
}
// forceDelete
@@ -793,12 +791,12 @@ public void testCopyFile2ToDirIfModified()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testForceDeleteDir()
throws Exception
{
FileUtils.forceDelete( getTestDirectory().getParentFile() );
- assertTrue( "Check No Exist", !getTestDirectory().getParentFile().exists() );
+ assertTrue( !getTestDirectory().getParentFile().exists(), "Check No Exist" );
}
// resolveFile
@@ -813,7 +811,7 @@ public void testResolveFileDotDot()
throws Exception
{
final File file = FileUtils.resolveFile( getTestDirectory(), ".." );
- assertEquals( "Check .. operator", file, getTestDirectory().getParentFile() );
+ assertEquals( file, getTestDirectory().getParentFile(), "Check .. operator" );
}
/**
@@ -826,7 +824,7 @@ public void testResolveFileDot()
throws Exception
{
final File file = FileUtils.resolveFile( getTestDirectory(), "." );
- assertEquals( "Check . operator", file, getTestDirectory() );
+ assertEquals( file, getTestDirectory(), "Check . operator" );
}
// normalize
@@ -847,12 +845,12 @@ public void testNormalize()
final String[] dest = { "", "/", "/", "/foo", "/foo/", "/", "/foo/", "/foo/bar", "/bar", "/baz", "/baz", "/",
"/bar", "/bar/", "/foo/bar", null, null };
- assertEquals( "Oops, test writer goofed", src.length, dest.length );
+ assertEquals( src.length, dest.length, "Oops, test writer goofed" );
for ( int i = 0; i < src.length; i++ )
{
- assertEquals( "Check if '" + src[i] + "' normalized to '" + dest[i] + "'", dest[i],
- FileUtils.normalize( src[i] ) );
+ assertEquals( dest[i], FileUtils.normalize( src[i] ),
+ "Check if '" + src[i] + "' normalized to '" + dest[i] + "'" );
}
}
@@ -884,32 +882,32 @@ public void testFileUtils()
// Loads file from classpath
final String path = "/test.txt";
final URL url = this.getClass().getResource( path );
- assertNotNull( path + " was not found.", url );
+ assertNotNull( url, path + " was not found." );
final String filename = Paths.get(url.toURI()).toString();
final String filename2 = "test2.txt";
- assertTrue( "test.txt extension == \"txt\"", FileUtils.getExtension( filename ).equals( "txt" ) );
+ assertTrue( FileUtils.getExtension( filename ).equals( "txt" ), "test.txt extension == \"txt\"" );
- assertTrue( "Test file does exist: " + filename, FileUtils.fileExists( filename ) );
+ assertTrue( FileUtils.fileExists( filename ), "Test file does exist: " + filename );
- assertTrue( "Second test file does not exist", !FileUtils.fileExists( filename2 ) );
+ assertTrue( !FileUtils.fileExists( filename2 ), "Second test file does not exist" );
FileUtils.fileWrite( filename2, filename );
- assertTrue( "Second file was written", FileUtils.fileExists( filename2 ) );
+ assertTrue( FileUtils.fileExists( filename2 ), "Second file was written" );
final String file2contents = FileUtils.fileRead( filename2 );
- assertTrue( "Second file's contents correct", FileUtils.fileRead( filename2 ).equals( file2contents ) );
+ assertTrue( FileUtils.fileRead( filename2 ).equals( file2contents ), "Second file's contents correct" );
FileUtils.fileAppend( filename2, filename );
- assertTrue( "Second file's contents correct",
- FileUtils.fileRead( filename2 ).equals( file2contents + file2contents ) );
+ assertTrue( FileUtils.fileRead( filename2 ).equals( file2contents + file2contents ),
+ "Second file's contents correct" );
FileUtils.fileDelete( filename2 );
- assertTrue( "Second test file does not exist", !FileUtils.fileExists( filename2 ) );
+ assertTrue( !FileUtils.fileExists( filename2 ), "Second test file does not exist" );
final String contents = FileUtils.fileRead( filename );
- assertTrue( "FileUtils.fileRead()", contents.equals( "This is a test" ) );
+ assertTrue( contents.equals( "This is a test" ), "FileUtils.fileRead()" );
}
@@ -933,7 +931,7 @@ public void testGetExtension()
/**
* testGetExtensionWithPaths.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testGetExtensionWithPaths()
{
// Since the utilities are based on the separator for the platform
@@ -1155,18 +1153,18 @@ public void testCopyDirectoryStructureIfModified()
FileUtils.copyDirectoryStructureIfModified( from, to );
- assertTrue( "Unmodified file was overwritten", timestamps[0] == files[0].lastModified() );
- assertTrue( "Unmodified file was overwritten", timestamps[1] == files[1].lastModified() );
- assertTrue( "Unmodified file was overwritten", timestamps[2] == files[2].lastModified() );
+ assertTrue( timestamps[0] == files[0].lastModified(), "Unmodified file was overwritten" );
+ assertTrue( timestamps[1] == files[1].lastModified(), "Unmodified file was overwritten" );
+ assertTrue( timestamps[2] == files[2].lastModified(), "Unmodified file was overwritten" );
files[1].setLastModified( f2.lastModified() - 5000L );
timestamps[1] = files[1].lastModified();
FileUtils.copyDirectoryStructureIfModified( from, to );
- assertTrue( "Unmodified file was overwritten", timestamps[0] == files[0].lastModified() );
- assertTrue( "Outdated file was not overwritten", timestamps[1] < files[1].lastModified() );
- assertTrue( "Unmodified file was overwritten", timestamps[2] == files[2].lastModified() );
+ assertTrue( timestamps[0] == files[0].lastModified(), "Unmodified file was overwritten" );
+ assertTrue( timestamps[1] < files[1].lastModified(), "Outdated file was not overwritten" );
+ assertTrue( timestamps[2] == files[2].lastModified(), "Unmodified file was overwritten" );
}
@@ -1247,7 +1245,7 @@ public Reader getReader( Reader reader )
FileUtils.fileWrite( srcFile.getAbsolutePath(), "UTF-8", "This is a test. Test ${s}\n" );
FileUtils.copyFile( srcFile, destFile, "UTF-8", wrappers1 );
- assertTrue( "Files should be equal.", FileUtils.contentEquals( compareFile, destFile ) );
+ assertTrue( FileUtils.contentEquals( compareFile, destFile ), "Files should be equal." );
srcFile.delete();
destFile.delete();
@@ -1353,8 +1351,8 @@ public void testFileRead()
{
IOUtil.close( writer );
}
- assertEquals( "testString should be equal", testString, FileUtils.fileRead( testFile ) );
- assertEquals( "testString should be equal", testString, FileUtils.fileRead( testFileName ) );
+ assertEquals( testString, FileUtils.fileRead( testFile ), "testString should be equal" );
+ assertEquals( testString, FileUtils.fileRead( testFileName ), "testString should be equal" );
testFile.delete();
}
@@ -1383,8 +1381,8 @@ public void testFileReadWithEncoding()
{
IOUtil.close( writer );
}
- assertEquals( "testString should be equal", testString, FileUtils.fileRead( testFile, "UTF-8" ) );
- assertEquals( "testString should be equal", testString, FileUtils.fileRead( testFileName, "UTF-8" ) );
+ assertEquals( testString, FileUtils.fileRead( testFile, "UTF-8" ), "testString should be equal" );
+ assertEquals( testString, FileUtils.fileRead( testFileName, "UTF-8" ), "testString should be equal" );
testFile.delete();
}
@@ -1575,7 +1573,7 @@ public void testExtensions()
String fileName = values[i][0].replace( '/', File.separatorChar );
String ext = values[i][1];
String computed = FileUtils.extension( fileName );
- assertEquals( "case [" + i + "]:" + fileName + " -> " + ext + ", computed : " + computed, ext, computed );
+ assertEquals( ext, computed, "case [" + i + "]:" + fileName + " -> " + ext + ", computed : " + computed );
}
}
@@ -1634,7 +1632,7 @@ public void testDeleteDirectoryWithValidFileSymlink()
*/
symlink.delete();
}
- assertTrue( "Failed to delete test directory", !getTestDirectory().exists() );
+ assertTrue( !getTestDirectory().exists(), "Failed to delete test directory" );
}
/**
@@ -1661,7 +1659,7 @@ public void testDeleteDirectoryWithValidDirSymlink()
*/
symlink.delete();
}
- assertTrue( "Failed to delete test directory", !getTestDirectory().exists() );
+ assertTrue( !getTestDirectory().exists(), "Failed to delete test directory" );
}
/**
@@ -1687,7 +1685,7 @@ public void testDeleteDirectoryWithDanglingSymlink()
*/
symlink.delete();
}
- assertTrue( "Failed to delete test directory", !getTestDirectory().exists() );
+ assertTrue( !getTestDirectory().exists(), "Failed to delete test directory" );
}
/**
@@ -1745,7 +1743,7 @@ public void testCreateTempFile()
for ( int i = 0; i < 10; i++ )
{
File current = FileUtils.createTempFile( "unique", ".tmp", null );
- assertTrue( "No unique name: " + current.getName(), !current.getName().equals( last.getName() ) );
+ assertTrue( !current.getName().equals( last.getName() ), "No unique name: " + current.getName() );
last = current;
}
}
diff --git a/src/test/java/org/codehaus/plexus/util/IOUtilTest.java b/src/test/java/org/codehaus/plexus/util/IOUtilTest.java
index 4179a20e..83d2ce6e 100644
--- a/src/test/java/org/codehaus/plexus/util/IOUtilTest.java
+++ b/src/test/java/org/codehaus/plexus/util/IOUtilTest.java
@@ -16,9 +16,10 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
import java.io.BufferedOutputStream;
import java.io.File;
@@ -32,8 +33,8 @@
import java.nio.file.Files;
import java.util.Arrays;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
/**
* This is used to test IOUtil for correctness. The following checks are performed:
@@ -67,7 +68,7 @@ public final class IOUtilTest
/**
* setUp.
*/
- @Before
+ @BeforeEach
public void setUp()
{
try
@@ -113,51 +114,24 @@ private void createFile( File file, long size )
/** Assert that the contents of two byte arrays are the same. */
private void assertEqualContent( byte[] b0, byte[] b1 )
{
- assertTrue( "Content not equal according to java.util.Arrays#equals()", Arrays.equals( b0, b1 ) );
+ assertTrue( Arrays.equals( b0, b1 ), "Content not equal according to java.util.Arrays#equals()" );
}
/** Assert that the content of two files is the same. */
private void assertEqualContent( File f0, File f1 )
throws IOException
{
- InputStream is0 = Files.newInputStream( f0.toPath() );
- InputStream is1 = Files.newInputStream( f1.toPath() );
- byte[] buf0 = new byte[FILE_SIZE];
- byte[] buf1 = new byte[FILE_SIZE];
- int n0 = 0;
- int n1 = 0;
-
- try
- {
- while ( 0 <= n0 )
- {
- n0 = is0.read( buf0 );
- n1 = is1.read( buf1 );
- assertTrue( "The files " + f0 + " and " + f1 + " have differing number of bytes available (" + n0
- + " vs " + n1 + ")", ( n0 == n1 ) );
-
- assertTrue( "The files " + f0 + " and " + f1 + " have different content", Arrays.equals( buf0, buf1 ) );
- }
- }
- finally
- {
- is0.close();
- is1.close();
- }
+ byte[] buf0 = Files.readAllBytes( f0.toPath() );
+ byte[] buf1 = Files.readAllBytes( f1.toPath() );
+ assertArrayEquals( buf0, buf1, "The files " + f0 + " and " + f1 + " have different content" );
}
/** Assert that the content of a file is equal to that in a byte[]. */
private void assertEqualContent( byte[] b0, File file )
throws IOException
{
- InputStream is = Files.newInputStream( file.toPath() );
- byte[] b1 = new byte[b0.length];
- int numRead = is.read( b1 );
- assertTrue( "Different number of bytes", numRead == b0.length && is.available() == 0 );
- for ( int i = 0; i < numRead; assertTrue( "Byte " + i + " differs (" + b0[i] + " != " + b1[i] + ")",
- b0[i] == b1[i] ), i++ )
- ;
- is.close();
+ byte[] b1 = Files.readAllBytes( file.toPath() );
+ assertArrayEquals(b0, b1, "Content differs");
}
/**
@@ -174,7 +148,7 @@ public void testInputStreamToOutputStream()
OutputStream fout = Files.newOutputStream( destination.toPath() );
IOUtil.copy( fin, fout );
- assertTrue( "Not all bytes were read", fin.available() == 0 );
+ assertTrue( fin.available() == 0, "Not all bytes were read" );
fout.flush();
checkFile( destination );
@@ -189,7 +163,7 @@ public void testInputStreamToOutputStream()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testInputStreamToWriter()
throws Exception
{
@@ -199,7 +173,7 @@ public void testInputStreamToWriter()
IOUtil.copy( fin, fout );
- assertTrue( "Not all bytes were read", fin.available() == 0 );
+ assertTrue( fin.available() == 0, "Not all bytes were read" );
fout.flush();
checkFile( destination );
@@ -221,8 +195,8 @@ public void testInputStreamToString()
InputStream fin = Files.newInputStream( testFile.toPath() );
String out = IOUtil.toString( fin );
assertNotNull( out );
- assertTrue( "Not all bytes were read", fin.available() == 0 );
- assertTrue( "Wrong output size: out.length()=" + out.length() + "!=" + FILE_SIZE, out.length() == FILE_SIZE );
+ assertTrue( fin.available() == 0, "Not all bytes were read" );
+ assertTrue( out.length() == FILE_SIZE, "Wrong output size: out.length()=" + out.length() + "!=" + FILE_SIZE );
fin.close();
}
@@ -258,7 +232,7 @@ public void testReaderToOutputStream()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testReaderToWriter()
throws Exception
{
@@ -280,14 +254,14 @@ public void testReaderToWriter()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testReaderToString()
throws Exception
{
Reader fin = Files.newBufferedReader( testFile.toPath() );
String out = IOUtil.toString( fin );
assertNotNull( out );
- assertTrue( "Wrong output size: out.length()=" + out.length() + "!=" + FILE_SIZE, out.length() == FILE_SIZE );
+ assertTrue( out.length() == FILE_SIZE, "Wrong output size: out.length()=" + out.length() + "!=" + FILE_SIZE );
fin.close();
}
@@ -296,7 +270,7 @@ public void testReaderToString()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testStringToOutputStream()
throws Exception
{
@@ -325,7 +299,7 @@ public void testStringToOutputStream()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testStringToWriter()
throws Exception
{
@@ -357,8 +331,8 @@ public void testInputStreamToByteArray()
InputStream fin = Files.newInputStream( testFile.toPath() );
byte[] out = IOUtil.toByteArray( fin );
assertNotNull( out );
- assertTrue( "Not all bytes were read", fin.available() == 0 );
- assertTrue( "Wrong output size: out.length=" + out.length + "!=" + FILE_SIZE, out.length == FILE_SIZE );
+ assertTrue( fin.available() == 0, "Not all bytes were read" );
+ assertTrue( out.length == FILE_SIZE, "Wrong output size: out.length=" + out.length + "!=" + FILE_SIZE );
assertEqualContent( out, testFile );
fin.close();
}
@@ -411,7 +385,7 @@ public void testByteArrayToWriter()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testByteArrayToString()
throws Exception
{
@@ -459,7 +433,7 @@ public void testByteArrayToOutputStream()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testCloseInputStream()
throws Exception
{
@@ -477,7 +451,7 @@ public void testCloseInputStream()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testCloseOutputStream()
throws Exception
{
@@ -607,7 +581,7 @@ private File newFile( String filename )
throws Exception
{
File destination = new File( testDirectory, filename );
- assertTrue( filename + "Test output data file shouldn't previously exist", !destination.exists() );
+ assertTrue( !destination.exists(), filename + "Test output data file shouldn't previously exist" );
return destination;
}
@@ -615,7 +589,7 @@ private File newFile( String filename )
private void checkFile( File file )
throws Exception
{
- assertTrue( "Check existence of output file", file.exists() );
+ assertTrue( file.exists(), "Check existence of output file" );
assertEqualContent( testFile, file );
}
@@ -650,9 +624,8 @@ private void checkWrite( Writer output )
private void deleteFile( File file )
throws Exception
{
- assertTrue( "Wrong output size: file.length()=" + file.length() + "!=" + FILE_SIZE + 1,
- file.length() == FILE_SIZE + 1 );
+ assertTrue( file.length() == FILE_SIZE + 1, "Wrong output size: file.length()=" + file.length() + "!=" + FILE_SIZE + 1 );
- assertTrue( "File would not delete", ( file.delete() || ( !file.exists() ) ) );
+ assertTrue( ( file.delete() || ( !file.exists() ) ), "File would not delete" );
}
}
diff --git a/src/test/java/org/codehaus/plexus/util/InterpolationFilterReaderTest.java b/src/test/java/org/codehaus/plexus/util/InterpolationFilterReaderTest.java
index 1d190b4d..eb821b5c 100644
--- a/src/test/java/org/codehaus/plexus/util/InterpolationFilterReaderTest.java
+++ b/src/test/java/org/codehaus/plexus/util/InterpolationFilterReaderTest.java
@@ -16,13 +16,13 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import java.io.StringReader;
import java.util.HashMap;
import java.util.Map;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/**
* InterpolationFilterReaderTest class.
@@ -62,7 +62,7 @@ public void testShouldNotInterpolateExpressionAtEndOfDataWithInvalidEndToken()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testShouldNotInterpolateExpressionWithMissingEndToken()
throws Exception
{
diff --git a/src/test/java/org/codehaus/plexus/util/LineOrientedInterpolatingReaderTest.java b/src/test/java/org/codehaus/plexus/util/LineOrientedInterpolatingReaderTest.java
index 6ff112db..1e3a3d05 100644
--- a/src/test/java/org/codehaus/plexus/util/LineOrientedInterpolatingReaderTest.java
+++ b/src/test/java/org/codehaus/plexus/util/LineOrientedInterpolatingReaderTest.java
@@ -16,7 +16,9 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
import java.io.BufferedReader;
import java.io.IOException;
@@ -26,8 +28,6 @@
import java.util.HashMap;
import java.util.Map;
-import org.junit.Test;
-
/**
* Generated by JUnitDoclet, a tool provided by ObjectFab GmbH under LGPL. Please see www.junitdoclet.org, www.gnu.org
* and www.objectfab.de for informations about the tool, the licence and the authors.
@@ -46,7 +46,7 @@ public class LineOrientedInterpolatingReaderTest
*
* @throws java.io.IOException if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testShouldInterpolateExpressionAtEndOfDataWithInvalidEndToken()
throws IOException
{
@@ -96,7 +96,7 @@ private Map getStandardMap()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testDefaultInterpolationWithEscapedExpression()
throws Exception
{
@@ -118,7 +118,7 @@ public void testDefaultInterpolationWithEscapedExpression()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testDefaultInterpolationWithInterpolatedValueAtEnd()
throws Exception
{
@@ -140,7 +140,7 @@ public void testDefaultInterpolationWithInterpolatedValueAtEnd()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testInterpolationWithSpecifiedBoundaryTokens()
throws Exception
{
@@ -163,7 +163,7 @@ public void testInterpolationWithSpecifiedBoundaryTokens()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testInterpolationWithSpecifiedBoundaryTokensWithNonInterpolatedValueAtEnd()
throws Exception
{
@@ -186,7 +186,7 @@ public void testInterpolationWithSpecifiedBoundaryTokensWithNonInterpolatedValue
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testInterpolationWithSpecifiedBoundaryTokensWithInterpolatedValueAtEnd()
throws Exception
{
diff --git a/src/test/java/org/codehaus/plexus/util/MatchPatternTest.java b/src/test/java/org/codehaus/plexus/util/MatchPatternTest.java
index bd523457..5745b408 100644
--- a/src/test/java/org/codehaus/plexus/util/MatchPatternTest.java
+++ b/src/test/java/org/codehaus/plexus/util/MatchPatternTest.java
@@ -16,10 +16,10 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import org.junit.jupiter.api.Test;
-import org.junit.Test;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* MatchPatternTest class.
@@ -48,7 +48,7 @@ public void testMatchPath()
*
* @see Issue #63
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testMatchPatternStart()
{
MatchPattern mp = MatchPattern.fromString( "ABC*" );
diff --git a/src/test/java/org/codehaus/plexus/util/MatchPatternsTest.java b/src/test/java/org/codehaus/plexus/util/MatchPatternsTest.java
index a10e340e..202428a3 100644
--- a/src/test/java/org/codehaus/plexus/util/MatchPatternsTest.java
+++ b/src/test/java/org/codehaus/plexus/util/MatchPatternsTest.java
@@ -16,10 +16,10 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import org.junit.jupiter.api.Test;
-import org.junit.Test;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* MatchPatternsTest class.
diff --git a/src/test/java/org/codehaus/plexus/util/OsTest.java b/src/test/java/org/codehaus/plexus/util/OsTest.java
index 572d4a56..77b781ce 100644
--- a/src/test/java/org/codehaus/plexus/util/OsTest.java
+++ b/src/test/java/org/codehaus/plexus/util/OsTest.java
@@ -16,13 +16,13 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Iterator;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/**
* Test Case for Os
@@ -92,7 +92,7 @@ public void testOs()
/**
* testValidList.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testValidList()
{
assertTrue( Os.isValidFamily( "dos" ) );
diff --git a/src/test/java/org/codehaus/plexus/util/PathToolTest.java b/src/test/java/org/codehaus/plexus/util/PathToolTest.java
index 0a6d011e..82744cd2 100644
--- a/src/test/java/org/codehaus/plexus/util/PathToolTest.java
+++ b/src/test/java/org/codehaus/plexus/util/PathToolTest.java
@@ -16,9 +16,9 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/**
* PathToolTest class.
@@ -34,7 +34,7 @@ public class PathToolTest
*
* @throws java.lang.Exception
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testGetRelativePath()
throws Exception
{
@@ -66,7 +66,7 @@ public void testGetDirectoryComponent()
*
* @throws java.lang.Exception
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testCalculateLink()
throws Exception
{
diff --git a/src/test/java/org/codehaus/plexus/util/PerfTest.java b/src/test/java/org/codehaus/plexus/util/PerfTest.java
index 595c7272..de8164a2 100644
--- a/src/test/java/org/codehaus/plexus/util/PerfTest.java
+++ b/src/test/java/org/codehaus/plexus/util/PerfTest.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/**
* PerfTest class.
diff --git a/src/test/java/org/codehaus/plexus/util/ReflectionUtilsTest.java b/src/test/java/org/codehaus/plexus/util/ReflectionUtilsTest.java
index 32699154..8ea9a314 100644
--- a/src/test/java/org/codehaus/plexus/util/ReflectionUtilsTest.java
+++ b/src/test/java/org/codehaus/plexus/util/ReflectionUtilsTest.java
@@ -16,11 +16,11 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.Map;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import java.util.HashMap;
@@ -53,7 +53,7 @@ public void testSimpleVariableAccess()
*
* @throws java.lang.IllegalAccessException if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testComplexVariableAccess()
throws IllegalAccessException
{
diff --git a/src/test/java/org/codehaus/plexus/util/SelectorUtilsTest.java b/src/test/java/org/codehaus/plexus/util/SelectorUtilsTest.java
index 160aa16d..047e591a 100644
--- a/src/test/java/org/codehaus/plexus/util/SelectorUtilsTest.java
+++ b/src/test/java/org/codehaus/plexus/util/SelectorUtilsTest.java
@@ -16,12 +16,12 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.File;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/**
* SelectorUtilsTest class.
@@ -92,7 +92,7 @@ public void testMatchPath_WindowsFileSeparator()
assertTrue( SelectorUtils.matchPath( "*" + separator + "a.txt", "b" + separator + "a.txt", separator, false ) );
}
- @Test
+ @org.junit.jupiter.api.Test
public void testPatternMatchSingleWildcardPosix()
{
assertFalse(SelectorUtils.matchPath(
@@ -119,7 +119,7 @@ public void testPatternMatchDoubleWildcardPosix()
}
- @Test
+ @org.junit.jupiter.api.Test
public void testPatternMatchSingleWildcardWindows()
{
assertFalse(SelectorUtils.matchPath(
diff --git a/src/test/java/org/codehaus/plexus/util/StringInputStreamTest.java b/src/test/java/org/codehaus/plexus/util/StringInputStreamTest.java
deleted file mode 100644
index 0127c741..00000000
--- a/src/test/java/org/codehaus/plexus/util/StringInputStreamTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.codehaus.plexus.util;
-
-/*
- * Copyright The Codehaus Foundation.
- *
- * Licensed 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.
- */
-
-import junit.framework.TestCase;
-
-/**
- * StringInputStreamTest class.
- *
- * @author Ben Walding
- * @version $Id: $Id
- * @since 3.4.0
- */
-public class StringInputStreamTest
- extends TestCase
-{
- /**
- * testFoo.
- */
- public void testFoo()
- {
- }
-}
diff --git a/src/test/java/org/codehaus/plexus/util/StringUtilsTest.java b/src/test/java/org/codehaus/plexus/util/StringUtilsTest.java
index b7bd6d72..659aecf1 100644
--- a/src/test/java/org/codehaus/plexus/util/StringUtilsTest.java
+++ b/src/test/java/org/codehaus/plexus/util/StringUtilsTest.java
@@ -16,14 +16,14 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Arrays;
import java.util.Locale;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/**
* Test string utils.
@@ -61,7 +61,7 @@ public void testIsNotEmpty()
assertEquals( true, StringUtils.isNotEmpty( " foo " ) );
}
- @Test
+ @org.junit.jupiter.api.Test
public void testIsNotEmptyNegatesIsEmpty()
{
assertEquals( !StringUtils.isEmpty( null ), StringUtils.isNotEmpty( null ) );
@@ -123,7 +123,7 @@ public void testCapitalizeFirstLetterTurkish()
/**
* testLowerCaseFirstLetter.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testLowerCaseFirstLetter()
{
assertEquals( "id", StringUtils.lowercaseFirstLetter( "id" ) );
@@ -133,7 +133,7 @@ public void testLowerCaseFirstLetter()
/**
* testLowerCaseFirstLetterTurkish.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testLowerCaseFirstLetterTurkish()
{
Locale l = Locale.getDefault();
@@ -146,7 +146,7 @@ public void testLowerCaseFirstLetterTurkish()
/**
* testRemoveAndHump.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testRemoveAndHump()
{
assertEquals( "Id", StringUtils.removeAndHump( "id", "-" ) );
@@ -184,7 +184,7 @@ public void testQuote_EscapeEmbeddedSingleQuotes()
/**
* testQuote_EscapeEmbeddedSingleQuotesWithPattern.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testQuote_EscapeEmbeddedSingleQuotesWithPattern()
{
String src = "This \'is a\' test";
@@ -214,7 +214,7 @@ public void testQuote_EscapeEmbeddedDoubleQuotesAndSpaces()
/**
* testQuote_DontQuoteIfUnneeded.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testQuote_DontQuoteIfUnneeded()
{
String src = "ThisIsATest";
@@ -243,7 +243,7 @@ public void testQuote_WrapWithSingleQuotes()
/**
* testQuote_PreserveExistingQuotes.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testQuote_PreserveExistingQuotes()
{
String src = "\'This is a test\'";
@@ -257,7 +257,7 @@ public void testQuote_PreserveExistingQuotes()
/**
* testQuote_WrapExistingQuotesWhenForceIsTrue.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testQuote_WrapExistingQuotesWhenForceIsTrue()
{
String src = "\'This is a test\'";
@@ -272,7 +272,7 @@ public void testQuote_WrapExistingQuotesWhenForceIsTrue()
/**
* testQuote_ShortVersion_SingleQuotesPreserved.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testQuote_ShortVersion_SingleQuotesPreserved()
{
String src = "\'This is a test\'";
@@ -285,7 +285,7 @@ public void testQuote_ShortVersion_SingleQuotesPreserved()
/**
* testSplit.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testSplit()
{
String[] tokens;
@@ -320,7 +320,7 @@ public void testSplit()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testRemoveDuplicateWhitespace()
throws Exception
{
@@ -349,11 +349,11 @@ public void testUnifyLineSeparators()
try
{
StringUtils.unifyLineSeparators( s, "abs" );
- assertTrue( "Exception NOT catched", false );
+ assertTrue( false, "Exception NOT catched" );
}
catch ( IllegalArgumentException e )
{
- assertTrue( "Exception catched", true );
+ assertTrue( true, "Exception catched" );
}
assertEquals( "this\nis\na\ntest", StringUtils.unifyLineSeparators( s, "\n" ) );
diff --git a/src/test/java/org/codehaus/plexus/util/SweeperPoolTest.java b/src/test/java/org/codehaus/plexus/util/SweeperPoolTest.java
index a642b5a2..7e7d0112 100644
--- a/src/test/java/org/codehaus/plexus/util/SweeperPoolTest.java
+++ b/src/test/java/org/codehaus/plexus/util/SweeperPoolTest.java
@@ -16,18 +16,18 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotSame;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
import java.util.Vector;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
/**
* Created on 21/06/2003
@@ -69,31 +69,31 @@ public void testMaxSize()
pool = new TestObjectPool( maxSize, minSize, initialCapacity, sweepInterval, triggerSize );
Object tmp = pool.get();
- assertNull( "Expected object from pool to be null", tmp );
+ assertNull( tmp, "Expected object from pool to be null" );
pool.put( o1 );
- assertEquals( "Expected pool to contain 1 object", 1, pool.getSize() );
+ assertEquals( 1, pool.getSize(), "Expected pool to contain 1 object" );
tmp = pool.get();
- assertSame( "Expected returned pool object to be the same as the one put in", tmp, o1 );
+ assertSame( tmp, o1, "Expected returned pool object to be the same as the one put in" );
pool.put( o1 );
pool.put( o2 );
- assertEquals( "Expected pool to contain 2 objects", 2, pool.getSize() );
+ assertEquals( 2, pool.getSize(), "Expected pool to contain 2 objects" );
pool.put( o3 );
- assertEquals( "Expected pool to contain only a maximum of 2 objects.", 2, pool.getSize() );
- assertEquals( "Expected 1 disposed pool object", 1, pool.testGetDisposedObjects().size() );
+ assertEquals( 2, pool.getSize(), "Expected pool to contain only a maximum of 2 objects." );
+ assertEquals( 1, pool.testGetDisposedObjects().size(), "Expected 1 disposed pool object" );
tmp = pool.testGetDisposedObjects().iterator().next();
tmp = pool.get();
- assertEquals( "Expected pool size to be 1 after removing one object", 1, pool.getSize() );
+ assertEquals( 1, pool.getSize(), "Expected pool size to be 1 after removing one object" );
Object tmp2 = pool.get();
- assertEquals( "Expected pool size to be 0 after removing 2 objects", 0, pool.getSize() );
- assertNotSame( "Expected returned objects to be different", tmp, tmp2 );
+ assertEquals( 0, pool.getSize(), "Expected pool size to be 0 after removing 2 objects" );
+ assertNotSame( tmp, tmp2, "Expected returned objects to be different" );
}
/**
* testSweepAndTrim1.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testSweepAndTrim1()
{
// test trigger
@@ -120,8 +120,8 @@ public void testSweepAndTrim1()
fail( "Unexpected exception thrown. e=" + Tracer.traceToString( e ) );
}
}
- assertEquals( "Expected pool to only contain 1 object", 1, pool.getSize() );
- assertEquals( "Expected 3 disposed objects", 3, pool.testGetDisposedObjects().size() );
+ assertEquals( 1, pool.getSize(), "Expected pool to only contain 1 object" );
+ assertEquals( 3, pool.testGetDisposedObjects().size(), "Expected 3 disposed objects" );
}
@@ -130,7 +130,7 @@ public void testSweepAndTrim1()
*
* @throws java.lang.Exception if any.
*/
- @Before
+ @BeforeEach
public void setUp()
throws Exception
{
@@ -147,7 +147,7 @@ public void setUp()
*
* @throws java.lang.Exception if any.
*/
- @After
+ @AfterEach
public void tearDown()
throws Exception
{
diff --git a/src/test/java/org/codehaus/plexus/util/cli/CommandLineUtilsTest.java b/src/test/java/org/codehaus/plexus/util/cli/CommandLineUtilsTest.java
index 92cdaa2d..4e19f71f 100644
--- a/src/test/java/org/codehaus/plexus/util/cli/CommandLineUtilsTest.java
+++ b/src/test/java/org/codehaus/plexus/util/cli/CommandLineUtilsTest.java
@@ -16,16 +16,16 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.fail;
import java.util.Arrays;
import java.util.Locale;
import java.util.Properties;
import org.codehaus.plexus.util.Os;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/**
* CommandLineUtilsTest class.
@@ -113,7 +113,7 @@ public void testGetSystemEnvVarsWindows()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testTranslateCommandline()
throws Exception
{
diff --git a/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java b/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java
index 15cb9744..43486862 100644
--- a/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java
+++ b/src/test/java/org/codehaus/plexus/util/cli/CommandlineTest.java
@@ -16,15 +16,14 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
import java.io.File;
import java.io.IOException;
import java.io.Writer;
import java.nio.file.Files;
-import java.nio.file.Paths;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.Os;
@@ -32,8 +31,8 @@
import org.codehaus.plexus.util.cli.shell.BourneShell;
import org.codehaus.plexus.util.cli.shell.CmdShell;
import org.codehaus.plexus.util.cli.shell.Shell;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.BeforeEach;
/**
* CommandlineTest class.
@@ -51,7 +50,7 @@ public class CommandlineTest
*
* @throws java.lang.Exception if any.
*/
- @Before
+ @BeforeEach
public void setUp()
throws Exception
{
@@ -118,7 +117,7 @@ public void testExecuteBinaryOnPath()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testExecute()
throws Exception
{
@@ -199,7 +198,7 @@ public void testGetShellCommandLineWindows()
cmd.addArguments( new String[] { "a", "b" } );
String[] shellCommandline = cmd.getShellCommandline();
- assertEquals( "Command line size", 4, shellCommandline.length );
+ assertEquals( 4, shellCommandline.length, "Command line size" );
assertEquals( "cmd.exe", shellCommandline[0] );
assertEquals( "/X", shellCommandline[1] );
@@ -223,7 +222,7 @@ public void testGetShellCommandLineWindowsWithSeveralQuotes()
cmd.addArguments( new String[] { "c:\\Documents and Settings\\whatever", "b" } );
String[] shellCommandline = cmd.getShellCommandline();
- assertEquals( "Command line size", 4, shellCommandline.length );
+ assertEquals( 4, shellCommandline.length, "Command line size" );
assertEquals( "cmd.exe", shellCommandline[0] );
assertEquals( "/X", shellCommandline[1] );
@@ -249,7 +248,7 @@ public void testGetShellCommandLineBash()
String[] shellCommandline = cmd.getShellCommandline();
- assertEquals( "Command line size", 3, shellCommandline.length );
+ assertEquals( 3, shellCommandline.length, "Command line size" );
assertEquals( "/bin/sh", shellCommandline[0] );
assertEquals( "-c", shellCommandline[1] );
@@ -279,7 +278,7 @@ public void testGetShellCommandLineBash_WithWorkingDirectory()
String[] shellCommandline = cmd.getShellCommandline();
- assertEquals( "Command line size", 3, shellCommandline.length );
+ assertEquals( 3, shellCommandline.length, "Command line size" );
assertEquals( "/bin/sh", shellCommandline[0] );
assertEquals( "-c", shellCommandline[1] );
@@ -306,7 +305,7 @@ public void testGetShellCommandLineBash_WithSingleQuotedArg()
String[] shellCommandline = cmd.getShellCommandline();
- assertEquals( "Command line size", 3, shellCommandline.length );
+ assertEquals( 3, shellCommandline.length, "Command line size" );
assertEquals( "/bin/sh", shellCommandline[0] );
assertEquals( "-c", shellCommandline[1] );
@@ -332,7 +331,7 @@ public void testGetShellCommandLineNonWindows()
cmd.addArguments( new String[] { "a", "b" } );
String[] shellCommandline = cmd.getShellCommandline();
- assertEquals( "Command line size", 3, shellCommandline.length );
+ assertEquals( 3, shellCommandline.length, "Command line size" );
assertEquals( "/bin/sh", shellCommandline[0] );
assertEquals( "-c", shellCommandline[1] );
@@ -508,7 +507,7 @@ public void testDollarSignInArgumentPath()
File dir = new File( System.getProperty( "basedir" ), "target/test" );
if ( !dir.exists() )
{
- assertTrue( "Can't create dir:" + dir.getAbsolutePath(), dir.mkdirs() );
+ assertTrue( dir.mkdirs(), "Can't create dir:" + dir.getAbsolutePath() );
}
Writer writer = null;
@@ -627,7 +626,7 @@ private static void createAndCallScript( File dir, String content )
{
if ( !dir.exists() )
{
- assertTrue( "Can't create dir:" + dir.getAbsolutePath(), dir.mkdirs() );
+ assertTrue( dir.mkdirs(), "Can't create dir:" + dir.getAbsolutePath() );
}
// Create a script file
diff --git a/src/test/java/org/codehaus/plexus/util/cli/DefaultConsumerTest.java b/src/test/java/org/codehaus/plexus/util/cli/DefaultConsumerTest.java
index 423d30ed..3e59e48b 100644
--- a/src/test/java/org/codehaus/plexus/util/cli/DefaultConsumerTest.java
+++ b/src/test/java/org/codehaus/plexus/util/cli/DefaultConsumerTest.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/**
* DefaultConsumerTest class.
diff --git a/src/test/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizerTest.java b/src/test/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizerTest.java
index 05d043f5..e5d78aad 100644
--- a/src/test/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizerTest.java
+++ b/src/test/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizerTest.java
@@ -16,10 +16,11 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.fail;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/**
* EnhancedStringTokenizerTest class.
@@ -33,7 +34,7 @@ public class EnhancedStringTokenizerTest
/**
* test1.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void test1()
{
EnhancedStringTokenizer est = new EnhancedStringTokenizer( "this is a test string" );
@@ -53,59 +54,59 @@ public void test1()
public void test2()
{
EnhancedStringTokenizer est = new EnhancedStringTokenizer( "1,,,3,,4", "," );
- assertEquals( "Token 1", "1", est.nextToken() );
- assertEquals( "Token 2", "", est.nextToken() );
- assertEquals( "Token 3", "", est.nextToken() );
- assertEquals( "Token 4", "3", est.nextToken() );
- assertEquals( "Token 5", "", est.nextToken() );
- assertEquals( "Token 6", "4", est.nextToken() );
+ assertEquals( "1", est.nextToken(), "Token 1" );
+ assertEquals( "", est.nextToken(), "Token 2" );
+ assertEquals( "", est.nextToken(), "Token 3" );
+ assertEquals( "3", est.nextToken(), "Token 4" );
+ assertEquals( "", est.nextToken(), "Token 5" );
+ assertEquals( "4", est.nextToken(), "Token 6" );
}
/**
* test3.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void test3()
{
EnhancedStringTokenizer est = new EnhancedStringTokenizer( "1,,,3,,4", ",", true );
- assertEquals( "Token 1", "1", est.nextToken() );
- assertEquals( "Token 2", ",", est.nextToken() );
- assertEquals( "Token 3", "", est.nextToken() );
- assertEquals( "Token 4", ",", est.nextToken() );
- assertEquals( "Token 5", "", est.nextToken() );
- assertEquals( "Token 6", ",", est.nextToken() );
- assertEquals( "Token 7", "3", est.nextToken() );
- assertEquals( "Token 8", ",", est.nextToken() );
- assertEquals( "Token 9", "", est.nextToken() );
- assertEquals( "Token 10", ",", est.nextToken() );
- assertEquals( "Token 11", "4", est.nextToken() );
+ assertEquals( "1", est.nextToken(), "Token 1" );
+ assertEquals( ",", est.nextToken(), "Token 2" );
+ assertEquals( "", est.nextToken(), "Token 3" );
+ assertEquals( ",", est.nextToken(), "Token 4" );
+ assertEquals( "", est.nextToken(), "Token 5" );
+ assertEquals( ",", est.nextToken(), "Token 6" );
+ assertEquals( "3", est.nextToken(), "Token 7" );
+ assertEquals( ",", est.nextToken(), "Token 8" );
+ assertEquals( "", est.nextToken(), "Token 9" );
+ assertEquals( ",", est.nextToken(), "Token 10" );
+ assertEquals( "4", est.nextToken(), "Token 11" );
}
/**
* testMultipleDelim.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testMultipleDelim()
{
EnhancedStringTokenizer est = new EnhancedStringTokenizer( "1 2|3|4", " |", true );
- assertEquals( "Token 1", "1", est.nextToken() );
- assertEquals( "Token 2", " ", est.nextToken() );
- assertEquals( "Token 3", "2", est.nextToken() );
- assertEquals( "Token 4", "|", est.nextToken() );
- assertEquals( "Token 5", "3", est.nextToken() );
- assertEquals( "Token 6", "|", est.nextToken() );
- assertEquals( "Token 7", "4", est.nextToken() );
- assertEquals( "est.hasMoreTokens()", false, est.hasMoreTokens() );
+ assertEquals( "1", est.nextToken(), "Token 1" );
+ assertEquals( " ", est.nextToken(), "Token 2" );
+ assertEquals( "2", est.nextToken(), "Token 3" );
+ assertEquals( "|", est.nextToken(), "Token 4" );
+ assertEquals( "3", est.nextToken(), "Token 5" );
+ assertEquals( "|", est.nextToken(), "Token 6" );
+ assertEquals( "4", est.nextToken(), "Token 7" );
+ assertFalse( est.hasMoreTokens(), "est.hasMoreTokens()" );
}
/**
* testEmptyString.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testEmptyString()
{
EnhancedStringTokenizer est = new EnhancedStringTokenizer( "" );
- assertEquals( "est.hasMoreTokens()", false, est.hasMoreTokens() );
+ assertFalse( est.hasMoreTokens(), "est.hasMoreTokens()" );
try
{
est.nextToken();
@@ -119,12 +120,12 @@ public void testEmptyString()
/**
* testSimpleString.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testSimpleString()
{
EnhancedStringTokenizer est = new EnhancedStringTokenizer( "a " );
- assertEquals( "Token 1", "a", est.nextToken() );
- assertEquals( "Token 2", "", est.nextToken() );
- assertEquals( "est.hasMoreTokens()", false, est.hasMoreTokens() );
+ assertEquals( "a", est.nextToken(), "Token 1" );
+ assertEquals( "", est.nextToken(), "Token 2" );
+ assertFalse( est.hasMoreTokens(), "est.hasMoreTokens()" );
}
}
diff --git a/src/test/java/org/codehaus/plexus/util/cli/StreamPumperTest.java b/src/test/java/org/codehaus/plexus/util/cli/StreamPumperTest.java
index eec5def5..f96ebf41 100644
--- a/src/test/java/org/codehaus/plexus/util/cli/StreamPumperTest.java
+++ b/src/test/java/org/codehaus/plexus/util/cli/StreamPumperTest.java
@@ -52,9 +52,9 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.ByteArrayInputStream;
import java.io.IOException;
@@ -64,7 +64,7 @@
import java.util.ArrayList;
import java.util.List;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/**
* StreamPumperTest class.
@@ -100,7 +100,7 @@ public void testPumping()
/**
* testPumpingWithPrintWriter.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testPumpingWithPrintWriter()
{
String inputString = "This a test string";
@@ -125,7 +125,7 @@ public void testPumperReadsInputStreamUntilEndEvenIfConsumerFails()
GeneratorInputStream gis = new GeneratorInputStream( 1024 * 1024 * 4 );
StreamPumper pumper = new StreamPumper( gis, new FailingConsumer() );
pumper.run();
- assertEquals( "input stream was not fully consumed, producer deadlocks", gis.size, gis.read );
+ assertEquals( gis.size, gis.read, "input stream was not fully consumed, producer deadlocks" );
assertTrue( gis.closed );
assertNotNull( pumper.getException() );
}
@@ -237,7 +237,7 @@ public void consumeLine( String line )
/**
* testEnabled.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testEnabled()
{
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream( "AB\nCE\nEF".getBytes() );
diff --git a/src/test/java/org/codehaus/plexus/util/cli/shell/BourneShellTest.java b/src/test/java/org/codehaus/plexus/util/cli/shell/BourneShellTest.java
index 1480685f..d008188c 100644
--- a/src/test/java/org/codehaus/plexus/util/cli/shell/BourneShellTest.java
+++ b/src/test/java/org/codehaus/plexus/util/cli/shell/BourneShellTest.java
@@ -17,15 +17,15 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Arrays;
import java.util.List;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.cli.Commandline;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/**
* BourneShellTest class.
@@ -50,7 +50,7 @@ protected Shell newShell()
/**
* testQuoteWorkingDirectoryAndExecutable.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testQuoteWorkingDirectoryAndExecutable()
{
Shell sh = newShell();
@@ -82,7 +82,7 @@ public void testQuoteWorkingDirectoryAndExecutable_WDPathWithSingleQuotes()
/**
* testQuoteWorkingDirectoryAndExecutable_WDPathWithSingleQuotes_BackslashFileSep.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testQuoteWorkingDirectoryAndExecutable_WDPathWithSingleQuotes_BackslashFileSep()
{
Shell sh = newShell();
diff --git a/src/test/java/org/codehaus/plexus/util/dag/CycleDetectedExceptionTest.java b/src/test/java/org/codehaus/plexus/util/dag/CycleDetectedExceptionTest.java
index 5c67eb3f..771bc99f 100644
--- a/src/test/java/org/codehaus/plexus/util/dag/CycleDetectedExceptionTest.java
+++ b/src/test/java/org/codehaus/plexus/util/dag/CycleDetectedExceptionTest.java
@@ -16,13 +16,13 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.ArrayList;
import java.util.List;
-import org.junit.Test;
-
/**
* CycleDetectedExceptionTest class.
*
diff --git a/src/test/java/org/codehaus/plexus/util/dag/CycleDetectorTest.java b/src/test/java/org/codehaus/plexus/util/dag/CycleDetectorTest.java
index 76a9c1ff..bd086e7e 100644
--- a/src/test/java/org/codehaus/plexus/util/dag/CycleDetectorTest.java
+++ b/src/test/java/org/codehaus/plexus/util/dag/CycleDetectorTest.java
@@ -16,15 +16,15 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import org.junit.jupiter.api.Test;
-import java.util.List;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
-import org.junit.Test;
+import java.util.List;
/**
* CycleDetectorTest class.
@@ -85,13 +85,13 @@ public void testCycyleDetection()
final List cycle = e.getCycle();
- assertNotNull( "Cycle should be not null", cycle );
+ assertNotNull( cycle, "Cycle should be not null" );
- assertTrue( "Cycle contains 'a'", cycle.contains( "a" ) );
+ assertTrue( cycle.contains( "a" ), "Cycle contains 'a'" );
- assertTrue( "Cycle contains 'b'", cycle.contains( "b" ) );
+ assertTrue( cycle.contains( "b" ), "Cycle contains 'b'" );
- assertTrue( "Cycle contains 'c'", cycle.contains( "c" ) );
+ assertTrue( cycle.contains( "c" ), "Cycle contains 'c'" );
}
@@ -144,15 +144,15 @@ public void testCycyleDetection()
{
final List cycle = e.getCycle();
- assertNotNull( "Cycle should be not null", cycle );
+ assertNotNull( cycle, "Cycle should be not null" );
- assertEquals( "Cycle contains 'a'", "a", (String) cycle.get( 0 ) );
+ assertEquals( "a", (String) cycle.get( 0 ), "Cycle contains 'a'" );
- assertEquals( "Cycle contains 'b'", "b", cycle.get( 1 ) );
+ assertEquals( "b", cycle.get( 1 ), "Cycle contains 'b'" );
- assertEquals( "Cycle contains 'c'", "c", cycle.get( 2 ) );
+ assertEquals( "c", cycle.get( 2 ), "Cycle contains 'c'" );
- assertEquals( "Cycle contains 'a'", "a", (String) cycle.get( 3 ) );
+ assertEquals( "a", (String) cycle.get( 3 ), "Cycle contains 'a'" );
}
// f --> g --> h
@@ -191,33 +191,33 @@ public void testCycyleDetection()
{
final List cycle = e.getCycle();
- assertNotNull( "Cycle should be not null", cycle );
+ assertNotNull( cycle, "Cycle should be not null" );
- assertEquals( "Cycle contains 5 elements", 5, cycle.size() );
+ assertEquals( 5, cycle.size(), "Cycle contains 5 elements" );
- assertEquals( "Cycle contains 'b'", "b", (String) cycle.get( 0 ) );
+ assertEquals( "b", (String) cycle.get( 0 ), "Cycle contains 'b'" );
- assertEquals( "Cycle contains 'c'", "c", cycle.get( 1 ) );
+ assertEquals( "c", cycle.get( 1 ), "Cycle contains 'c'" );
- assertEquals( "Cycle contains 'd'", "d", cycle.get( 2 ) );
+ assertEquals( "d", cycle.get( 2 ), "Cycle contains 'd'" );
- assertEquals( "Cycle contains 'e'", "e", (String) cycle.get( 3 ) );
+ assertEquals( "e", (String) cycle.get( 3 ), "Cycle contains 'e'" );
- assertEquals( "Cycle contains 'b'", "b", (String) cycle.get( 4 ) );
+ assertEquals( "b", (String) cycle.get( 4 ), "Cycle contains 'b'" );
- assertTrue( "Edge exists", dag5.hasEdge( "a", "b" ) );
+ assertTrue( dag5.hasEdge( "a", "b" ), "Edge exists" );
- assertTrue( "Edge exists", dag5.hasEdge( "b", "c" ) );
+ assertTrue( dag5.hasEdge( "b", "c" ), "Edge exists" );
- assertTrue( "Edge exists", dag5.hasEdge( "b", "f" ) );
+ assertTrue( dag5.hasEdge( "b", "f" ), "Edge exists" );
- assertTrue( "Edge exists", dag5.hasEdge( "f", "g" ) );
+ assertTrue( dag5.hasEdge( "f", "g" ), "Edge exists" );
- assertTrue( "Edge exists", dag5.hasEdge( "g", "h" ) );
+ assertTrue( dag5.hasEdge( "g", "h" ), "Edge exists" );
- assertTrue( "Edge exists", dag5.hasEdge( "c", "d" ) );
+ assertTrue( dag5.hasEdge( "c", "d" ), "Edge exists" );
- assertTrue( "Edge exists", dag5.hasEdge( "d", "e" ) );
+ assertTrue( dag5.hasEdge( "d", "e" ), "Edge exists" );
assertFalse( dag5.hasEdge( "e", "b" ) );
}
diff --git a/src/test/java/org/codehaus/plexus/util/dag/DAGTest.java b/src/test/java/org/codehaus/plexus/util/dag/DAGTest.java
index bf0063eb..8918755a 100644
--- a/src/test/java/org/codehaus/plexus/util/dag/DAGTest.java
+++ b/src/test/java/org/codehaus/plexus/util/dag/DAGTest.java
@@ -16,15 +16,15 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/**
* DAGTest class.
diff --git a/src/test/java/org/codehaus/plexus/util/dag/TopologicalSorterTest.java b/src/test/java/org/codehaus/plexus/util/dag/TopologicalSorterTest.java
index 25ea5b54..5f6615c2 100644
--- a/src/test/java/org/codehaus/plexus/util/dag/TopologicalSorterTest.java
+++ b/src/test/java/org/codehaus/plexus/util/dag/TopologicalSorterTest.java
@@ -16,12 +16,12 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.ArrayList;
import java.util.List;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
/**
* TopologicalSorterTest class.
@@ -60,7 +60,7 @@ public void testDfs()
final List actual1 = TopologicalSorter.sort( dag1 );
- assertEquals( "Order is different then expected", expected1, actual1 );
+ assertEquals( expected1, actual1, "Order is different then expected" );
//
// a <-- b <---c
@@ -88,7 +88,7 @@ public void testDfs()
final List actual2 = TopologicalSorter.sort( dag2 );
- assertEquals( "Order is different then expected", expected2, actual2 );
+ assertEquals( expected2, actual2, "Order is different then expected" );
//
// a --> b --> c --> e
@@ -145,7 +145,7 @@ public void testDfs()
final List actual3 = TopologicalSorter.sort( dag3 );
- assertEquals( "Order is different then expected", expected3, actual3 );
+ assertEquals( expected3, actual3, "Order is different then expected" );
//
// a --> b --> c --> e
@@ -198,6 +198,6 @@ public void testDfs()
final List actual4 = TopologicalSorter.sort( dag4 );
- assertEquals( "Order is different then expected", expected4, actual4 );
+ assertEquals( expected4, actual4, "Order is different then expected" );
}
}
diff --git a/src/test/java/org/codehaus/plexus/util/dag/VertexTest.java b/src/test/java/org/codehaus/plexus/util/dag/VertexTest.java
index db49acd2..5a911425 100644
--- a/src/test/java/org/codehaus/plexus/util/dag/VertexTest.java
+++ b/src/test/java/org/codehaus/plexus/util/dag/VertexTest.java
@@ -16,9 +16,9 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
+import org.junit.jupiter.api.Test;
-import org.junit.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* VertexTest class.
diff --git a/src/test/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractorTest.java b/src/test/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractorTest.java
index 44533bfa..a4244e34 100644
--- a/src/test/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractorTest.java
+++ b/src/test/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractorTest.java
@@ -17,18 +17,18 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
/**
* ReflectionValueExtractorTest class.
@@ -46,7 +46,7 @@ public class ReflectionValueExtractorTest
*
* @throws java.lang.Exception if any.
*/
- @Before
+ @BeforeEach
public void setUp()
throws Exception
{
@@ -180,7 +180,7 @@ public void testValueExtractorWithAInvalidExpression()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testMappedDottedKey()
throws Exception
{
@@ -228,7 +228,7 @@ public void testMappedIndexed()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testMappedMissingDot()
throws Exception
{
@@ -289,7 +289,7 @@ public void testBadIndexedSyntax()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testBadMappedSyntax()
throws Exception
{
@@ -308,7 +308,7 @@ public void testBadMappedSyntax()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testIllegalIndexedType()
throws Exception
{
diff --git a/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java b/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java
index e7888ad4..c57dbf8c 100644
--- a/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java
+++ b/src/test/java/org/codehaus/plexus/util/io/CachingOutputStreamTest.java
@@ -24,14 +24,14 @@
import java.nio.file.attribute.FileTime;
import java.util.Objects;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.BeforeEach;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
public class CachingOutputStreamTest
{
@@ -39,7 +39,7 @@ public class CachingOutputStreamTest
Path tempDir;
Path checkLastModified;
- @Before
+ @BeforeEach
public void setup() throws IOException
{
Path dir = Paths.get( "target/io" );
diff --git a/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java b/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java
index a4ffec91..b8a8f4b1 100644
--- a/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java
+++ b/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java
@@ -24,13 +24,13 @@
import java.nio.file.attribute.FileTime;
import java.util.Objects;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
public class CachingWriterTest
{
@@ -38,7 +38,7 @@ public class CachingWriterTest
Path tempDir;
Path checkLastModified;
- @Before
+ @BeforeEach
public void setup() throws IOException
{
Path dir = Paths.get( "target/io" );
diff --git a/src/test/java/org/codehaus/plexus/util/reflection/ReflectorTest.java b/src/test/java/org/codehaus/plexus/util/reflection/ReflectorTest.java
index d3c0db8c..9c892b35 100644
--- a/src/test/java/org/codehaus/plexus/util/reflection/ReflectorTest.java
+++ b/src/test/java/org/codehaus/plexus/util/reflection/ReflectorTest.java
@@ -16,10 +16,10 @@
* limitations under the License.
*/
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
/**
* ReflectorTest class.
@@ -39,7 +39,7 @@ public class ReflectorTest
*
* @throws java.lang.Exception if any.
*/
- @Before
+ @BeforeEach
public void setUp()
throws Exception
{
@@ -67,7 +67,7 @@ public void testObjectPropertyFromName()
*
* @throws java.lang.Exception if any.
*/
- @Test
+ @org.junit.jupiter.api.Test
public void testObjectPropertyFromBean()
throws Exception
{
From 3bd741ddc1cc870969633b825b3b40559c75d418 Mon Sep 17 00:00:00 2001
From: Guillaume Nodet
Date: Mon, 22 May 2023 11:40:23 +0200
Subject: [PATCH 08/46] Fix false difference detected with
CachingOutputStream/CachingWriter when streams are flushed (#252)
---
.../plexus/util/io/CachingOutputStream.java | 1 +
.../plexus/util/io/CachingWriterTest.java | 27 +++++++++++++++++++
2 files changed, 28 insertions(+)
diff --git a/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java b/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java
index 744e6f06..4bea628a 100644
--- a/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java
+++ b/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java
@@ -123,6 +123,7 @@ private void flushBuffer( ByteBuffer writeBuffer ) throws IOException
{
readBuffer = this.readBuffer;
( ( Buffer ) readBuffer ).clear();
+ readBuffer.limit( len );
}
else
{
diff --git a/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java b/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java
index b8a8f4b1..17026092 100644
--- a/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java
+++ b/src/test/java/org/codehaus/plexus/util/io/CachingWriterTest.java
@@ -17,6 +17,7 @@
*/
import java.io.IOException;
+import java.io.Writer;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -63,6 +64,32 @@ private void waitLastModified() throws IOException, InterruptedException
}
}
+ @Test
+ public void testNoOverwriteWithFlush() throws IOException, InterruptedException
+ {
+ String data = "Hello world!";
+ Path path = tempDir.resolve("file-bigger.txt");
+ assertFalse( Files.exists(path));
+
+ try (Writer w = Files.newBufferedWriter(path, StandardCharsets.UTF_8)) {
+ for (int i = 0; i < 10; i++) {
+ w.write(data);
+ }
+ }
+ FileTime modified = Files.getLastModifiedTime(path);
+
+ waitLastModified();
+
+ try (Writer w = new CachingWriter(path, StandardCharsets.UTF_8)) {
+ for (int i = 0; i < 10; i++) {
+ w.write(data);
+ w.flush();
+ }
+ }
+ FileTime newModified = Files.getLastModifiedTime(path);
+ assertEquals(modified, newModified);
+ }
+
@Test
public void testWriteNoExistingFile() throws IOException, InterruptedException
{
From 14ac2e1dbfaadbc4579a80b16e83aed0ac474cbc Mon Sep 17 00:00:00 2001
From: Guillaume Nodet
Date: Mon, 22 May 2023 16:37:43 +0200
Subject: [PATCH 09/46] Fix non contiguous imports (#255)
---
src/main/java/org/codehaus/plexus/util/PropertyUtils.java | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/main/java/org/codehaus/plexus/util/PropertyUtils.java b/src/main/java/org/codehaus/plexus/util/PropertyUtils.java
index cee5cd25..210cb3a6 100644
--- a/src/main/java/org/codehaus/plexus/util/PropertyUtils.java
+++ b/src/main/java/org/codehaus/plexus/util/PropertyUtils.java
@@ -1,7 +1,5 @@
package org.codehaus.plexus.util;
-import java.util.Objects;
-
/*
* Copyright The Codehaus Foundation.
*
@@ -18,6 +16,7 @@
* limitations under the License.
*/
+import java.util.Objects;
import java.util.Properties;
import java.io.File;
import java.io.InputStream;
From 0a84396e95bba615544d7ee5e9e12a240f21dc9b Mon Sep 17 00:00:00 2001
From: Guillaume Nodet
Date: Mon, 22 May 2023 16:37:56 +0200
Subject: [PATCH 10/46] Fix SCM information (#254)
---
pom.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index 9efd9fa2..dc953499 100644
--- a/pom.xml
+++ b/pom.xml
@@ -34,10 +34,10 @@ limitations under the License.
- 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
+ scm:git:https://github.com/codehaus-plexus/plexus-utils.git
+ ${project.scm.connection}
master
+ https://github.com/codehaus-plexus/plexus-utils/tree/master/
github
From 43153089d0a5f879f43e9161114cba6a5508af18 Mon Sep 17 00:00:00 2001
From: Guillaume Nodet
Date: Wed, 19 Apr 2023 13:26:33 +0200
Subject: [PATCH 11/46] Update to parent 13
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index dc953499..a84e1cc1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@ limitations under the License.
org.codehaus.plexus
plexus
- 10
+ 13
plexus-utils
From 968a069aeb3fae38f55e8ec5e420dc4daea99ea9 Mon Sep 17 00:00:00 2001
From: Guillaume Nodet
Date: Wed, 17 May 2023 08:03:28 +0200
Subject: [PATCH 12/46] Reformat using spotless:apply
---
pom.xml | 83 +-
.../codehaus/plexus/util/AbstractScanner.java | 221 ++-
.../java/org/codehaus/plexus/util/Base64.java | 230 +--
.../codehaus/plexus/util/BaseFileUtils.java | 18 +-
.../org/codehaus/plexus/util/BaseIOUtil.java | 15 +-
.../org/codehaus/plexus/util/CachedMap.java | 174 +-
.../codehaus/plexus/util/CollectionUtils.java | 125 +-
.../plexus/util/DirectoryScanner.java | 329 ++--
.../plexus/util/DirectoryWalkListener.java | 11 +-
.../codehaus/plexus/util/DirectoryWalker.java | 260 ++-
.../codehaus/plexus/util/ExceptionUtils.java | 391 ++---
.../java/org/codehaus/plexus/util/Expand.java | 95 +-
.../org/codehaus/plexus/util/FastMap.java | 514 +++---
.../org/codehaus/plexus/util/FileUtils.java | 1373 ++++++----------
.../java/org/codehaus/plexus/util/IOUtil.java | 359 ++--
.../util/InterpolationFilterReader.java | 157 +-
.../util/LineOrientedInterpolatingReader.java | 290 ++--
.../codehaus/plexus/util/MatchPattern.java | 113 +-
.../codehaus/plexus/util/MatchPatterns.java | 65 +-
.../org/codehaus/plexus/util/NioFiles.java | 111 +-
.../java/org/codehaus/plexus/util/Os.java | 250 ++-
.../org/codehaus/plexus/util/PathTool.java | 251 ++-
.../codehaus/plexus/util/PropertyUtils.java | 37 +-
.../codehaus/plexus/util/ReaderFactory.java | 74 +-
.../codehaus/plexus/util/ReflectionUtils.java | 134 +-
.../org/codehaus/plexus/util/Scanner.java | 9 +-
.../codehaus/plexus/util/SelectorUtils.java | 496 +++---
.../plexus/util/StringInputStream.java | 38 +-
.../plexus/util/StringOutputStream.java | 25 +-
.../org/codehaus/plexus/util/StringUtils.java | 1296 ++++++---------
.../org/codehaus/plexus/util/SweeperPool.java | 181 +--
.../org/codehaus/plexus/util/TypeFormat.java | 679 +++-----
.../codehaus/plexus/util/WriterFactory.java | 56 +-
.../util/cli/AbstractStreamHandler.java | 24 +-
.../org/codehaus/plexus/util/cli/Arg.java | 9 +-
.../plexus/util/cli/CommandLineCallable.java | 9 +-
.../plexus/util/cli/CommandLineException.java | 14 +-
.../util/cli/CommandLineTimeOutException.java | 15 +-
.../plexus/util/cli/CommandLineUtils.java | 427 ++---
.../codehaus/plexus/util/cli/Commandline.java | 466 ++----
.../plexus/util/cli/DefaultConsumer.java | 16 +-
.../util/cli/EnhancedStringTokenizer.java | 82 +-
.../plexus/util/cli/ShutdownHookUtils.java | 37 +-
.../plexus/util/cli/StreamConsumer.java | 9 +-
.../plexus/util/cli/StreamFeeder.java | 84 +-
.../plexus/util/cli/StreamPumper.java | 122 +-
.../plexus/util/cli/WriterStreamConsumer.java | 14 +-
.../plexus/util/cli/shell/BourneShell.java | 92 +-
.../plexus/util/cli/shell/CmdShell.java | 24 +-
.../plexus/util/cli/shell/CommandShell.java | 12 +-
.../codehaus/plexus/util/cli/shell/Shell.java | 251 ++-
.../util/dag/CycleDetectedException.java | 29 +-
.../plexus/util/dag/CycleDetector.java | 85 +-
.../org/codehaus/plexus/util/dag/DAG.java | 131 +-
.../plexus/util/dag/TopologicalSorter.java | 57 +-
.../org/codehaus/plexus/util/dag/Vertex.java | 73 +-
.../plexus/util/introspection/ClassMap.java | 263 ++-
.../plexus/util/introspection/MethodMap.java | 215 +--
.../ReflectionValueExtractor.java | 238 ++-
.../plexus/util/io/CachingOutputStream.java | 139 +-
.../plexus/util/io/CachingWriter.java | 29 +-
.../plexus/util/io/InputStreamFacade.java | 6 +-
.../plexus/util/io/RawInputStreamFacade.java | 13 +-
.../plexus/util/io/URLInputStreamFacade.java | 11 +-
.../plexus/util/reflection/Reflector.java | 474 +++---
.../util/reflection/ReflectorException.java | 27 +-
.../plexus/util/AbstractTestThread.java | 104 +-
.../plexus/util/CollectionUtilsTest.java | 193 ++-
.../plexus/util/DirectoryScannerTest.java | 636 ++++----
.../plexus/util/DirectoryWalkerTest.java | 26 +-
.../plexus/util/FileBasedTestCase.java | 182 +--
.../codehaus/plexus/util/FileUtilsTest.java | 1441 ++++++++---------
.../org/codehaus/plexus/util/IOUtilTest.java | 444 +++--
.../util/InterpolationFilterReaderTest.java | 120 +-
.../LineOrientedInterpolatingReaderTest.java | 91 +-
.../plexus/util/MatchPatternTest.java | 29 +-
.../plexus/util/MatchPatternsTest.java | 15 +-
.../java/org/codehaus/plexus/util/OsTest.java | 60 +-
.../codehaus/plexus/util/PathToolTest.java | 143 +-
.../org/codehaus/plexus/util/PerfTest.java | 29 +-
.../plexus/util/ReflectionUtilsTest.java | 64 +-
.../plexus/util/SelectorUtilsTest.java | 102 +-
.../codehaus/plexus/util/StringUtilsTest.java | 273 ++--
.../codehaus/plexus/util/SweeperPoolTest.java | 112 +-
.../plexus/util/TestThreadManager.java | 77 +-
.../java/org/codehaus/plexus/util/Tracer.java | 15 +-
.../codehaus/plexus/util/WalkCollector.java | 33 +-
.../plexus/util/cli/CommandLineUtilsTest.java | 108 +-
.../plexus/util/cli/CommandlineTest.java | 540 +++---
.../plexus/util/cli/DefaultConsumerTest.java | 10 +-
.../util/cli/EnhancedStringTokenizerTest.java | 111 +-
.../plexus/util/cli/StreamPumperTest.java | 131 +-
.../util/cli/shell/BourneShellTest.java | 235 ++-
.../util/dag/CycleDetectedExceptionTest.java | 22 +-
.../plexus/util/dag/CycleDetectorTest.java | 150 +-
.../org/codehaus/plexus/util/dag/DAGTest.java | 149 +-
.../util/dag/TopologicalSorterTest.java | 133 +-
.../codehaus/plexus/util/dag/VertexTest.java | 29 +-
.../ReflectionValueExtractorTest.java | 414 ++---
.../util/io/CachingOutputStreamTest.java | 126 +-
.../plexus/util/io/CachingWriterTest.java | 118 +-
.../plexus/util/reflection/ReflectorTest.java | 48 +-
102 files changed, 7336 insertions(+), 11134 deletions(-)
diff --git a/pom.xml b/pom.xml
index a84e1cc1..ef9ce4bc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,5 +1,4 @@
-
-
4.0.0
@@ -30,8 +28,7 @@ limitations under the License.
Plexus Common Utilities
A collection of various utility classes to ease working with strings, files, command lines and
- more.
-
+ more.
scm:git:https://github.com/codehaus-plexus/plexus-utils.git
@@ -71,14 +68,14 @@ limitations under the License.
- oss.snapshots
- https://oss.sonatype.org/content/repositories/plexus-snapshots/
-
- true
-
false
+
+ true
+
+ oss.snapshots
+ https://oss.sonatype.org/content/repositories/plexus-snapshots/
@@ -112,15 +109,17 @@ limitations under the License.
org.apache.maven.plugins
maven-scm-publish-plugin
- ${project.reporting.outputDirectory}
+ ${project.reporting.outputDirectory}
+
scm-publish
- site-deploy
+
publish-scm
+ site-deploy
@@ -180,8 +179,8 @@ limitations under the License.
9
${project.basedir}/src/main/java9
-
- true
+
+ true
@@ -210,8 +209,8 @@ limitations under the License.
10
${project.basedir}/src/main/java10
-
- true
+
+ true
@@ -221,35 +220,35 @@ limitations under the License.
- jdk11+
-
- [11,)
-
-
-
-
-
- maven-compiler-plugin
-
-
- compile-java-11
-
- compile
-
-
- 11
-
- ${project.basedir}/src/main/java11
+ jdk11+
+
+ [11,)
+
+
+
+
+
+ maven-compiler-plugin
+
+
+ compile-java-11
+
+ compile
+
+
+ 11
+
+ ${project.basedir}/src/main/java11
true
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
plexus-release
diff --git a/src/main/java/org/codehaus/plexus/util/AbstractScanner.java b/src/main/java/org/codehaus/plexus/util/AbstractScanner.java
index 16d64ef9..a10f43c7 100644
--- a/src/main/java/org/codehaus/plexus/util/AbstractScanner.java
+++ b/src/main/java/org/codehaus/plexus/util/AbstractScanner.java
@@ -24,9 +24,7 @@
/**
* Scan a directory tree for files, with specified inclusions and exclusions.
*/
-public abstract class AbstractScanner
- implements Scanner
-{
+public abstract class AbstractScanner implements Scanner {
/**
* Patterns which should be excluded by default, like SCM files
*
@@ -54,16 +52,24 @@ public abstract class AbstractScanner
*/
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",
@@ -72,13 +78,16 @@ public abstract class AbstractScanner
"**/project.pj",
// Subversion
- "**/.svn", "**/.svn/**",
+ "**/.svn",
+ "**/.svn/**",
// Arch
- "**/.arch-ids", "**/.arch-ids/**",
+ "**/.arch-ids",
+ "**/.arch-ids/**",
// Bazaar
- "**/.bzr", "**/.bzr/**",
+ "**/.bzr",
+ "**/.bzr/**",
// SurroundSCM
"**/.MySCMServerInfo",
@@ -87,19 +96,31 @@ public abstract class AbstractScanner
"**/.DS_Store",
// Serena Dimensions Version 10
- "**/.metadata", "**/.metadata/**",
+ "**/.metadata",
+ "**/.metadata/**",
// Mercurial
- "**/.hg", "**/.hg/**",
+ "**/.hg",
+ "**/.hg/**",
// git
- "**/.git", "**/.git/**",
+ "**/.git",
+ "**/.git/**",
// BitKeeper
- "**/BitKeeper", "**/BitKeeper/**", "**/ChangeSet", "**/ChangeSet/**",
+ "**/BitKeeper",
+ "**/BitKeeper/**",
+ "**/ChangeSet",
+ "**/ChangeSet/**",
// darcs
- "**/_darcs", "**/_darcs/**", "**/.darcsrepo", "**/.darcsrepo/**", "**/-darcs-backup*", "**/.darcs-temp-mail" };
+ "**/_darcs",
+ "**/_darcs/**",
+ "**/.darcsrepo",
+ "**/.darcsrepo/**",
+ "**/-darcs-backup*",
+ "**/.darcs-temp-mail"
+ };
/**
* The patterns for the files to be included.
@@ -130,8 +151,7 @@ public abstract class AbstractScanner
*
* @param isCaseSensitive whether or not the file system should be regarded as a case sensitive one
*/
- public void setCaseSensitive( boolean isCaseSensitive )
- {
+ public void setCaseSensitive(boolean isCaseSensitive) {
this.isCaseSensitive = isCaseSensitive;
}
@@ -145,9 +165,8 @@ public void setCaseSensitive( boolean isCaseSensitive )
* @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 );
+ protected static boolean matchPatternStart(String pattern, String str) {
+ return SelectorUtils.matchPatternStart(pattern, str);
}
/**
@@ -161,9 +180,8 @@ protected static boolean matchPatternStart( String pattern, String str )
* @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 )
- {
- return SelectorUtils.matchPatternStart( pattern, str, isCaseSensitive );
+ protected static boolean matchPatternStart(String pattern, String str, boolean isCaseSensitive) {
+ return SelectorUtils.matchPatternStart(pattern, str, isCaseSensitive);
}
/**
@@ -173,9 +191,8 @@ protected static boolean matchPatternStart( String pattern, String str, boolean
* @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 );
+ protected static boolean matchPath(String pattern, String str) {
+ return SelectorUtils.matchPath(pattern, str);
}
/**
@@ -186,9 +203,8 @@ protected static boolean matchPath( String pattern, String str )
* @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 )
- {
- return SelectorUtils.matchPath( pattern, str, isCaseSensitive );
+ protected static boolean matchPath(String pattern, String str, boolean isCaseSensitive) {
+ return SelectorUtils.matchPath(pattern, str, isCaseSensitive);
}
/**
@@ -200,9 +216,8 @@ protected static boolean matchPath( String pattern, String str, boolean isCaseSe
* @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 );
+ public static boolean match(String pattern, String str) {
+ return SelectorUtils.match(pattern, str);
}
/**
@@ -215,9 +230,8 @@ public static boolean match( String pattern, String str )
* @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 )
- {
- return SelectorUtils.match( pattern, str, isCaseSensitive );
+ protected static boolean match(String pattern, String str, boolean isCaseSensitive) {
+ return SelectorUtils.match(pattern, str, isCaseSensitive);
}
/**
@@ -230,23 +244,17 @@ protected static boolean match( String pattern, String str, boolean isCaseSensit
* included. If a non-null
list is given, all elements must be non-null
.
*/
@Override
- public void setIncludes( String[] includes )
- {
- if ( includes == null )
- {
+ public void setIncludes(String[] includes) {
+ if (includes == null) {
this.includes = null;
- }
- else
- {
- final List list = new ArrayList( includes.length );
- for ( String include : includes )
- {
- if ( include != null )
- {
- list.add( normalizePattern( include ) );
+ } else {
+ final List list = new ArrayList(includes.length);
+ for (String include : includes) {
+ if (include != null) {
+ list.add(normalizePattern(include));
}
}
- this.includes = list.toArray( new String[0] );
+ this.includes = list.toArray(new String[0]);
}
}
@@ -260,23 +268,17 @@ public void setIncludes( String[] includes )
* excluded. If a non-null
list is given, all elements must be non-null
.
*/
@Override
- public void setExcludes( String[] excludes )
- {
- if ( excludes == null )
- {
+ public void setExcludes(String[] excludes) {
+ if (excludes == null) {
this.excludes = null;
- }
- else
- {
- final List list = new ArrayList( excludes.length );
- for ( String exclude : excludes )
- {
- if ( exclude != null )
- {
- list.add( normalizePattern( exclude ) );
+ } else {
+ final List list = new ArrayList(excludes.length);
+ for (String exclude : excludes) {
+ if (exclude != null) {
+ list.add(normalizePattern(exclude));
}
}
- this.excludes = list.toArray( new String[0] );
+ this.excludes = list.toArray(new String[0]);
}
}
@@ -286,27 +288,19 @@ public void setExcludes( String[] excludes )
* @param pattern The pattern to normalize, must not be null
.
* @return The normalized pattern, never null
.
*/
- private String normalizePattern( String pattern )
- {
+ private String normalizePattern(String pattern) {
pattern = pattern.trim();
- if ( pattern.startsWith( SelectorUtils.REGEX_HANDLER_PREFIX ) )
- {
- if ( File.separatorChar == '\\' )
- {
- pattern = StringUtils.replace( pattern, "/", "\\\\" );
+ if (pattern.startsWith(SelectorUtils.REGEX_HANDLER_PREFIX)) {
+ if (File.separatorChar == '\\') {
+ pattern = StringUtils.replace(pattern, "/", "\\\\");
+ } else {
+ pattern = StringUtils.replace(pattern, "\\\\", "/");
}
- else
- {
- pattern = StringUtils.replace( pattern, "\\\\", "/" );
- }
- }
- else
- {
- pattern = pattern.replace( File.separatorChar == '/' ? '\\' : '/', File.separatorChar );
+ } else {
+ pattern = pattern.replace(File.separatorChar == '/' ? '\\' : '/', File.separatorChar);
- if ( pattern.endsWith( File.separator ) )
- {
+ if (pattern.endsWith(File.separator)) {
pattern += "**";
}
}
@@ -321,19 +315,16 @@ private String normalizePattern( String pattern )
* @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) {
+ return includesPatterns.matches(name, isCaseSensitive);
}
- protected boolean isIncluded( String name, String[] tokenizedName )
- {
- return includesPatterns.matches( name, tokenizedName, 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 );
+ protected boolean isIncluded(String name, char[][] tokenizedName) {
+ return includesPatterns.matches(name, tokenizedName, isCaseSensitive);
}
/**
@@ -343,9 +334,8 @@ protected boolean isIncluded( String name, char[][] tokenizedName )
* @return true
when the name matches against the start of at least one include pattern, or
* false
otherwise.
*/
- protected boolean couldHoldIncluded( String name )
- {
- return includesPatterns.matchesPatternStart( name, isCaseSensitive );
+ protected boolean couldHoldIncluded(String name) {
+ return includesPatterns.matchesPatternStart(name, isCaseSensitive);
}
/**
@@ -355,64 +345,53 @@ protected boolean couldHoldIncluded( String name )
* @return true
when the name matches against at least one exclude pattern, or false
* otherwise.
*/
- protected boolean isExcluded( String name )
- {
- return excludesPatterns.matches( name, isCaseSensitive );
+ protected boolean isExcluded(String name) {
+ return excludesPatterns.matches(name, isCaseSensitive);
}
- protected boolean isExcluded( String name, String[] tokenizedName )
- {
- return excludesPatterns.matches( name, tokenizedName, 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 );
+ 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()
- {
+ public void addDefaultExcludes() {
int excludesLength = excludes == null ? 0 : excludes.length;
String[] newExcludes;
newExcludes = new String[excludesLength + DEFAULTEXCLUDES.length];
- if ( excludesLength > 0 )
- {
- System.arraycopy( excludes, 0, newExcludes, 0, excludesLength );
+ if (excludesLength > 0) {
+ System.arraycopy(excludes, 0, newExcludes, 0, excludesLength);
}
- for ( int i = 0; i < DEFAULTEXCLUDES.length; i++ )
- {
- newExcludes[i + excludesLength] = DEFAULTEXCLUDES[i].replace( '/', File.separatorChar );
+ for (int i = 0; i < DEFAULTEXCLUDES.length; i++) {
+ newExcludes[i + excludesLength] = DEFAULTEXCLUDES[i].replace('/', File.separatorChar);
}
excludes = newExcludes;
}
- protected void setupDefaultFilters()
- {
- if ( includes == null )
- {
+ protected void setupDefaultFilters() {
+ if (includes == null) {
// No includes supplied, so set it to 'matches all'
includes = new String[1];
includes[0] = "**";
}
- if ( excludes == null )
- {
+ if (excludes == null) {
excludes = new String[0];
}
}
- protected void setupMatchPatterns()
- {
- includesPatterns = MatchPatterns.from( includes );
- excludesPatterns = MatchPatterns.from( excludes );
+ protected void setupMatchPatterns() {
+ includesPatterns = MatchPatterns.from(includes);
+ excludesPatterns = MatchPatterns.from(excludes);
}
@Override
- public void setFilenameComparator( Comparator filenameComparator )
- {
+ 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 120feb8f..e574a287 100644
--- a/src/main/java/org/codehaus/plexus/util/Base64.java
+++ b/src/main/java/org/codehaus/plexus/util/Base64.java
@@ -28,8 +28,7 @@
* @since 1.0-dev
*
*/
-public class Base64
-{
+public class Base64 {
//
// Source Id: Base64.java 161350 2005-04-14 20:39:46Z ggregory
@@ -121,41 +120,33 @@ 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) '+';
@@ -168,18 +159,12 @@ 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;
}
}
@@ -191,22 +176,18 @@ else if ( octect < 0 || base64Alphabet[octect] == -1 )
* @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 ( byte anArrayOctect : arrayOctect )
- {
- if ( !isBase64( anArrayOctect ) )
- {
+ for (byte anArrayOctect : arrayOctect) {
+ if (!isBase64(anArrayOctect)) {
return false;
}
}
@@ -219,9 +200,8 @@ public static boolean isArrayByteBase64( byte[] arrayOctect )
* @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);
}
/**
@@ -230,9 +210,8 @@ public static byte[] encodeBase64( byte[] binaryData )
* @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);
}
/**
@@ -241,9 +220,8 @@ public static byte[] encodeBase64Chunked( byte[] binaryData )
* @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);
}
/**
@@ -253,8 +231,7 @@ public byte[] decode( byte[] pArray )
* @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;
@@ -262,13 +239,10 @@ public static byte[] encodeBase64( byte[] binaryData, boolean isChunked )
int encodedDataLength = 0;
int nbrChunks = 0;
- if ( fewerThan24bits != 0 )
- {
+ if (fewerThan24bits != 0) {
// data not divisible by 24 bit
- encodedDataLength = ( numberTriplets + 1 ) * 4;
- }
- else
- {
+ encodedDataLength = (numberTriplets + 1) * 4;
+ } else {
// 16 or 8 bit
encodedDataLength = numberTriplets * 4;
}
@@ -276,10 +250,9 @@ 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;
}
@@ -294,8 +267,7 @@ public static byte[] encodeBase64( byte[] binaryData, boolean isChunked )
int chunksSoFar = 0;
// log.debug("number of triplets = " + numberTriplets);
- for ( i = 0; i < numberTriplets; i++ )
- {
+ for (i = 0; i < numberTriplets; i++) {
dataIndex = i * 3;
b1 = binaryData[dataIndex];
b2 = binaryData[dataIndex + 1];
@@ -303,33 +275,30 @@ public static byte[] encodeBase64( byte[] binaryData, boolean isChunked )
// 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];
+ 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 );
+ nextSeparatorIndex = (CHUNK_SIZE * (chunksSoFar + 1)) + (chunksSoFar * CHUNK_SEPARATOR.length);
encodedIndex += CHUNK_SEPARATOR.length;
}
}
@@ -338,42 +307,41 @@ 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 );
+ 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 );
+ 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);
}
}
@@ -386,14 +354,12 @@ else if ( fewerThan24bits == SIXTEENBIT )
* @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];
}
@@ -409,18 +375,15 @@ 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];
@@ -428,28 +391,23 @@ public static byte[] decodeBase64( byte[] base64Data )
b1 = base64Alphabet[base64Data[dataIndex]];
b2 = base64Alphabet[base64Data[dataIndex + 1]];
- if ( marker0 != PAD && marker1 != PAD )
- {
+ 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 )
- {
+ 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 )
- {
+ 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;
}
@@ -462,15 +420,12 @@ else if ( marker1 == PAD )
* @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 ( byte aData : data )
- {
- switch ( aData )
- {
+ for (byte aData : data) {
+ switch (aData) {
case (byte) ' ':
case (byte) '\n':
case (byte) '\r':
@@ -483,7 +438,7 @@ static byte[] discardWhitespace( byte[] data )
byte packedData[] = new byte[bytesCopied];
- System.arraycopy( groomedData, 0, packedData, 0, bytesCopied );
+ System.arraycopy(groomedData, 0, packedData, 0, bytesCopied);
return packedData;
}
@@ -495,22 +450,19 @@ static byte[] discardWhitespace( byte[] 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 ( byte aData : data )
- {
- if ( isBase64( aData ) )
- {
+ 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;
}
@@ -521,9 +473,7 @@ static byte[] discardNonBase64( byte[] data )
* @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/BaseFileUtils.java b/src/main/java/org/codehaus/plexus/util/BaseFileUtils.java
index 0a3803d5..beb5e16d 100644
--- a/src/main/java/org/codehaus/plexus/util/BaseFileUtils.java
+++ b/src/main/java/org/codehaus/plexus/util/BaseFileUtils.java
@@ -4,22 +4,18 @@
import java.nio.file.Files;
import java.nio.file.OpenOption;
import java.nio.file.Path;
-import java.nio.file.StandardOpenOption;
/**
* Implementation specific to Java SE 8 version.
*/
-abstract class BaseFileUtils
-{
- static String fileRead( Path path, String encoding ) throws IOException
- {
- byte[] bytes = Files.readAllBytes( path );
- return encoding != null ? new String( bytes, encoding ) : new String( bytes );
+abstract class BaseFileUtils {
+ static String fileRead(Path path, String encoding) throws IOException {
+ byte[] bytes = Files.readAllBytes(path);
+ return encoding != null ? new String(bytes, encoding) : new String(bytes);
}
- static void fileWrite( Path path, String encoding, String data, OpenOption... openOptions ) throws IOException
- {
- byte[] bytes = encoding != null ? data.getBytes( encoding ) : data.getBytes();
- Files.write( path, bytes, openOptions );
+ static void fileWrite(Path path, String encoding, String data, OpenOption... openOptions) throws IOException {
+ byte[] bytes = encoding != null ? data.getBytes(encoding) : data.getBytes();
+ Files.write(path, bytes, openOptions);
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/BaseIOUtil.java b/src/main/java/org/codehaus/plexus/util/BaseIOUtil.java
index ac2ade02..ab391c87 100644
--- a/src/main/java/org/codehaus/plexus/util/BaseIOUtil.java
+++ b/src/main/java/org/codehaus/plexus/util/BaseIOUtil.java
@@ -9,19 +9,14 @@
/**
* Implementation specific to Java SE 8 version.
*/
-abstract class BaseIOUtil
-{
+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 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 );
+ 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 c77d2180..6c78dce0 100644
--- a/src/main/java/org/codehaus/plexus/util/CachedMap.java
+++ b/src/main/java/org/codehaus/plexus/util/CachedMap.java
@@ -38,13 +38,11 @@
*
* This class is public domain (not copyrighted).
*
- *
+ *
* @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).
@@ -80,9 +78,8 @@ public final class CachedMap
* 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());
}
/**
@@ -91,9 +88,8 @@ public CachedMap()
* @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));
}
/**
@@ -105,13 +101,11 @@ public CachedMap( int cacheSize )
* 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;
}
@@ -121,20 +115,16 @@ public CachedMap( int cacheSize, Map backingMap )
_mask = actualCacheSize - 1;
// Sets backing map references.
- if ( backingMap instanceof FastMap )
- {
+ if (backingMap instanceof FastMap) {
_backingFastMap = (FastMap) backingMap;
_backingMap = _backingFastMap;
_keysMap = null;
- }
- else
- {
+ } else {
_backingFastMap = null;
_backingMap = backingMap;
- _keysMap = new FastMap( backingMap.size() );
- for ( Object key : backingMap.keySet() )
- {
- _keysMap.put( key, key );
+ _keysMap = new FastMap(backingMap.size());
+ for (Object key : backingMap.keySet()) {
+ _keysMap.put(key, key);
}
}
}
@@ -144,8 +134,7 @@ public CachedMap( int cacheSize, Map backingMap )
*
* @return the cache size (power of 2).
*/
- public int getCacheSize()
- {
+ public int getCacheSize() {
return _keys.length;
}
@@ -155,28 +144,23 @@ public int getCacheSize()
* @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.
*/
- 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 ( Object key : _backingMap.keySet() )
- {
- _keysMap.put( key, key );
+ for (Object key : _backingMap.keySet()) {
+ _keysMap.put(key, key);
}
}
}
@@ -192,41 +176,30 @@ public void flush()
* @throws NullPointerException if the key is null
.
*/
@Override
- public Object get( Object key )
- {
+ 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;
}
}
@@ -245,21 +218,17 @@ private Object getCacheMissed( Object key, int index )
* @throws NullPointerException if the key is null
.
*/
@Override
- public Object put( Object key, Object value )
- {
+ 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);
}
/**
@@ -272,21 +241,18 @@ else if ( _keysMap != null )
* @throws UnsupportedOperationException if the remove
method is not supported by the backing map.
*/
@Override
- public Object remove( Object key )
- {
+ 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);
}
/**
@@ -296,17 +262,13 @@ public Object remove( Object key )
* @return true
if this map contains a mapping for the specified key; false
otherwise.
*/
@Override
- public boolean containsKey( Object key )
- {
+ 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);
}
}
@@ -317,8 +279,7 @@ public boolean containsKey( Object key )
* @return the number of key-value mappings in this map.
*/
@Override
- public int size()
- {
+ public int size() {
return _backingMap.size();
}
@@ -328,8 +289,7 @@ public int size()
* @return true
if this map contains no key-value mappings.
*/
@Override
- public boolean isEmpty()
- {
+ public boolean isEmpty() {
return _backingMap.isEmpty();
}
@@ -343,9 +303,8 @@ public boolean isEmpty()
* null
values.
*/
@Override
- public boolean containsValue( Object value )
- {
- return _backingMap.containsValue( value );
+ public boolean containsValue(Object value) {
+ return _backingMap.containsValue(value);
}
/**
@@ -362,9 +321,8 @@ public boolean containsValue( Object value )
* null
keys or values, and the specified map contains null
keys or values.
*/
@Override
- public void putAll( Map map )
- {
- _backingMap.putAll( map );
+ public void putAll(Map map) {
+ _backingMap.putAll(map);
flush();
}
@@ -374,8 +332,7 @@ public void putAll( Map map )
* @throws UnsupportedOperationException if clear is not supported by the backing map.
*/
@Override
- public void clear()
- {
+ public void clear() {
_backingMap.clear();
flush();
}
@@ -386,9 +343,8 @@ public void clear()
* @return an unmodifiable view of the keys contained in this map.
*/
@Override
- public Set keySet()
- {
- return Collections.unmodifiableSet( _backingMap.keySet() );
+ public Set keySet() {
+ return Collections.unmodifiableSet(_backingMap.keySet());
}
/**
@@ -397,9 +353,8 @@ public Set keySet()
* @return an unmodifiable view of the values contained in this map.
*/
@Override
- public Collection values()
- {
- return Collections.unmodifiableCollection( _backingMap.values() );
+ public Collection values() {
+ return Collections.unmodifiableCollection(_backingMap.values());
}
/**
@@ -409,9 +364,8 @@ public Collection values()
* @return an unmodifiable view of the mappings contained in this map.
*/
@Override
- public Set entrySet()
- {
- return Collections.unmodifiableSet( _backingMap.entrySet() );
+ public Set entrySet() {
+ return Collections.unmodifiableSet(_backingMap.entrySet());
}
/**
@@ -422,9 +376,8 @@ public Set entrySet()
* @return true
if the specified object is equal to this map.
*/
@Override
- public boolean equals( Object o )
- {
- return _backingMap.equals( o );
+ public boolean equals(Object o) {
+ return _backingMap.equals(o);
}
/**
@@ -433,8 +386,7 @@ public boolean equals( Object o )
* @return the hash code value for this map.
*/
@Override
- public int hashCode()
- {
+ public int hashCode() {
return _backingMap.hashCode();
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/CollectionUtils.java b/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
index b16200fd..c966d8ff 100644
--- a/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
+++ b/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
@@ -30,8 +30,7 @@
* @author olamy
*
*/
-public class CollectionUtils
-{
+public class CollectionUtils {
// ----------------------------------------------------------------------
// Static methods that can probably be moved to a real util class.
// ----------------------------------------------------------------------
@@ -48,21 +47,17 @@ public class CollectionUtils
* @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 )
- {
+ if (dominantMap == null && recessiveMap == null) {
return null;
}
- if ( dominantMap != null && recessiveMap == null )
- {
+ if (dominantMap != null && recessiveMap == null) {
return dominantMap;
}
- if ( dominantMap == null )
- {
+ if (dominantMap == null) {
return recessiveMap;
}
@@ -75,17 +70,15 @@ public static Map mergeMaps( Map dominantMap, Map reces
// 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 =
- CollectionUtils.subtract( recessiveMapKeys,
- CollectionUtils.intersection( dominantMapKeys, recessiveMapKeys ) );
+ Collection contributingRecessiveKeys = CollectionUtils.subtract(
+ recessiveMapKeys, CollectionUtils.intersection(dominantMapKeys, recessiveMapKeys));
- result.putAll( dominantMap );
+ result.putAll(dominantMap);
// Now take the keys we just found and extract the values from
// the recessiveMap and put the key:value pairs into the dominantMap.
- for ( K key : contributingRecessiveKeys )
- {
- result.put( key, recessiveMap.get( key ) );
+ for (K key : contributingRecessiveKeys) {
+ result.put(key, recessiveMap.get(key));
}
return result;
@@ -100,25 +93,18 @@ public static Map mergeMaps( Map dominantMap, Map reces
* @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;
- if ( maps.length == 0 )
- {
+ if (maps.length == 0) {
result = null;
- }
- else if ( maps.length == 1 )
- {
+ } else if (maps.length == 1) {
result = maps[0];
- }
- else
- {
- result = mergeMaps( maps[0], maps[1] );
+ } else {
+ result = mergeMaps(maps[0], maps[1]);
- for ( int i = 2; i < maps.length; i++ )
- {
- result = mergeMaps( result, maps[i] );
+ for (int i = 2; i < maps.length; i++) {
+ result = mergeMaps(result, maps[i]);
}
}
@@ -138,18 +124,15 @@ else if ( maps.length == 1 )
* @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 );
- elts.addAll( b );
- for ( E obj : elts )
- {
- for ( int i = 0, m = Math.min( getFreq( obj, mapa ), getFreq( obj, mapb ) ); i < m; i++ )
- {
- list.add( obj );
+ Map mapa = getCardinalityMap(a);
+ Map mapb = getCardinalityMap(b);
+ Set elts = new HashSet<>(a);
+ elts.addAll(b);
+ for (E obj : elts) {
+ for (int i = 0, m = Math.min(getFreq(obj, mapa), getFreq(obj, mapb)); i < m; i++) {
+ list.add(obj);
}
}
return list;
@@ -166,12 +149,10 @@ public static Collection intersection( final Collection a, final Colle
* @see Collection#removeAll
* @return The result of the subtraction
*/
- public static Collection subtract( final Collection a, final Collection b )
- {
- ArrayList list = new ArrayList<>( a );
- for ( T aB : b )
- {
- list.remove( aB );
+ public static Collection subtract(final Collection a, final Collection b) {
+ ArrayList list = new ArrayList<>(a);
+ for (T aB : b) {
+ list.remove(aB);
}
return list;
}
@@ -180,41 +161,33 @@ public static Collection subtract( final Collection a, final Collectio
* 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<>();
- for ( E obj : col )
- {
- Integer c = count.get( obj );
- if ( null == c )
- {
- count.put( obj, 1 );
- }
- else
- {
- count.put( obj, c + 1 );
+ for (E obj : col) {
+ Integer c = count.get(obj);
+ if (null == c) {
+ count.put(obj, 1);
+ } else {
+ count.put(obj, c + 1);
}
}
return count;
}
- public static List iteratorToList( Iterator it )
- {
- if ( it == null )
- {
- throw new NullPointerException( "it cannot be null." );
+ public static List iteratorToList(Iterator it) {
+ if (it == null) {
+ throw new NullPointerException("it cannot be null.");
}
List list = new ArrayList();
- while ( it.hasNext() )
- {
- list.add( it.next() );
+ while (it.hasNext()) {
+ list.add(it.next());
}
return list;
@@ -224,18 +197,14 @@ public static List iteratorToList( Iterator it )
//
// ----------------------------------------------------------------------
- private static int getFreq( final E obj, final Map freqMap )
- {
- try
- {
- Integer o = freqMap.get( obj );
- if ( o != null ) // minimize NullPointerExceptions
+ private static int getFreq(final E obj, final Map freqMap) {
+ try {
+ Integer o = freqMap.get(obj);
+ if (o != null) // minimize NullPointerExceptions
{
return o;
}
- }
- catch ( NullPointerException | NoSuchElementException ignore )
- {
+ } catch (NullPointerException | NoSuchElementException ignore) {
}
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 5db6a903..64fd8994 100644
--- a/src/main/java/org/codehaus/plexus/util/DirectoryScanner.java
+++ b/src/main/java/org/codehaus/plexus/util/DirectoryScanner.java
@@ -61,39 +61,39 @@
/**
* 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.separator
s 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.
- *
+ *
* Examples:
*
* - "**\*.class" matches all .class files/dirs in a directory tree.
@@ -103,7 +103,7 @@
* - "**\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.
* Example of usage:
*
@@ -122,7 +122,7 @@
* System.out.println( files[i] );
* }
*
- *
+ *
* This will scan a directory called test for .class files, but excludes all files in all proper subdirectories of a
* directory called "modules"
*
@@ -131,9 +131,7 @@
* @author Bruce Atherton
* @author Antoine Levy-Lambert
*/
-public class DirectoryScanner
- extends AbstractScanner
-{
+public class DirectoryScanner extends AbstractScanner {
private static final String[] EMPTY_STRING_ARRAY = new String[0];
@@ -199,14 +197,12 @@ public class DirectoryScanner
*/
protected boolean everythingIncluded = true;
- private final char[][] tokenizedEmpty = MatchPattern.tokenizePathToCharArray( "", File.separator );
+ private final char[][] tokenizedEmpty = MatchPattern.tokenizePathToCharArray("", File.separator);
/**
* Sole constructor.
*/
- public DirectoryScanner()
- {
- }
+ public DirectoryScanner() {}
/**
* Sets the base directory to be scanned. This is the directory which is scanned recursively. All '/' and '\'
@@ -215,9 +211,8 @@ public DirectoryScanner()
*
* @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 ) ) );
+ public void setBasedir(String basedir) {
+ setBasedir(new File(basedir.replace('/', File.separatorChar).replace('\\', File.separatorChar)));
}
/**
@@ -225,8 +220,7 @@ public void setBasedir( String basedir )
*
* @param basedir The base directory for scanning. Should not be null
.
*/
- public void setBasedir( File basedir )
- {
+ public void setBasedir(File basedir) {
this.basedir = basedir;
}
@@ -236,8 +230,7 @@ public void setBasedir( File basedir )
* @return the base directory to be scanned
*/
@Override
- public File getBasedir()
- {
+ public File getBasedir() {
return basedir;
}
@@ -246,8 +239,7 @@ public File getBasedir()
*
* @param followSymlinks whether or not symbolic links should be followed
*/
- public void setFollowSymlinks( boolean followSymlinks )
- {
+ public void setFollowSymlinks(boolean followSymlinks) {
this.followSymlinks = followSymlinks;
}
@@ -256,8 +248,7 @@ public void setFollowSymlinks( boolean followSymlinks )
*
* @return true
if all files and directories which have been found so far have been included.
*/
- public boolean isEverythingIncluded()
- {
+ public boolean isEverythingIncluded() {
return everythingIncluded;
}
@@ -269,20 +260,15 @@ public boolean isEverythingIncluded()
* exist, or isn't a directory).
*/
@Override
- public void scan()
- throws IllegalStateException
- {
- if ( basedir == null )
- {
- throw new IllegalStateException( "No basedir set" );
+ public void scan() throws IllegalStateException {
+ if (basedir == null) {
+ throw new IllegalStateException("No basedir set");
}
- if ( !basedir.exists() )
- {
- throw new IllegalStateException( "basedir " + basedir + " does not exist" );
+ if (!basedir.exists()) {
+ throw new IllegalStateException("basedir " + basedir + " does not exist");
}
- if ( !basedir.isDirectory() )
- {
- throw new IllegalStateException( "basedir " + basedir + " is not a directory" );
+ if (!basedir.isDirectory()) {
+ throw new IllegalStateException("basedir " + basedir + " is not a directory");
}
setupDefaultFilters();
@@ -297,62 +283,47 @@ public void scan()
dirsExcluded = new ArrayList();
dirsDeselected = new ArrayList();
- if ( isIncluded( "", tokenizedEmpty ) )
- {
+ if (isIncluded("", tokenizedEmpty)) {
- if ( !isExcluded( "", tokenizedEmpty ) )
- {
- if ( isSelected( "", basedir ) )
- {
- dirsIncluded.add( "" );
+ if (!isExcluded("", tokenizedEmpty)) {
+ if (isSelected("", basedir)) {
+ dirsIncluded.add("");
+ } else {
+ dirsDeselected.add("");
}
- else
- {
- dirsDeselected.add( "" );
- }
- }
- else
- {
- dirsExcluded.add( "" );
+ } else {
+ dirsExcluded.add("");
}
+ } else {
+ dirsNotIncluded.add("");
}
- else
- {
- dirsNotIncluded.add( "" );
- }
- scandir( basedir, "", true );
+ 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.
*/
- protected void slowScan()
- {
- if ( haveSlowResults )
- {
+ protected void slowScan() {
+ if (haveSlowResults) {
return;
}
- String[] excl = dirsExcluded.toArray( EMPTY_STRING_ARRAY );
- String[] notIncl = dirsNotIncluded.toArray( EMPTY_STRING_ARRAY );
+ String[] excl = dirsExcluded.toArray(EMPTY_STRING_ARRAY);
+ String[] notIncl = dirsNotIncluded.toArray(EMPTY_STRING_ARRAY);
- for ( String anExcl : excl )
- {
- if ( !couldHoldIncluded( anExcl ) )
- {
- scandir( new File( basedir, anExcl ), anExcl + File.separator, false );
+ for (String anExcl : excl) {
+ if (!couldHoldIncluded(anExcl)) {
+ scandir(new File(basedir, anExcl), anExcl + File.separator, false);
}
}
- for ( String aNotIncl : notIncl )
- {
- if ( !couldHoldIncluded( aNotIncl ) )
- {
- scandir( new File( basedir, aNotIncl ), aNotIncl + File.separator, false );
+ for (String aNotIncl : notIncl) {
+ if (!couldHoldIncluded(aNotIncl)) {
+ scandir(new File(basedir, aNotIncl), aNotIncl + File.separator, false);
}
}
@@ -376,12 +347,10 @@ protected void slowScan()
* @see #dirsExcluded
* @see #slowScan
*/
- protected void scandir( File dir, String vpath, boolean fast )
- {
+ protected void scandir(File dir, String vpath, boolean fast) {
String[] newfiles = dir.list();
- if ( newfiles == null )
- {
+ 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???)
@@ -401,122 +370,85 @@ protected void scandir( File dir, String vpath, boolean fast )
// throw new IOException( "IO error scanning directory " + dir.getAbsolutePath() );
}
- if ( !followSymlinks )
- {
- try
- {
- if ( isParentSymbolicLink( dir, null ) )
- {
- for ( String newfile : newfiles )
- {
+ if (!followSymlinks) {
+ try {
+ if (isParentSymbolicLink(dir, null)) {
+ for (String newfile : newfiles) {
String name = vpath + newfile;
- File file = new File( dir, newfile );
- if ( file.isDirectory() )
- {
- dirsExcluded.add( name );
- }
- else
- {
- filesExcluded.add( name );
+ File file = new File(dir, newfile);
+ if (file.isDirectory()) {
+ dirsExcluded.add(name);
+ } else {
+ filesExcluded.add(name);
}
}
return;
}
- }
- catch ( IOException ioe )
- {
+ } 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 );
+ System.err.println(msg);
}
}
- if ( filenameComparator != null )
- {
- Arrays.sort( newfiles, filenameComparator );
+ if (filenameComparator != null) {
+ Arrays.sort(newfiles, filenameComparator);
}
- for ( String newfile : newfiles )
- {
+ 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, tokenizedName ) )
- {
- if ( !isExcluded( name, tokenizedName ) )
- {
- if ( isSelected( name, file ) )
- {
- dirsIncluded.add( name );
- if ( fast )
- {
- scandir( file, name + File.separator, fast );
+ char[][] tokenizedName = MatchPattern.tokenizePathToCharArray(name, File.separator);
+ File file = new File(dir, newfile);
+ if (file.isDirectory()) {
+
+ if (isIncluded(name, tokenizedName)) {
+ if (!isExcluded(name, tokenizedName)) {
+ if (isSelected(name, file)) {
+ dirsIncluded.add(name);
+ if (fast) {
+ scandir(file, name + File.separator, fast);
}
- }
- else
- {
+ } else {
everythingIncluded = false;
- dirsDeselected.add( name );
- if ( fast && couldHoldIncluded( name ) )
- {
- scandir( file, name + File.separator, fast );
+ dirsDeselected.add(name);
+ if (fast && couldHoldIncluded(name)) {
+ scandir(file, name + File.separator, fast);
}
}
- }
- else
- {
+ } else {
everythingIncluded = false;
- dirsExcluded.add( name );
- if ( fast && couldHoldIncluded( name ) )
- {
- scandir( file, name + File.separator, fast );
+ dirsExcluded.add(name);
+ if (fast && couldHoldIncluded(name)) {
+ scandir(file, name + File.separator, fast);
}
}
- }
- else
- {
+ } else {
everythingIncluded = false;
- dirsNotIncluded.add( name );
- if ( fast && couldHoldIncluded( name ) )
- {
- scandir( file, name + File.separator, fast );
+ dirsNotIncluded.add(name);
+ if (fast && couldHoldIncluded(name)) {
+ scandir(file, name + File.separator, fast);
}
}
- if ( !fast )
- {
- scandir( file, name + File.separator, fast );
+ if (!fast) {
+ scandir(file, name + File.separator, fast);
}
- }
- else if ( file.isFile() )
- {
- if ( isIncluded( name, tokenizedName ) )
- {
- if ( !isExcluded( name, tokenizedName ) )
- {
- if ( isSelected( name, file ) )
- {
- filesIncluded.add( name );
- }
- else
- {
+ } else if (file.isFile()) {
+ if (isIncluded(name, tokenizedName)) {
+ if (!isExcluded(name, tokenizedName)) {
+ if (isSelected(name, file)) {
+ filesIncluded.add(name);
+ } else {
everythingIncluded = false;
- filesDeselected.add( name );
+ filesDeselected.add(name);
}
- }
- else
- {
+ } else {
everythingIncluded = false;
- filesExcluded.add( name );
+ filesExcluded.add(name);
}
- }
- else
- {
+ } else {
everythingIncluded = false;
- filesNotIncluded.add( name );
+ filesNotIncluded.add(name);
}
}
}
@@ -530,8 +462,7 @@ else if ( file.isFile() )
* @return false
when the selectors says that the file should not be selected, true
* otherwise.
*/
- protected boolean isSelected( String name, File file )
- {
+ protected boolean isSelected(String name, File file) {
return true;
}
@@ -543,9 +474,8 @@ protected boolean isSelected( String name, File file )
* patterns.
*/
@Override
- public String[] getIncludedFiles()
- {
- return filesIncluded.toArray( EMPTY_STRING_ARRAY );
+ public String[] getIncludedFiles() {
+ return filesIncluded.toArray(EMPTY_STRING_ARRAY);
}
/**
@@ -555,10 +485,9 @@ public String[] getIncludedFiles()
* @return the names of the files which matched none of the include patterns.
* @see #slowScan
*/
- public String[] getNotIncludedFiles()
- {
+ public String[] getNotIncludedFiles() {
slowScan();
- return filesNotIncluded.toArray( EMPTY_STRING_ARRAY );
+ return filesNotIncluded.toArray(EMPTY_STRING_ARRAY);
}
/**
@@ -570,25 +499,23 @@ public String[] getNotIncludedFiles()
* exclude patterns.
* @see #slowScan
*/
- public String[] getExcludedFiles()
- {
+ public String[] getExcludedFiles() {
slowScan();
- return filesExcluded.toArray( EMPTY_STRING_ARRAY );
+ 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.
*
* @return the names of the files which were deselected.
* @see #slowScan
*/
- public String[] getDeselectedFiles()
- {
+ public String[] getDeselectedFiles() {
slowScan();
- return filesDeselected.toArray( EMPTY_STRING_ARRAY );
+ return filesDeselected.toArray(EMPTY_STRING_ARRAY);
}
/**
@@ -599,9 +526,8 @@ public String[] getDeselectedFiles()
* patterns.
*/
@Override
- public String[] getIncludedDirectories()
- {
- return dirsIncluded.toArray( EMPTY_STRING_ARRAY );
+ public String[] getIncludedDirectories() {
+ return dirsIncluded.toArray(EMPTY_STRING_ARRAY);
}
/**
@@ -611,10 +537,9 @@ public String[] getIncludedDirectories()
* @return the names of the directories which matched none of the include patterns.
* @see #slowScan
*/
- public String[] getNotIncludedDirectories()
- {
+ public String[] getNotIncludedDirectories() {
slowScan();
- return dirsNotIncluded.toArray( EMPTY_STRING_ARRAY );
+ return dirsNotIncluded.toArray(EMPTY_STRING_ARRAY);
}
/**
@@ -626,30 +551,28 @@ public String[] getNotIncludedDirectories()
* exclude patterns.
* @see #slowScan
*/
- public String[] getExcludedDirectories()
- {
+ public String[] getExcludedDirectories() {
slowScan();
- return dirsExcluded.toArray( EMPTY_STRING_ARRAY );
+ 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.
*
* @return the names of the directories which were deselected.
* @see #slowScan
*/
- public String[] getDeselectedDirectories()
- {
+ public String[] getDeselectedDirectories() {
slowScan();
- return dirsDeselected.toArray( EMPTY_STRING_ARRAY );
+ 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.
*
@@ -660,15 +583,13 @@ public String[] getDeselectedDirectories()
* @throws java.io.IOException .
* @since Ant 1.5
*/
- public boolean isSymbolicLink( File parent, String name )
- throws IOException
- {
- return NioFiles.isSymbolicLink( new File( parent, name ) );
+ public boolean isSymbolicLink(File parent, String name) throws IOException {
+ 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.
*
@@ -678,9 +599,7 @@ public boolean isSymbolicLink( File parent, String name )
* @throws java.io.IOException .
* @since Ant 1.5
*/
- public boolean isParentSymbolicLink( File parent, String name )
- throws IOException
- {
- return NioFiles.isSymbolicLink( parent );
+ 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 8e1fda24..b6c83ef9 100644
--- a/src/main/java/org/codehaus/plexus/util/DirectoryWalkListener.java
+++ b/src/main/java/org/codehaus/plexus/util/DirectoryWalkListener.java
@@ -20,18 +20,17 @@
/**
* Observes the actions of a {@link DirectoryWalker}.
- *
+ *
*
* @see DirectoryWalker
*/
-public interface DirectoryWalkListener
-{
+public interface DirectoryWalkListener {
/**
* The directory walking has begun.
*
* @param basedir the basedir that walk started in.
*/
- void directoryWalkStarting( File basedir );
+ void directoryWalkStarting(File basedir);
/**
* The included entry that was encountered.
@@ -39,12 +38,12 @@ public interface DirectoryWalkListener
* @param percentage rough percentage of the walk completed. (inaccurate)
* @param file the file that was included.
*/
- void directoryWalkStep( int percentage, File file );
+ void directoryWalkStep(int percentage, File file);
/**
* The directory walking has finished.
*/
void directoryWalkFinished();
- void debug( String message );
+ void debug(String message);
}
diff --git a/src/main/java/org/codehaus/plexus/util/DirectoryWalker.java b/src/main/java/org/codehaus/plexus/util/DirectoryWalker.java
index 2ffa4b0a..58142c50 100644
--- a/src/main/java/org/codehaus/plexus/util/DirectoryWalker.java
+++ b/src/main/java/org/codehaus/plexus/util/DirectoryWalker.java
@@ -24,16 +24,14 @@
/**
* DirectoryWalker
- *
+ *
*
*/
-public class DirectoryWalker
-{
+public class DirectoryWalker {
/**
* DirStackEntry is an Item on the {@link DirectoryWalker#dirStack}
*/
- class DirStackEntry
- {
+ class DirStackEntry {
/**
* Count of files in the directory.
*/
@@ -65,8 +63,7 @@ class DirStackEntry
* @param d the directory to track
* @param length the length of entries in the directory.
*/
- public DirStackEntry( File d, int length )
- {
+ public DirStackEntry(File d, int length) {
dir = d;
count = length;
}
@@ -76,9 +73,8 @@ public DirStackEntry( File d, int length )
*
* @return the value for the next percentage offset.
*/
- public double getNextPercentageOffset()
- {
- return percentageOffset + ( index * ( percentageSize / count ) );
+ public double getNextPercentageOffset() {
+ return percentageOffset + (index * (percentageSize / count));
}
/**
@@ -86,9 +82,8 @@ public double getNextPercentageOffset()
*
* @return the value for the next percentage size.
*/
- public double getNextPercentageSize()
- {
- return ( percentageSize / count );
+ public double getNextPercentageSize() {
+ return (percentageSize / count);
}
/**
@@ -96,19 +91,17 @@ public double getNextPercentageSize()
*
* @return the percentage right now.
*/
- public int getPercentage()
- {
+ public int getPercentage() {
double percentageWithinDir = (double) index / (double) count;
- return (int) Math.floor( percentageOffset + ( percentageWithinDir * percentageSize ) );
+ return (int) Math.floor(percentageOffset + (percentageWithinDir * percentageSize));
}
@Override
- public String toString()
- {
+ public String toString() {
return "DirStackEntry[" + "dir=" + dir.getAbsolutePath() + ",count=" + count + ",index=" + index
- + ",percentageOffset=" + percentageOffset + ",percentageSize=" + percentageSize + ",percentage()="
- + getPercentage() + ",getNextPercentageOffset()=" + getNextPercentageOffset()
- + ",getNextPercentageSize()=" + getNextPercentageSize() + "]";
+ + ",percentageOffset=" + percentageOffset + ",percentageSize=" + percentageSize + ",percentage()="
+ + getPercentage() + ",getNextPercentageOffset()=" + getNextPercentageOffset()
+ + ",getNextPercentageSize()=" + getNextPercentageSize() + "]";
}
}
@@ -128,137 +121,111 @@ public String toString()
private boolean debugEnabled = false;
- public DirectoryWalker()
- {
+ public DirectoryWalker() {
includes = new ArrayList();
excludes = new ArrayList();
listeners = new ArrayList();
}
- public void addDirectoryWalkListener( DirectoryWalkListener listener )
- {
- listeners.add( listener );
+ public void addDirectoryWalkListener(DirectoryWalkListener listener) {
+ listeners.add(listener);
}
- public void addExclude( String exclude )
- {
- excludes.add( fixPattern( exclude ) );
+ public void addExclude(String exclude) {
+ excludes.add(fixPattern(exclude));
}
- public void addInclude( String include )
- {
- includes.add( fixPattern( include ) );
+ public void addInclude(String include) {
+ includes.add(fixPattern(include));
}
/**
* Add's to the Exclude List the default list of SCM excludes.
*/
- public void addSCMExcludes()
- {
+ public void addSCMExcludes() {
String scmexcludes[] = AbstractScanner.DEFAULTEXCLUDES;
- for ( String scmexclude : scmexcludes )
- {
- addExclude( scmexclude );
+ for (String scmexclude : scmexcludes) {
+ addExclude(scmexclude);
}
}
- private void fireStep( File file )
- {
+ private void fireStep(File file) {
DirStackEntry dsEntry = dirStack.peek();
int percentage = dsEntry.getPercentage();
- for ( Object listener1 : listeners )
- {
+ for (Object listener1 : listeners) {
DirectoryWalkListener listener = (DirectoryWalkListener) listener1;
- listener.directoryWalkStep( percentage, file );
+ listener.directoryWalkStep(percentage, file);
}
}
- private void fireWalkFinished()
- {
- for ( DirectoryWalkListener listener1 : listeners )
- {
+ private void fireWalkFinished() {
+ for (DirectoryWalkListener listener1 : listeners) {
listener1.directoryWalkFinished();
}
}
- private void fireWalkStarting()
- {
- for ( DirectoryWalkListener listener1 : listeners )
- {
- listener1.directoryWalkStarting( baseDir );
+ private void fireWalkStarting() {
+ for (DirectoryWalkListener listener1 : listeners) {
+ listener1.directoryWalkStarting(baseDir);
}
}
- private void fireDebugMessage( String message )
- {
- for ( DirectoryWalkListener listener1 : listeners )
- {
- listener1.debug( message );
+ private void fireDebugMessage(String message) {
+ for (DirectoryWalkListener listener1 : listeners) {
+ listener1.debug(message);
}
}
- private String fixPattern( String pattern )
- {
+ private String fixPattern(String pattern) {
String cleanPattern = pattern;
- if ( File.separatorChar != '/' )
- {
- cleanPattern = cleanPattern.replace( '/', File.separatorChar );
+ if (File.separatorChar != '/') {
+ cleanPattern = cleanPattern.replace('/', File.separatorChar);
}
- if ( File.separatorChar != '\\' )
- {
- cleanPattern = cleanPattern.replace( '\\', File.separatorChar );
+ if (File.separatorChar != '\\') {
+ cleanPattern = cleanPattern.replace('\\', File.separatorChar);
}
return cleanPattern;
}
- public void setDebugMode( boolean debugEnabled )
- {
+ public void setDebugMode(boolean debugEnabled) {
this.debugEnabled = debugEnabled;
}
/**
* @return Returns the baseDir.
*/
- public File getBaseDir()
- {
+ public File getBaseDir() {
return baseDir;
}
/**
* @return Returns the excludes.
*/
- public List getExcludes()
- {
+ public List getExcludes() {
return excludes;
}
/**
* @return Returns the includes.
*/
- public List getIncludes()
- {
+ public List getIncludes() {
return includes;
}
- private boolean isExcluded( String name )
- {
- return isMatch( excludes, name );
+ private boolean isExcluded(String name) {
+ return isMatch(excludes, name);
}
- private boolean isIncluded( String name )
- {
- return isMatch( includes, name );
+ private boolean isIncluded(String name) {
+ return isMatch(includes, name);
}
- private boolean isMatch( List patterns, String name )
- {
- for ( String pattern1 : patterns )
- {
- if ( SelectorUtils.matchPath( pattern1, name, isCaseSensitive ) )
- {
+ private boolean isMatch(List patterns, String name) {
+ for (String pattern1 : patterns) {
+ if (SelectorUtils.matchPath(pattern1, name, isCaseSensitive)) {
return true;
}
}
@@ -266,9 +233,8 @@ private boolean isMatch( List patterns, String name )
return false;
}
- private String relativeToBaseDir( File file )
- {
- return file.getAbsolutePath().substring( baseDirOffset + 1 );
+ private String relativeToBaseDir(File file) {
+ return file.getAbsolutePath().substring(baseDirOffset + 1);
}
/**
@@ -276,110 +242,90 @@ private String relativeToBaseDir( File file )
*
* @param listener the listener to remove.
*/
- public void removeDirectoryWalkListener( DirectoryWalkListener listener )
- {
- listeners.remove( listener );
+ public void removeDirectoryWalkListener(DirectoryWalkListener listener) {
+ listeners.remove(listener);
}
/**
* Performs a Scan against the provided {@link #setBaseDir(File)}
*/
- public void scan()
- {
- if ( baseDir == null )
- {
- throw new IllegalStateException( "Scan Failure. BaseDir not specified." );
+ public void scan() {
+ if (baseDir == null) {
+ throw new IllegalStateException("Scan Failure. BaseDir not specified.");
}
- if ( !baseDir.exists() )
- {
- throw new IllegalStateException( "Scan Failure. BaseDir does not exist." );
+ if (!baseDir.exists()) {
+ throw new IllegalStateException("Scan Failure. BaseDir does not exist.");
}
- if ( !baseDir.isDirectory() )
- {
- throw new IllegalStateException( "Scan Failure. BaseDir is not a directory." );
+ if (!baseDir.isDirectory()) {
+ throw new IllegalStateException("Scan Failure. BaseDir is not a directory.");
}
- if ( includes.isEmpty() )
- {
+ if (includes.isEmpty()) {
// default to include all.
- addInclude( "**" );
+ addInclude("**");
}
- if ( debugEnabled )
- {
+ if (debugEnabled) {
Iterator it;
StringBuilder dbg = new StringBuilder();
- dbg.append( "DirectoryWalker Scan" );
- dbg.append( "\n Base Dir: " ).append( baseDir.getAbsolutePath() );
- dbg.append( "\n Includes: " );
+ dbg.append("DirectoryWalker Scan");
+ dbg.append("\n Base Dir: ").append(baseDir.getAbsolutePath());
+ dbg.append("\n Includes: ");
it = includes.iterator();
- while ( it.hasNext() )
- {
+ while (it.hasNext()) {
String include = it.next();
- dbg.append( "\n - \"" ).append( include ).append( "\"" );
+ dbg.append("\n - \"").append(include).append("\"");
}
- dbg.append( "\n Excludes: " );
+ dbg.append("\n Excludes: ");
it = excludes.iterator();
- while ( it.hasNext() )
- {
+ while (it.hasNext()) {
String exclude = it.next();
- dbg.append( "\n - \"" ).append( exclude ).append( "\"" );
+ dbg.append("\n - \"").append(exclude).append("\"");
}
- fireDebugMessage( dbg.toString() );
+ fireDebugMessage(dbg.toString());
}
fireWalkStarting();
dirStack = new Stack();
- scanDir( baseDir );
+ scanDir(baseDir);
fireWalkFinished();
}
- private void scanDir( File dir )
- {
+ private void scanDir(File dir) {
File[] files = dir.listFiles();
- if ( files == null )
- {
+ if (files == null) {
return;
}
- DirectoryWalker.DirStackEntry curStackEntry = new DirectoryWalker.DirStackEntry( dir, files.length );
- if ( dirStack.isEmpty() )
- {
+ DirectoryWalker.DirStackEntry curStackEntry = new DirectoryWalker.DirStackEntry(dir, files.length);
+ if (dirStack.isEmpty()) {
curStackEntry.percentageOffset = 0;
curStackEntry.percentageSize = 100;
- }
- else
- {
+ } else {
DirectoryWalker.DirStackEntry previousStackEntry = dirStack.peek();
curStackEntry.percentageOffset = previousStackEntry.getNextPercentageOffset();
curStackEntry.percentageSize = previousStackEntry.getNextPercentageSize();
}
- dirStack.push( curStackEntry );
+ dirStack.push(curStackEntry);
- for ( int idx = 0; idx < files.length; idx++ )
- {
+ for (int idx = 0; idx < files.length; idx++) {
curStackEntry.index = idx;
- String name = relativeToBaseDir( files[idx] );
+ String name = relativeToBaseDir(files[idx]);
- if ( isExcluded( name ) )
- {
- fireDebugMessage( name + " is excluded." );
+ if (isExcluded(name)) {
+ fireDebugMessage(name + " is excluded.");
continue;
}
- if ( files[idx].isDirectory() )
- {
- scanDir( files[idx] );
- }
- else
- {
- if ( isIncluded( name ) )
- {
- fireStep( files[idx] );
+ if (files[idx].isDirectory()) {
+ scanDir(files[idx]);
+ } else {
+ if (isIncluded(name)) {
+ fireStep(files[idx]);
}
}
}
@@ -390,8 +336,7 @@ private void scanDir( File dir )
/**
* @param baseDir The baseDir to set.
*/
- public void setBaseDir( File baseDir )
- {
+ public void setBaseDir(File baseDir) {
this.baseDir = baseDir;
baseDirOffset = baseDir.getAbsolutePath().length();
}
@@ -399,14 +344,11 @@ public void setBaseDir( File baseDir )
/**
* @param entries The excludes to set.
*/
- public void setExcludes( List entries )
- {
+ public void setExcludes(List entries) {
excludes.clear();
- if ( entries != null )
- {
- for ( String entry : entries )
- {
- excludes.add( fixPattern( entry ) );
+ if (entries != null) {
+ for (String entry : entries) {
+ excludes.add(fixPattern(entry));
}
}
}
@@ -414,16 +356,12 @@ public void setExcludes( List entries )
/**
* @param entries The includes to set.
*/
- public void setIncludes( List entries )
- {
+ public void setIncludes(List entries) {
includes.clear();
- if ( entries != null )
- {
- for ( String entry : entries )
- {
- includes.add( fixPattern( entry ) );
+ if (entries != null) {
+ for (String entry : entries) {
+ 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 540dbe98..de4aa5df 100644
--- a/src/main/java/org/codehaus/plexus/util/ExceptionUtils.java
+++ b/src/main/java/org/codehaus/plexus/util/ExceptionUtils.java
@@ -78,8 +78,7 @@
* @since 1.0
*
*/
-public class ExceptionUtils
-{
+public class ExceptionUtils {
/**
* Used when printing stack frames to denote the start of a wrapped exception. Package private for accessibility by
* test suite.
@@ -89,15 +88,21 @@ public class ExceptionUtils
/**
* 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.
*/
- protected ExceptionUtils()
- {
- }
+ protected ExceptionUtils() {}
/**
*
@@ -106,13 +111,11 @@ protected ExceptionUtils()
*
* @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.add( methodName );
- CAUSE_METHOD_NAMES = list.toArray( new String[0] );
+ public static void addCauseMethodName(String methodName) {
+ if (methodName != null && methodName.length() > 0) {
+ List list = new ArrayList(Arrays.asList(CAUSE_METHOD_NAMES));
+ list.add(methodName);
+ CAUSE_METHOD_NAMES = list.toArray(new String[0]);
}
}
@@ -147,9 +150,8 @@ public static void addCauseMethodName( String methodName )
* @return The cause of the Throwable
.
* @throws NullPointerException if the throwable is null
*/
- public static Throwable getCause( Throwable throwable )
- {
- return getCause( throwable, CAUSE_METHOD_NAMES );
+ public static Throwable getCause(Throwable throwable) {
+ return getCause(throwable, CAUSE_METHOD_NAMES);
}
/**
@@ -163,23 +165,18 @@ public static Throwable getCause( Throwable throwable )
* @throws NullPointerException if the method names array is null or contains null
* @throws NullPointerException if the throwable is null
*/
- public static Throwable getCause( Throwable throwable, String[] methodNames )
- {
- Throwable cause = getCauseUsingWellKnownTypes( throwable );
- if ( cause == null )
- {
- for ( String methodName : methodNames )
- {
- cause = getCauseUsingMethodName( throwable, methodName );
- if ( cause != null )
- {
+ public static Throwable getCause(Throwable throwable, String[] methodNames) {
+ Throwable cause = getCauseUsingWellKnownTypes(throwable);
+ if (cause == null) {
+ for (String methodName : methodNames) {
+ cause = getCauseUsingMethodName(throwable, methodName);
+ if (cause != null) {
break;
}
}
- if ( cause == null )
- {
- cause = getCauseUsingFieldName( throwable, "detail" );
+ if (cause == null) {
+ cause = getCauseUsingFieldName(throwable, "detail");
}
}
return cause;
@@ -194,14 +191,11 @@ public static Throwable getCause( Throwable throwable, String[] methodNames )
* @param throwable the throwable to get the root cause for
* @return The root cause of the Throwable
.
*/
- public static Throwable getRootCause( Throwable throwable )
- {
- Throwable cause = getCause( throwable );
- if ( cause != null )
- {
+ public static Throwable getRootCause(Throwable throwable) {
+ Throwable cause = getCause(throwable);
+ if (cause != null) {
throwable = cause;
- while ( ( throwable = getCause( throwable ) ) != null )
- {
+ while ((throwable = getCause(throwable)) != null) {
cause = throwable;
}
}
@@ -217,18 +211,12 @@ public static Throwable getRootCause( Throwable throwable )
* @param throwable the exception to examine
* @return The wrapped exception, or null
if not found.
*/
- private static Throwable getCauseUsingWellKnownTypes( Throwable throwable )
- {
- if ( throwable instanceof SQLException )
- {
- return ( (SQLException) throwable ).getNextException();
- }
- else if ( throwable instanceof InvocationTargetException )
- {
- return ( (InvocationTargetException) throwable ).getTargetException();
- }
- else
- {
+ private static Throwable getCauseUsingWellKnownTypes(Throwable throwable) {
+ if (throwable instanceof SQLException) {
+ return ((SQLException) throwable).getNextException();
+ } else if (throwable instanceof InvocationTargetException) {
+ return ((InvocationTargetException) throwable).getTargetException();
+ } else {
return null;
}
}
@@ -242,34 +230,20 @@ else if ( throwable instanceof InvocationTargetException )
* @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 )
- {
+ private static Throwable getCauseUsingMethodName(Throwable throwable, String methodName) {
Method method = null;
- try
- {
- method = throwable.getClass().getMethod( methodName, null );
- }
- catch ( NoSuchMethodException ignored )
- {
- }
- catch ( SecurityException ignored )
- {
- }
-
- if ( method != null && Throwable.class.isAssignableFrom( method.getReturnType() ) )
- {
- try
- {
- return (Throwable) method.invoke( throwable, new Object[0] );
- }
- catch ( IllegalAccessException ignored )
- {
- }
- catch ( IllegalArgumentException ignored )
- {
- }
- catch ( InvocationTargetException ignored )
- {
+ try {
+ method = throwable.getClass().getMethod(methodName, null);
+ } catch (NoSuchMethodException ignored) {
+ } catch (SecurityException ignored) {
+ }
+
+ if (method != null && Throwable.class.isAssignableFrom(method.getReturnType())) {
+ try {
+ return (Throwable) method.invoke(throwable, new Object[0]);
+ } catch (IllegalAccessException ignored) {
+ } catch (IllegalArgumentException ignored) {
+ } catch (InvocationTargetException ignored) {
}
}
return null;
@@ -284,31 +258,19 @@ private static Throwable getCauseUsingMethodName( Throwable throwable, String me
* @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 )
- {
+ private static Throwable getCauseUsingFieldName(Throwable throwable, String fieldName) {
Field field = null;
- try
- {
- field = throwable.getClass().getField( fieldName );
- }
- catch ( NoSuchFieldException ignored )
- {
- }
- catch ( SecurityException ignored )
- {
+ try {
+ field = throwable.getClass().getField(fieldName);
+ } catch (NoSuchFieldException ignored) {
+ } catch (SecurityException ignored) {
}
- if ( field != null && Throwable.class.isAssignableFrom( field.getType() ) )
- {
- try
- {
- return (Throwable) field.get( throwable );
- }
- catch ( IllegalAccessException ignored )
- {
- }
- catch ( IllegalArgumentException ignored )
- {
+ if (field != null && Throwable.class.isAssignableFrom(field.getType())) {
+ try {
+ return (Throwable) field.get(throwable);
+ } catch (IllegalAccessException ignored) {
+ } catch (IllegalArgumentException ignored) {
}
}
return null;
@@ -322,14 +284,12 @@ private static Throwable getCauseUsingFieldName( Throwable throwable, String fie
* @param throwable the exception to inspect
* @return The throwable count.
*/
- public static int getThrowableCount( Throwable throwable )
- {
+ public static int getThrowableCount(Throwable throwable) {
// Count the number of throwables
int count = 0;
- while ( throwable != null )
- {
+ while (throwable != null) {
count++;
- throwable = ExceptionUtils.getCause( throwable );
+ throwable = ExceptionUtils.getCause(throwable);
}
return count;
}
@@ -342,15 +302,13 @@ public static int getThrowableCount( Throwable throwable )
* @param throwable the exception to inspect
* @return The list of Throwable
objects.
*/
- public static Throwable[] getThrowables( Throwable throwable )
- {
+ public static Throwable[] getThrowables(Throwable throwable) {
List list = new ArrayList<>();
- while ( throwable != null )
- {
- list.add( throwable );
- throwable = getCause( throwable );
+ while (throwable != null) {
+ list.add(throwable);
+ throwable = getCause(throwable);
}
- return list.toArray( new Throwable[0] );
+ return list.toArray(new Throwable[0]);
}
/**
@@ -363,9 +321,8 @@ public static Throwable[] getThrowables( Throwable throwable )
* @return index of the stack matching the type
* @see #indexOfThrowable(Throwable, Class, int)
*/
- public static int indexOfThrowable( Throwable throwable, Class type )
- {
- return indexOfThrowable( throwable, type, 0 );
+ public static int indexOfThrowable(Throwable throwable, Class type) {
+ return indexOfThrowable(throwable, type, 0);
}
/**
@@ -382,21 +339,16 @@ public static int indexOfThrowable( Throwable throwable, Class type )
* @throws IndexOutOfBoundsException If the fromIndex
argument is negative or not less than the count
* of Throwable
s in the chain.
*/
- public static int indexOfThrowable( Throwable throwable, Class type, int fromIndex )
- {
- if ( fromIndex < 0 )
- {
- throw new IndexOutOfBoundsException( "Throwable index out of range: " + fromIndex );
+ public static int indexOfThrowable(Throwable throwable, Class type, int fromIndex) {
+ if (fromIndex < 0) {
+ throw new IndexOutOfBoundsException("Throwable index out of range: " + fromIndex);
}
- Throwable[] throwables = ExceptionUtils.getThrowables( throwable );
- if ( fromIndex >= throwables.length )
- {
- throw new IndexOutOfBoundsException( "Throwable index out of range: " + fromIndex );
+ Throwable[] throwables = ExceptionUtils.getThrowables(throwable);
+ if (fromIndex >= throwables.length) {
+ throw new IndexOutOfBoundsException("Throwable index out of range: " + fromIndex);
}
- for ( int i = fromIndex; i < throwables.length; i++ )
- {
- if ( throwables[i].getClass().equals( type ) )
- {
+ for (int i = fromIndex; i < throwables.length; i++) {
+ if (throwables[i].getClass().equals(type)) {
return i;
}
}
@@ -412,12 +364,10 @@ public static int indexOfThrowable( Throwable throwable, Class type, int fromInd
* @param t the exception
* @param stream the stream
*/
- public static void printRootCauseStackTrace( Throwable t, PrintStream stream )
- {
- String trace[] = getRootCauseStackTrace( t );
- for ( String aTrace : trace )
- {
- stream.println( aTrace );
+ public static void printRootCauseStackTrace(Throwable t, PrintStream stream) {
+ String trace[] = getRootCauseStackTrace(t);
+ for (String aTrace : trace) {
+ stream.println(aTrace);
}
stream.flush();
}
@@ -426,9 +376,8 @@ public static void printRootCauseStackTrace( Throwable t, PrintStream stream )
* Equivalent to printRootCauseStackTrace(t, System.err)
* @param t the exception
*/
- public static void printRootCauseStackTrace( Throwable t )
- {
- printRootCauseStackTrace( t, System.err );
+ public static void printRootCauseStackTrace(Throwable t) {
+ printRootCauseStackTrace(t, System.err);
}
/**
@@ -436,12 +385,10 @@ public static void printRootCauseStackTrace( Throwable t )
* @param t the cause
* @param writer the writer
*/
- public static void printRootCauseStackTrace( Throwable t, PrintWriter writer )
- {
- String trace[] = getRootCauseStackTrace( t );
- for ( String aTrace : trace )
- {
- writer.println( aTrace );
+ public static void printRootCauseStackTrace(Throwable t, PrintWriter writer) {
+ String trace[] = getRootCauseStackTrace(t);
+ for (String aTrace : trace) {
+ writer.println(aTrace);
}
writer.flush();
}
@@ -452,34 +399,27 @@ public static void printRootCauseStackTrace( Throwable t, PrintWriter writer )
* @param t the cause
* @return the Stack
*/
- public static String[] getRootCauseStackTrace( Throwable t )
- {
- Throwable[] throwables = getThrowables( t );
+ public static String[] getRootCauseStackTrace(Throwable t) {
+ Throwable[] throwables = getThrowables(t);
int count = throwables.length;
ArrayList frames = new ArrayList<>();
- List nextTrace = getStackFrameList( throwables[count - 1] );
- for ( int i = count; --i >= 0; )
- {
+ List nextTrace = getStackFrameList(throwables[count - 1]);
+ for (int i = count; --i >= 0; ) {
List trace = nextTrace;
- if ( i != 0 )
- {
- nextTrace = getStackFrameList( throwables[i - 1] );
- removeCommonFrames( trace, nextTrace );
+ if (i != 0) {
+ nextTrace = getStackFrameList(throwables[i - 1]);
+ removeCommonFrames(trace, nextTrace);
}
- if ( i == ( count - 1 ) )
- {
- frames.add( throwables[i].toString() );
+ if (i == (count - 1)) {
+ frames.add(throwables[i].toString());
+ } else {
+ frames.add(WRAPPED_MARKER + throwables[i].toString());
}
- else
- {
- frames.add( WRAPPED_MARKER + throwables[i].toString() );
- }
- for ( String aTrace : trace )
- {
- frames.add( aTrace );
+ for (String aTrace : trace) {
+ frames.add(aTrace);
}
}
- return frames.toArray( new String[0] );
+ return frames.toArray(new String[0]);
}
/**
@@ -488,19 +428,16 @@ public static String[] getRootCauseStackTrace( Throwable t )
* @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;
- while ( causeFrameIndex >= 0 && wrapperFrameIndex >= 0 )
- {
+ while (causeFrameIndex >= 0 && wrapperFrameIndex >= 0) {
// Remove the frame from the cause trace if it is the same
// as in the wrapper trace
- String causeFrame = causeFrames.get( causeFrameIndex );
- String wrapperFrame = wrapperFrames.get( wrapperFrameIndex );
- if ( causeFrame.equals( wrapperFrame ) )
- {
- causeFrames.remove( causeFrameIndex );
+ String causeFrame = causeFrames.get(causeFrameIndex);
+ String wrapperFrame = wrapperFrames.get(wrapperFrameIndex);
+ if (causeFrame.equals(wrapperFrame)) {
+ causeFrames.remove(causeFrameIndex);
}
causeFrameIndex--;
wrapperFrameIndex--;
@@ -513,11 +450,10 @@ private static void removeCommonFrames( List causeFrames, List w
* @param t The Throwable
.
* @return The stack trace as generated by the exception's printStackTrace(PrintWriter)
method.
*/
- public static String getStackTrace( Throwable t )
- {
+ public static String getStackTrace(Throwable t) {
StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter( sw, true );
- t.printStackTrace( pw );
+ PrintWriter pw = new PrintWriter(sw, true);
+ t.printStackTrace(pw);
return sw.getBuffer().toString();
}
@@ -527,16 +463,13 @@ public static String getStackTrace( Throwable t )
* @param t The Throwable
.
* @return The nested stack trace, with the root cause first.
*/
- public static String getFullStackTrace( Throwable t )
- {
+ public static String getFullStackTrace(Throwable t) {
StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter( sw, true );
- Throwable[] ts = getThrowables( t );
- for ( Throwable t1 : ts )
- {
- t1.printStackTrace( pw );
- if ( isNestedThrowable( t1 ) )
- {
+ PrintWriter pw = new PrintWriter(sw, true);
+ Throwable[] ts = getThrowables(t);
+ for (Throwable t1 : ts) {
+ t1.printStackTrace(pw);
+ if (isNestedThrowable(t1)) {
break;
}
}
@@ -549,53 +482,35 @@ public static String getFullStackTrace( Throwable t )
* @param throwable The Throwable
.
* @return boolean true/false
*/
- public static boolean isNestedThrowable( Throwable throwable )
- {
- if ( throwable == null )
- {
+ public static boolean isNestedThrowable(Throwable throwable) {
+ if (throwable == null) {
return false;
}
- if ( throwable instanceof SQLException )
- {
+ if (throwable instanceof SQLException) {
return true;
- }
- else if ( throwable instanceof InvocationTargetException )
- {
+ } else if (throwable instanceof InvocationTargetException) {
return true;
}
- for ( String CAUSE_METHOD_NAME : CAUSE_METHOD_NAMES )
- {
- try
- {
- Method method = throwable.getClass().getMethod( CAUSE_METHOD_NAME, null );
- if ( method != null )
- {
+ for (String CAUSE_METHOD_NAME : CAUSE_METHOD_NAMES) {
+ try {
+ Method method = throwable.getClass().getMethod(CAUSE_METHOD_NAME, null);
+ if (method != null) {
return true;
}
- }
- catch ( NoSuchMethodException ignored )
- {
- }
- catch ( SecurityException ignored )
- {
+ } catch (NoSuchMethodException ignored) {
+ } catch (SecurityException ignored) {
}
}
- try
- {
- Field field = throwable.getClass().getField( "detail" );
- if ( field != null )
- {
+ try {
+ Field field = throwable.getClass().getField("detail");
+ if (field != null) {
return true;
}
- }
- catch ( NoSuchFieldException ignored )
- {
- }
- catch ( SecurityException ignored )
- {
+ } catch (NoSuchFieldException ignored) {
+ } catch (SecurityException ignored) {
}
return false;
@@ -608,24 +523,21 @@ else if ( throwable instanceof InvocationTargetException )
* @param t The Throwable
.
* @return An array of strings describing each stack frame.
*/
- public static String[] getStackFrames( Throwable t )
- {
- return getStackFrames( getStackTrace( t ) );
+ public static String[] getStackFrames(Throwable t) {
+ return getStackFrames(getStackTrace(t));
}
/**
* 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 );
+ static String[] getStackFrames(String stackTrace) {
+ String linebreak = System.getProperty("line.separator");
+ StringTokenizer frames = new StringTokenizer(stackTrace, linebreak);
List list = new LinkedList();
- while ( frames.hasMoreTokens() )
- {
- list.add( frames.nextToken() );
+ while (frames.hasMoreTokens()) {
+ list.add(frames.nextToken());
}
- return list.toArray( new String[0] );
+ return list.toArray(new String[0]);
}
/**
@@ -635,25 +547,20 @@ static String[] getStackFrames( String stackTrace )
* @param t is any throwable
* @return List of stack frames
*/
- static List getStackFrameList( Throwable t )
- {
- String stackTrace = getStackTrace( t );
- String linebreak = System.getProperty( "line.separator" );
- StringTokenizer frames = new StringTokenizer( stackTrace, linebreak );
+ 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();
boolean traceStarted = false;
- while ( frames.hasMoreTokens() )
- {
+ while (frames.hasMoreTokens()) {
String token = frames.nextToken();
// Determine if the line starts with at
- int at = token.indexOf( "at" );
- if ( at != -1 && token.substring( 0, at ).trim().length() == 0 )
- {
+ int at = token.indexOf("at");
+ if (at != -1 && token.substring(0, at).trim().length() == 0) {
traceStarted = true;
- list.add( token );
- }
- else if ( traceStarted )
- {
+ list.add(token);
+ } else if (traceStarted) {
break;
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/Expand.java b/src/main/java/org/codehaus/plexus/util/Expand.java
index 5b195811..8abcdd95 100644
--- a/src/main/java/org/codehaus/plexus/util/Expand.java
+++ b/src/main/java/org/codehaus/plexus/util/Expand.java
@@ -73,12 +73,11 @@
* @since Ant 1.1 @ant.task category="packaging" name="unzip" name="unjar" name="unwar"
*
*/
-public class Expand
-{
+public class Expand {
- private File dest;// req
+ private File dest; // req
- private File source;// req
+ private File source; // req
private boolean overwrite = true;
@@ -87,44 +86,37 @@ public class Expand
*
* @exception Exception Thrown in unrecoverable error.
*/
- public void execute()
- throws Exception
- {
- expandFile( source, dest );
+ public void execute() throws Exception {
+ expandFile(source, dest);
}
- protected void expandFile( final File srcF, final File dir )
- throws Exception
- {
+ protected void expandFile(final File srcF, final File dir) throws Exception {
// code from WarExpand
- try ( ZipInputStream zis = new ZipInputStream( Files.newInputStream( srcF.toPath() ) ) )
- {
- for ( ZipEntry ze = zis.getNextEntry(); ze != null; ze = zis.getNextEntry() )
- {
- extractFile( srcF, dir, zis, ze.getName(), new Date( ze.getTime() ), ze.isDirectory() );
+ try (ZipInputStream zis = new ZipInputStream(Files.newInputStream(srcF.toPath()))) {
+ for (ZipEntry ze = zis.getNextEntry(); ze != null; ze = zis.getNextEntry()) {
+ extractFile(srcF, dir, zis, ze.getName(), new Date(ze.getTime()), ze.isDirectory());
}
- }
- catch ( IOException ioe )
- {
- throw new Exception( "Error while expanding " + srcF.getPath(), ioe );
+ } catch (IOException ioe) {
+ throw new Exception("Error while expanding " + srcF.getPath(), ioe);
}
}
- 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." );
+ 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() )
- {
+ try {
+ if (!overwrite && f.exists() && f.lastModified() >= entryDate.getTime()) {
return;
}
@@ -132,30 +124,23 @@ protected void extractFile( File srcF, File dir, InputStream compressedInputStre
File dirF = f.getParentFile();
dirF.mkdirs();
- if ( isDirectory )
- {
+ if (isDirectory) {
f.mkdirs();
- }
- else
- {
+ } else {
byte[] buffer = new byte[65536];
-
- try ( OutputStream fos = Files.newOutputStream( f.toPath() ) )
- {
- for ( int length = compressedInputStream.read( buffer );
- length >= 0;
- fos.write( buffer, 0, length ), length = compressedInputStream.read( buffer ) )
+
+ try (OutputStream fos = Files.newOutputStream(f.toPath())) {
+ for (int length = compressedInputStream.read(buffer);
+ length >= 0;
+ fos.write(buffer, 0, length), length = compressedInputStream.read(buffer))
;
}
}
- f.setLastModified( entryDate.getTime() );
+ f.setLastModified(entryDate.getTime());
+ } catch (FileNotFoundException ex) {
+ throw new Exception("Can't extract file " + srcF.getPath(), ex);
}
- catch ( FileNotFoundException ex )
- {
- throw new Exception( "Can't extract file " + srcF.getPath(), ex );
- }
-
}
/**
@@ -163,8 +148,7 @@ protected void extractFile( File srcF, File dir, InputStream compressedInputStre
*
* @param d Path to the directory.
*/
- public void setDest( File d )
- {
+ public void setDest(File d) {
this.dest = d;
}
@@ -173,17 +157,14 @@ public void setDest( File d )
*
* @param s Path to zip-file.
*/
- public void setSrc( File s )
- {
+ public void setSrc(File s) {
this.source = s;
}
/**
* @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 )
- {
+ 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 9bb9e82f..54076641 100644
--- a/src/main/java/org/codehaus/plexus/util/FastMap.java
+++ b/src/main/java/org/codehaus/plexus/util/FastMap.java
@@ -49,13 +49,11 @@
*
* This class is public domain (not copyrighted).
*
- *
+ *
* @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.
@@ -95,40 +93,37 @@ public class FastMap
/**
* 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:
- *
+ *
*
* TreeMap dictionary = ...;
* FastMap dictionaryLookup = new FastMap(dictionary);
*
- *
+ *
* @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.
- *
+ *
* @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);
}
/**
@@ -137,8 +132,7 @@ public FastMap( int capacity )
* @return this map's size.
*/
@Override
- public int size()
- {
+ public int size() {
return _size;
}
@@ -148,8 +142,7 @@ public int size()
*
* @return this map's capacity.
*/
- public int capacity()
- {
+ public int capacity() {
return _capacity;
}
@@ -159,8 +152,7 @@ public int capacity()
* @return true
if this map contains no key-value mappings; false
otherwise.
*/
@Override
- public boolean isEmpty()
- {
+ public boolean isEmpty() {
return _size == 0;
}
@@ -172,13 +164,10 @@ public boolean isEmpty()
* @throws NullPointerException if the key is null
.
*/
@Override
- public boolean containsKey( Object key )
- {
- EntryImpl entry = _entries[keyHash( key ) & _mask];
- while ( entry != null )
- {
- if ( key.equals( entry._key ) )
- {
+ public boolean containsKey(Object key) {
+ EntryImpl entry = _entries[keyHash(key) & _mask];
+ while (entry != null) {
+ if (key.equals(entry._key)) {
return true;
}
entry = entry._next;
@@ -194,13 +183,10 @@ public boolean containsKey( Object key )
* @throws NullPointerException if the key is null
.
*/
@Override
- public boolean containsValue( Object value )
- {
+ 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;
@@ -217,13 +203,10 @@ public boolean containsValue( Object value )
* @throws NullPointerException if key is null
.
*/
@Override
- public V get( Object key )
- {
- EntryImpl entry = _entries[keyHash( key ) & _mask];
- while ( entry != null )
- {
- if ( key.equals( entry._key ) )
- {
+ 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;
@@ -233,17 +216,14 @@ public V get( Object 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;
@@ -263,13 +243,10 @@ public Map.Entry getEntry( Object key )
* @throws NullPointerException if the key is null
.
*/
@Override
- public Object put( Object key, Object value )
- {
- EntryImpl entry = _entries[keyHash( key ) & _mask];
- while ( entry != null )
- {
- if ( key.equals( entry._key ) )
- {
+ 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;
@@ -277,7 +254,7 @@ public Object put( Object key, Object value )
entry = entry._next;
}
// No previous mapping.
- addEntry( key, value );
+ addEntry(key, value);
return null;
}
@@ -289,11 +266,9 @@ public Object put( Object key, Object value )
* null
keys.
*/
@Override
- public void putAll( Map extends K, ? extends V> map )
- {
- for ( Entry extends K, ? extends V> entry : map.entrySet() )
- {
- addEntry( entry.getKey(), entry.getValue() );
+ public void putAll(Map extends K, ? extends V> map) {
+ for (Entry extends K, ? extends V> entry : map.entrySet()) {
+ addEntry(entry.getKey(), entry.getValue());
}
}
@@ -307,15 +282,12 @@ public void putAll( Map extends K, ? extends V> map )
* @throws NullPointerException if the key is null
.
*/
@Override
- public V remove( Object key )
- {
- EntryImpl entry = _entries[keyHash( key ) & _mask];
- while ( entry != null )
- {
- if ( key.equals( entry._key ) )
- {
+ 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 );
+ removeEntry(entry);
return prevValue;
}
entry = entry._next;
@@ -327,28 +299,22 @@ public V remove( Object key )
* Removes all mappings from this {@link FastMap}.
*/
@Override
- public void clear()
- {
+ 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;
@@ -362,24 +328,18 @@ 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.
- *
+ *
* @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;
@@ -388,29 +348,25 @@ else if ( newCapacity < _capacity )
}
// 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;
@@ -427,17 +383,13 @@ else if ( newCapacity < _capacity )
* @return a shallow copy of this map.
*/
@Override
- public Object clone()
- {
- try
- {
+ 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();
}
@@ -451,35 +403,24 @@ public Object clone()
* @return true
if the specified object is equal to this map; false
otherwise.
*/
@Override
- public boolean equals( Object obj )
- {
- if ( obj == this )
- {
+ 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;
}
}
@@ -490,12 +431,10 @@ else if ( obj instanceof Map )
* @return the hash code value for this map.
*/
@Override
- public int hashCode()
- {
+ public int hashCode() {
int code = 0;
EntryImpl entry = _mapFirst;
- while ( entry != null )
- {
+ while (entry != null) {
code += entry.hashCode();
entry = entry._after;
}
@@ -508,8 +447,7 @@ public int hashCode()
* @return this.entrySet().toString();
*/
@Override
- public String toString()
- {
+ public String toString() {
return entrySet().toString();
}
@@ -523,40 +461,32 @@ public String toString()
* @return a collection view of the values contained in this map.
*/
@Override
- public Collection values()
- {
+ public Collection values() {
return _values;
}
private transient Values _values;
- private class Values
- extends AbstractCollection
- {
+ private class Values extends AbstractCollection {
@Override
- public Iterator iterator()
- {
- return new Iterator()
- {
+ public Iterator iterator() {
+ return new Iterator() {
EntryImpl after = _mapFirst;
EntryImpl before;
@Override
- public void remove()
- {
- removeEntry( before );
+ public void remove() {
+ removeEntry(before);
}
@Override
- public boolean hasNext()
- {
+ public boolean hasNext() {
return after != null;
}
@Override
- public Object next()
- {
+ public Object next() {
before = after;
after = after._after;
return before._value;
@@ -565,20 +495,17 @@ public Object next()
}
@Override
- public int size()
- {
+ public int size() {
return _size;
}
@Override
- public boolean contains( Object o )
- {
- return containsValue( o );
+ public boolean contains(Object o) {
+ return containsValue(o);
}
@Override
- public void clear()
- {
+ public void clear() {
FastMap.this.clear();
}
}
@@ -594,40 +521,32 @@ public void clear()
* @return a collection view of the mappings contained in this map.
*/
@Override
- public Set entrySet()
- {
+ public Set entrySet() {
return _entrySet;
}
private transient EntrySet _entrySet;
- private class EntrySet
- extends AbstractSet
- {
+ private class EntrySet extends AbstractSet {
@Override
- public Iterator iterator()
- {
- return new Iterator()
- {
+ public Iterator iterator() {
+ return new Iterator() {
EntryImpl after = _mapFirst;
EntryImpl before;
@Override
- public void remove()
- {
- removeEntry( before );
+ public void remove() {
+ removeEntry(before);
}
@Override
- public boolean hasNext()
- {
+ public boolean hasNext() {
return after != null;
}
@Override
- public Object next()
- {
+ public Object next() {
before = after;
after = after._after;
return before;
@@ -636,36 +555,28 @@ public Object next()
}
@Override
- public int size()
- {
+ public int size() {
return _size;
}
@Override
- public boolean contains( Object obj )
- { // Optimization.
- if ( obj instanceof Map.Entry )
- {
+ 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;
}
}
@Override
- public boolean remove( Object obj )
- { // Optimization.
- if ( obj instanceof Map.Entry )
- {
+ 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 );
+ EntryImpl mapEntry = (EntryImpl) getEntry(entry.getKey());
+ if ((mapEntry != null) && (entry.getValue()).equals(mapEntry._value)) {
+ removeEntry(mapEntry);
return true;
}
}
@@ -683,40 +594,32 @@ public boolean remove( Object obj )
* @return a set view of the keys contained in this map.
*/
@Override
- public Set keySet()
- {
+ public Set keySet() {
return _keySet;
}
private transient KeySet _keySet;
- private class KeySet
- extends AbstractSet
- {
+ private class KeySet extends AbstractSet {
@Override
- public Iterator iterator()
- {
- return new Iterator()
- {
+ public Iterator iterator() {
+ return new Iterator() {
EntryImpl after = _mapFirst;
EntryImpl before;
@Override
- public void remove()
- {
- removeEntry( before );
+ public void remove() {
+ removeEntry(before);
}
@Override
- public boolean hasNext()
- {
+ public boolean hasNext() {
return after != null;
}
@Override
- public Object next()
- {
+ public Object next() {
before = after;
after = after._after;
return before._key;
@@ -725,26 +628,22 @@ public Object next()
}
@Override
- public int size()
- {
+ public int size() {
return _size;
}
@Override
- public boolean contains( Object obj )
- { // Optimization.
- return FastMap.this.containsKey( obj );
+ public boolean contains(Object obj) { // Optimization.
+ return FastMap.this.containsKey(obj);
}
@Override
- public boolean remove( Object obj )
- { // Optimization.
- return FastMap.this.remove( obj ) != null;
+ public boolean remove(Object obj) { // Optimization.
+ return FastMap.this.remove(obj) != null;
}
@Override
- public void clear()
- { // Optimization.
+ public void clear() { // Optimization.
FastMap.this.clear();
}
}
@@ -753,7 +652,7 @@ public void 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:
- *
+ *
*
* Map fixedCapacityMap = new FastMap( 256 )
* {
@@ -763,77 +662,66 @@ public void clear()
* }
* };
*
- *
+ *
* @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).
- *
+ *
* @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 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;
@@ -845,26 +733,21 @@ private void addEntry( Object key, Object value )
/**
* Removes the specified entry from the map.
- *
+ *
* @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.
@@ -872,21 +755,15 @@ private void removeEntry( EntryImpl entry )
// 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;
}
@@ -906,15 +783,13 @@ private void removeEntry( EntryImpl entry )
/**
* 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.
@@ -931,8 +806,7 @@ private void initialize( int capacity )
_mapFirst = null;
_mapLast = null;
// Allocates entries.
- for ( int i = 0; i < capacity; i++ )
- {
+ for (int i = 0; i < capacity; i++) {
EntryImpl entry = new EntryImpl();
entry._after = _poolFirst;
_poolFirst = entry;
@@ -946,17 +820,14 @@ private void initialize( int capacity )
* @throws IOException if an I/O error occurs.
* @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);
}
}
@@ -966,32 +837,26 @@ private void readObject( ObjectInputStream 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).
@@ -1030,35 +895,32 @@ private static final class EntryImpl
/**
* Returns the key for this entry.
- *
+ *
* @return the entry's key.
*/
@Override
- public K getKey()
- {
+ public K getKey() {
return _key;
}
/**
* Returns the value for this entry.
- *
+ *
* @return the entry's value.
*/
@Override
- public V getValue()
- {
+ public V getValue() {
return _value;
}
/**
* Sets the value for this entry.
- *
+ *
* @param value the new value.
* @return the previous value.
*/
@Override
- public V setValue( V value )
- {
+ public V setValue(V value) {
V old = _value;
_value = value;
return old;
@@ -1066,45 +928,39 @@ public V setValue( V value )
/**
* 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.
*/
@Override
- public boolean equals( Object that )
- {
- if ( that instanceof Map.Entry )
- {
+ 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;
}
}
/**
* Returns the hash code for this entry.
- *
+ *
* @return this entry's hash code.
*/
@Override
- public int hashCode()
- {
- return _key.hashCode() ^ ( ( _value != null ) ? _value.hashCode() : 0 );
+ public int hashCode() {
+ return _key.hashCode() ^ ((_value != null) ? _value.hashCode() : 0);
}
/**
* Returns the text representation of this entry.
- *
+ *
* @return this entry's textual representation.
*/
@Override
- public String toString()
- {
+ public String toString() {
return _key + "=" + _value;
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/org/codehaus/plexus/util/FileUtils.java b/src/main/java/org/codehaus/plexus/util/FileUtils.java
index e182145e..fceb191e 100644
--- a/src/main/java/org/codehaus/plexus/util/FileUtils.java
+++ b/src/main/java/org/codehaus/plexus/util/FileUtils.java
@@ -55,9 +55,6 @@
*
*/
-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.IOException;
@@ -79,11 +76,14 @@
import java.util.List;
import java.util.Random;
+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
- *
+ *
* Methods exist to retrieve the components of a typical file path. For example
* /www/hosted/mysite/index.html
, can be broken into:
*
* 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.
*
@@ -114,8 +114,7 @@
* @author Jeff Turner
*
*/
-public class FileUtils extends BaseFileUtils
-{
+public class FileUtils extends BaseFileUtils {
/**
* The number of bytes in a kilobyte.
*/
@@ -142,14 +141,13 @@ public class FileUtils extends BaseFileUtils
* @see
* http://support.microsoft.com/?scid=kb%3Ben-us%3B177506&x=12&y=13
*/
- private static final String[] INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME = { ":", "*", "?", "\"", "<", ">", "|" };
+ private static final String[] INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME = {":", "*", "?", "\"", "<", ">", "|"};
/**
* @return the default excludes pattern
* @see DirectoryScanner#DEFAULTEXCLUDES
*/
- public static String[] getDefaultExcludes()
- {
+ public static String[] getDefaultExcludes() {
return DirectoryScanner.DEFAULTEXCLUDES;
}
@@ -157,9 +155,8 @@ public static String[] getDefaultExcludes()
* @return the default excludes pattern as list.
* @see #getDefaultExcludes()
*/
- public static List getDefaultExcludesAsList()
- {
- return Arrays.asList( getDefaultExcludes() );
+ public static List getDefaultExcludesAsList() {
+ return Arrays.asList(getDefaultExcludes());
}
/**
@@ -167,9 +164,8 @@ public static List getDefaultExcludesAsList()
* @see DirectoryScanner#DEFAULTEXCLUDES
* @see StringUtils#join(Object[], String)
*/
- public static String getDefaultExcludesAsString()
- {
- return StringUtils.join( DirectoryScanner.DEFAULTEXCLUDES, "," );
+ public static String getDefaultExcludesAsString() {
+ return StringUtils.join(DirectoryScanner.DEFAULTEXCLUDES, ",");
}
/**
@@ -178,25 +174,17 @@ public static String getDefaultExcludesAsString()
* @param size The number of bytes.
* @return A human-readable display value (includes units).
*/
- public static String byteCountToDisplaySize( int size )
- {
+ public static String byteCountToDisplaySize(int size) {
String displaySize;
- if ( size / ONE_GB > 0 )
- {
- displaySize = String.valueOf( size / ONE_GB ) + " GB";
- }
- else if ( size / ONE_MB > 0 )
- {
- displaySize = String.valueOf( size / ONE_MB ) + " MB";
- }
- else if ( size / ONE_KB > 0 )
- {
- displaySize = String.valueOf( size / ONE_KB ) + " KB";
- }
- else
- {
- displaySize = String.valueOf( size ) + " bytes";
+ if (size / ONE_GB > 0) {
+ displaySize = String.valueOf(size / ONE_GB) + " GB";
+ } else if (size / ONE_MB > 0) {
+ displaySize = String.valueOf(size / ONE_MB) + " MB";
+ } else if (size / ONE_KB > 0) {
+ displaySize = String.valueOf(size / ONE_KB) + " KB";
+ } else {
+ displaySize = String.valueOf(size) + " bytes";
}
return displaySize;
@@ -208,10 +196,9 @@ else if ( size / ONE_KB > 0 )
* @param filename the file path
* @return The directory portion excluding the ending file separator.
*/
- public static String dirname( String filename )
- {
- int i = filename.lastIndexOf( File.separator );
- return ( i >= 0 ? filename.substring( 0, i ) : "" );
+ public static String dirname(String filename) {
+ int i = filename.lastIndexOf(File.separator);
+ return (i >= 0 ? filename.substring(0, i) : "");
}
/**
@@ -220,10 +207,9 @@ public static String dirname( String filename )
* @param filename the file path
* @return The filename string with extension.
*/
- public static String filename( String filename )
- {
- int i = filename.lastIndexOf( File.separator );
- return ( i >= 0 ? filename.substring( i + 1 ) : filename );
+ public static String filename(String filename) {
+ int i = filename.lastIndexOf(File.separator);
+ return (i >= 0 ? filename.substring(i + 1) : filename);
}
/**
@@ -232,9 +218,8 @@ public static String filename( String filename )
* @param filename the file path
* @return The filename string without extension.
*/
- public static String basename( String filename )
- {
- return basename( filename, extension( filename ) );
+ public static String basename(String filename) {
+ return basename(filename, extension(filename));
}
/**
@@ -244,21 +229,15 @@ public static String basename( String filename )
* @param suffix the file suffix
* @return the basename of the file
*/
- public static String basename( String filename, String suffix )
- {
- int i = filename.lastIndexOf( File.separator ) + 1;
- int lastDot = ( ( suffix != null ) && ( suffix.length() > 0 ) ) ? filename.lastIndexOf( suffix ) : -1;
+ public static String basename(String filename, String suffix) {
+ int i = filename.lastIndexOf(File.separator) + 1;
+ int lastDot = ((suffix != null) && (suffix.length() > 0)) ? filename.lastIndexOf(suffix) : -1;
- if ( lastDot >= 0 )
- {
- return filename.substring( i, lastDot );
- }
- else if ( i > 0 )
- {
- return filename.substring( i );
- }
- else
- {
+ if (lastDot >= 0) {
+ return filename.substring(i, lastDot);
+ } else if (i > 0) {
+ return filename.substring(i);
+ } else {
return filename; // else returns all (no path and no extension)
}
}
@@ -270,27 +249,21 @@ else if ( i > 0 )
* @param filename the file path
* @return the extension of the file
*/
- public static String extension( String filename )
- {
+ public static String extension(String filename) {
// Ensure the last dot is after the last file separator
- int lastSep = filename.lastIndexOf( File.separatorChar );
+ int lastSep = filename.lastIndexOf(File.separatorChar);
int lastDot;
- if ( lastSep < 0 )
- {
- lastDot = filename.lastIndexOf( '.' );
- }
- else
- {
- lastDot = filename.substring( lastSep + 1 ).lastIndexOf( '.' );
- if ( lastDot >= 0 )
- {
+ if (lastSep < 0) {
+ lastDot = filename.lastIndexOf('.');
+ } else {
+ lastDot = filename.substring(lastSep + 1).lastIndexOf('.');
+ if (lastDot >= 0) {
lastDot += lastSep + 1;
}
}
- if ( lastDot >= 0 && lastDot > lastSep )
- {
- return filename.substring( lastDot + 1 );
+ if (lastDot >= 0 && lastDot > lastSep) {
+ return filename.substring(lastDot + 1);
}
return "";
@@ -302,9 +275,8 @@ public static String extension( String filename )
* @param fileName the file path.
* @return true if file exists.
*/
- public static boolean fileExists( String fileName )
- {
- File file = new File( fileName );
+ public static boolean fileExists(String fileName) {
+ File file = new File(fileName);
return file.exists();
}
@@ -315,10 +287,8 @@ public static boolean fileExists( String fileName )
* @return the file content using the platform encoding.
* @throws IOException if any
*/
- public static String fileRead( String file )
- throws IOException
- {
- return fileRead( file, null );
+ public static String fileRead(String file) throws IOException {
+ return fileRead(file, null);
}
/**
@@ -327,10 +297,8 @@ public static String fileRead( String file )
* @return the file content using the specified encoding.
* @throws IOException if any
*/
- public static String fileRead( String file, String encoding )
- throws IOException
- {
- return fileRead( Paths.get( file ), encoding );
+ public static String fileRead(String file, String encoding) throws IOException {
+ return fileRead(Paths.get(file), encoding);
}
/**
@@ -340,10 +308,8 @@ public static String fileRead( String file, String encoding )
* @return the file content using the platform encoding.
* @throws IOException if any
*/
- public static String fileRead( File file )
- throws IOException
- {
- return fileRead( file, null );
+ public static String fileRead(File file) throws IOException {
+ return fileRead(file, null);
}
/**
@@ -352,10 +318,8 @@ public static String fileRead( File file )
* @return the file content using the specified encoding.
* @throws IOException if any
*/
- public static String fileRead( File file, String encoding )
- throws IOException
- {
- return fileRead( file.toPath(), encoding );
+ public static String fileRead(File file, String encoding) throws IOException {
+ return fileRead(file.toPath(), encoding);
}
/**
@@ -368,10 +332,8 @@ public static String fileRead( File file, String encoding )
* @deprecated use {@code java.nio.files.Files.write(filename, data.getBytes(encoding),
* StandardOpenOption.APPEND, StandardOpenOption.CREATE)}
*/
- public static void fileAppend( String fileName, String data )
- throws IOException
- {
- fileAppend( fileName, null, data );
+ public static void fileAppend(String fileName, String data) throws IOException {
+ fileAppend(fileName, null, data);
}
/**
@@ -384,15 +346,12 @@ public static void fileAppend( String fileName, String data )
* @deprecated use {@code java.nio.files.Files.write(filename, data.getBytes(encoding),
* StandardOpenOption.APPEND, StandardOpenOption.CREATE)}
*/
- public static void fileAppend( String fileName, String encoding, String data )
- throws IOException
- {
- fileAppend( Paths.get( fileName), encoding, data );
+ public static void fileAppend(String fileName, String encoding, String data) throws IOException {
+ fileAppend(Paths.get(fileName), encoding, data);
}
- private static void fileAppend( Path path, String encoding, String data ) throws IOException
- {
- fileWrite( path, encoding, data, StandardOpenOption.APPEND, StandardOpenOption.CREATE );
+ private static void fileAppend(Path path, String encoding, String data) throws IOException {
+ fileWrite(path, encoding, data, StandardOpenOption.APPEND, StandardOpenOption.CREATE);
}
/**
@@ -403,10 +362,8 @@ private static void fileAppend( Path path, String encoding, String data ) throws
* @param data The content to write to the file.
* @throws IOException if any
*/
- public static void fileWrite( String fileName, String data )
- throws IOException
- {
- fileWrite( fileName, null, data );
+ public static void fileWrite(String fileName, String data) throws IOException {
+ fileWrite(fileName, null, data);
}
/**
@@ -417,11 +374,9 @@ public static void fileWrite( String fileName, String data )
* @param data The content to write to the file.
* @throws IOException if any
*/
- public static void fileWrite( String fileName, String encoding, String data )
- throws IOException
- {
- Path file = ( fileName == null ) ? null : Paths.get( fileName );
- fileWrite( file, encoding, data );
+ public static void fileWrite(String fileName, String encoding, String data) throws IOException {
+ Path file = (fileName == null) ? null : Paths.get(fileName);
+ fileWrite(file, encoding, data);
}
/**
@@ -433,10 +388,8 @@ public static void fileWrite( String fileName, String encoding, String data )
* @throws IOException if any
* @since 2.0.6
*/
- public static void fileWrite( File file, String data )
- throws IOException
- {
- fileWrite( file, null, data );
+ public static void fileWrite(File file, String data) throws IOException {
+ fileWrite(file, null, data);
}
/**
@@ -448,10 +401,8 @@ public static void fileWrite( File file, String data )
* @throws IOException if any
* @since 2.0.6
*/
- public static void fileWrite( File file, String encoding, String data )
- throws IOException
- {
- fileWrite( file.toPath(), encoding, data );
+ public static void fileWrite(File file, String encoding, String data) throws IOException {
+ fileWrite(file.toPath(), encoding, data);
}
/**
@@ -459,16 +410,12 @@ public static void fileWrite( File file, String encoding, String data )
*
* @param fileName The path of the file to delete.
*/
- public static void fileDelete( String fileName )
- {
- File file = new File( fileName );
- try
- {
- NioFiles.deleteIfExists( file );
- }
- catch ( IOException e )
- {
- throw new RuntimeException( e );
+ public static void fileDelete(String fileName) {
+ File file = new File(fileName);
+ try {
+ NioFiles.deleteIfExists(file);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
}
}
@@ -479,9 +426,8 @@ public static void fileDelete( String fileName )
* @param seconds The maximum time in seconds to wait.
* @return True if file exists.
*/
- public static boolean waitFor( String fileName, int seconds )
- {
- return waitFor( new File( fileName ), seconds );
+ public static boolean waitFor(String fileName, int seconds) {
+ return waitFor(new File(fileName), seconds);
}
/**
@@ -491,26 +437,19 @@ public static boolean waitFor( String fileName, int seconds )
* @param seconds The maximum time in seconds to wait.
* @return True if file exists.
*/
- public static boolean waitFor( File file, int seconds )
- {
+ public static boolean waitFor(File file, int seconds) {
int timeout = 0;
int tick = 0;
- while ( !file.exists() )
- {
- if ( tick++ >= 10 )
- {
+ while (!file.exists()) {
+ if (tick++ >= 10) {
tick = 0;
- if ( timeout++ > seconds )
- {
+ if (timeout++ > seconds) {
return false;
}
}
- try
- {
- Thread.sleep( 100 );
- }
- catch ( InterruptedException ignore )
- {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException ignore) {
// nop
}
}
@@ -523,78 +462,67 @@ public static boolean waitFor( File file, int seconds )
* @param fileName The path of the file.
* @return A File
manager.
*/
- public static File getFile( String fileName )
- {
- return new File( fileName );
+ public static File getFile(String fileName) {
+ return new File(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"
*
* @param directory The path of the directory.
* @param extensions an array of expected extensions.
* @return An array of files for the wanted extensions.
*/
- public static String[] getFilesFromExtension( String directory, String[] extensions )
- {
+ public static String[] getFilesFromExtension(String directory, String[] extensions) {
List files = new ArrayList();
- File currentDir = new File( directory );
+ File currentDir = new File(directory);
String[] unknownFiles = currentDir.list();
- if ( unknownFiles == null )
- {
+ if (unknownFiles == null) {
return new String[0];
}
- for ( String unknownFile : unknownFiles )
- {
- String currentFileName = directory + System.getProperty( "file.separator" ) + unknownFile;
- File currentFile = new File( currentFileName );
+ for (String unknownFile : unknownFiles) {
+ String currentFileName = directory + System.getProperty("file.separator") + unknownFile;
+ File currentFile = new File(currentFileName);
- if ( currentFile.isDirectory() )
- {
+ if (currentFile.isDirectory()) {
// ignore all CVS directories...
- if ( currentFile.getName().equals( "CVS" ) )
- {
+ if (currentFile.getName().equals("CVS")) {
continue;
}
// 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
- {
+ String[] fetchFiles = getFilesFromExtension(currentFileName, extensions);
+ files = blendFilesToVector(files, fetchFiles);
+ } else {
// ok... add the file
String add = currentFile.getAbsolutePath();
- if ( isValidFile( add, extensions ) )
- {
- files.add( add );
+ if (isValidFile(add, extensions)) {
+ files.add(add);
}
}
}
// ok... move the Vector into the files list...
- return files.toArray( new String[0] );
+ return files.toArray(new String[0]);
}
/**
* Private helper method for getFilesFromExtension()
*/
- private static List blendFilesToVector( List v, String[] files )
- {
- for ( String file : files )
- {
- v.add( file );
+ private static List blendFilesToVector(List v, String[] files) {
+ for (String file : files) {
+ v.add(file);
}
return v;
@@ -604,27 +532,22 @@ private static List blendFilesToVector( List v, String[] files )
* 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 )
- {
- String extension = extension( file );
- if ( extension == null )
- {
+ private static boolean isValidFile(String file, String[] extensions) {
+ String extension = extension(file);
+ if (extension == null) {
extension = "";
}
// ok.. now that we have the "extension" go through the current know
// excepted extensions and determine if this one is OK.
- for ( String extension1 : extensions )
- {
- if ( extension1.equals( extension ) )
- {
+ for (String extension1 : extensions) {
+ if (extension1.equals(extension)) {
return true;
}
}
return false;
-
}
/**
@@ -634,19 +557,16 @@ private static boolean isValidFile( String file, String[] extensions )
* @throws IllegalArgumentException if the dir contains illegal Windows characters under Windows OS.
* @see #INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME
*/
- public static void mkdir( String dir )
- {
- File file = new File( dir );
+ public static void mkdir(String dir) {
+ File file = new File(dir);
- if ( Os.isFamily( Os.FAMILY_WINDOWS ) && !isValidWindowsFileName( file ) )
- {
- throw new IllegalArgumentException( "The file (" + dir
- + ") cannot contain any of the following characters: \n"
- + StringUtils.join( INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME, " " ) );
+ if (Os.isFamily(Os.FAMILY_WINDOWS) && !isValidWindowsFileName(file)) {
+ 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() )
- {
+ if (!file.exists()) {
file.mkdirs();
}
}
@@ -659,31 +579,25 @@ public static void mkdir( String dir )
* @return true if the content of the files are equal or they both don't exist, false otherwise
* @throws IOException if any
*/
- public static boolean contentEquals( final File file1, final File file2 )
- throws IOException
- {
+ public static boolean contentEquals(final File file1, final File file2) throws IOException {
final boolean file1Exists = file1.exists();
- if ( file1Exists != file2.exists() )
- {
+ if (file1Exists != file2.exists()) {
return false;
}
- if ( !file1Exists )
- {
+ if (!file1Exists) {
// two not existing files are equal
return true;
}
- if ( file1.isDirectory() || file2.isDirectory() )
- {
+ if (file1.isDirectory() || file2.isDirectory()) {
// don't want to compare directory contents
return false;
}
-
- try ( InputStream input1 = Files.newInputStream( file1.toPath() );
- InputStream input2 = Files.newInputStream( file2.toPath() ) )
- {
- return IOUtil.contentEquals( input1, input2 );
+
+ try (InputStream input1 = Files.newInputStream(file1.toPath());
+ InputStream input2 = Files.newInputStream(file2.toPath())) {
+ return IOUtil.contentEquals(input1, input2);
}
}
@@ -694,25 +608,21 @@ public static boolean contentEquals( final File file1, final File file2 )
* @return The equivalent File
object, or null
if the URL's protocol is not
* file
*/
- public static File toFile( final URL url )
- {
- if ( url == null || !url.getProtocol().equalsIgnoreCase( "file" ) )
- {
+ public static File toFile(final URL url) {
+ if (url == null || !url.getProtocol().equalsIgnoreCase("file")) {
return null;
}
- String filename = url.getFile().replace( '/', File.separatorChar );
+ String filename = url.getFile().replace('/', File.separatorChar);
int pos = -1;
- while ( ( pos = filename.indexOf( '%', pos + 1 ) ) >= 0 )
- {
- if ( pos + 2 < filename.length() )
- {
- String hexStr = filename.substring( pos + 1, pos + 3 );
- char ch = (char) Integer.parseInt( hexStr, 16 );
- filename = filename.substring( 0, pos ) + ch + filename.substring( pos + 3 );
+ while ((pos = filename.indexOf('%', pos + 1)) >= 0) {
+ if (pos + 2 < filename.length()) {
+ String hexStr = filename.substring(pos + 1, pos + 3);
+ char ch = (char) Integer.parseInt(hexStr, 16);
+ filename = filename.substring(0, pos) + ch + filename.substring(pos + 3);
}
}
- return new File( filename );
+ return new File(filename);
}
/**
@@ -722,13 +632,10 @@ public static File toFile( final URL url )
* @return the array of URLs
* @throws IOException if an error occurs
*/
- public static URL[] toURLs( final File[] files )
- throws IOException
- {
+ public static URL[] toURLs(final File[] files) throws IOException {
final URL[] urls = new URL[files.length];
- for ( int i = 0; i < urls.length; i++ )
- {
+ for (int i = 0; i < urls.length; i++) {
urls[i] = files[i].toURI().toURL();
}
@@ -737,7 +644,7 @@ public static URL[] toURLs( final File[] files )
/**
* Remove extension from filename. ie
- *
+ *
*
* foo.txt --> foo
* a\b\c.jpg --> a\b\c
@@ -747,22 +654,20 @@ public static URL[] toURLs( final File[] files )
* @param filename the path of the file
* @return the filename minus extension
*/
- public static String removeExtension( final String filename )
- {
- String ext = extension( filename );
+ public static String removeExtension(final String filename) {
+ String ext = extension(filename);
- if ( "".equals( ext ) )
- {
+ if ("".equals(ext)) {
return filename;
}
- final int index = filename.lastIndexOf( ext ) - 1;
- return filename.substring( 0, index );
+ final int index = filename.lastIndexOf(ext) - 1;
+ return filename.substring(0, index);
}
/**
* Get extension from filename. ie
- *
+ *
*
* foo.txt --> "txt"
* a\b\c.jpg --> "jpg"
@@ -772,14 +677,13 @@ public static String removeExtension( final String filename )
* @param filename the path of the file
* @return the extension of filename or "" if none
*/
- public static String getExtension( final String filename )
- {
- return extension( filename );
+ public static String getExtension(final String filename) {
+ return extension(filename);
}
/**
* Remove path from filename. Equivalent to the unix command basename
ie.
- *
+ *
*
* a/b/c.txt --> c.txt
* a.txt --> a.txt
@@ -788,14 +692,13 @@ public static String getExtension( final String filename )
* @param filepath the path of the file
* @return the filename minus path
*/
- public static String removePath( final String filepath )
- {
- return removePath( filepath, File.separatorChar );
+ public static String removePath(final String filepath) {
+ return removePath(filepath, File.separatorChar);
}
/**
* Remove path from filename. ie.
- *
+ *
*
* a/b/c.txt --> c.txt
* a.txt --> a.txt
@@ -805,21 +708,19 @@ public static String removePath( final String filepath )
* @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 )
- {
- final int index = filepath.lastIndexOf( fileSeparatorChar );
+ public static String removePath(final String filepath, final char fileSeparatorChar) {
+ final int index = filepath.lastIndexOf(fileSeparatorChar);
- if ( -1 == index )
- {
+ if (-1 == index) {
return filepath;
}
- return filepath.substring( index + 1 );
+ return filepath.substring(index + 1);
}
/**
* Get path from filename. Roughly equivalent to the unix command dirname
. ie.
- *
+ *
*
* a/b/c.txt --> a/b
* a.txt --> ""
@@ -828,14 +729,13 @@ public static String removePath( final String filepath, final char fileSeparator
* @param filepath the filepath
* @return the filename minus path
*/
- public static String getPath( final String filepath )
- {
- return getPath( filepath, File.separatorChar );
+ public static String getPath(final String filepath) {
+ return getPath(filepath, File.separatorChar);
}
/**
* Get path from filename. ie.
- *
+ *
*
* a/b/c.txt --> a/b
* a.txt --> ""
@@ -845,15 +745,13 @@ public static String getPath( final String filepath )
* @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 )
- {
- final int index = filepath.lastIndexOf( fileSeparatorChar );
- if ( -1 == index )
- {
+ public static String getPath(final String filepath, final char fileSeparatorChar) {
+ final int index = filepath.lastIndexOf(fileSeparatorChar);
+ if (-1 == index) {
return "";
}
- return filepath.substring( 0, index );
+ return filepath.substring(0, index);
}
/**
@@ -868,10 +766,8 @@ public static String getPath( final String filepath, final char fileSeparatorCha
* @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
- {
- copyFileToDirectory( new File( source ), new File( destinationDirectory ) );
+ public static void copyFileToDirectory(final String source, final String destinationDirectory) throws IOException {
+ copyFileToDirectory(new File(source), new File(destinationDirectory));
}
/**
@@ -886,10 +782,9 @@ public static void copyFileToDirectory( final String source, final String destin
* @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
- {
- copyFileToDirectoryIfModified( new File( source ), new File( destinationDirectory ) );
+ public static void copyFileToDirectoryIfModified(final String source, final String destinationDirectory)
+ throws IOException {
+ copyFileToDirectoryIfModified(new File(source), new File(destinationDirectory));
}
/**
@@ -904,15 +799,12 @@ public static void copyFileToDirectoryIfModified( final String source, final Str
* @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
- {
- if ( destinationDirectory.exists() && !destinationDirectory.isDirectory() )
- {
- throw new IllegalArgumentException( "Destination is not a directory" );
+ public static void copyFileToDirectory(final File source, final File destinationDirectory) throws IOException {
+ if (destinationDirectory.exists() && !destinationDirectory.isDirectory()) {
+ throw new IllegalArgumentException("Destination is not a directory");
}
- copyFile( source, new File( destinationDirectory, source.getName() ) );
+ copyFile(source, new File(destinationDirectory, source.getName()));
}
/**
@@ -927,39 +819,31 @@ public static void copyFileToDirectory( final File source, final File destinatio
* @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
- {
- if ( destinationDirectory.exists() && !destinationDirectory.isDirectory() )
- {
- throw new IllegalArgumentException( "Destination is not a directory" );
+ public static void copyFileToDirectoryIfModified(final File source, final File destinationDirectory)
+ throws IOException {
+ if (destinationDirectory.exists() && !destinationDirectory.isDirectory()) {
+ throw new IllegalArgumentException("Destination is not a directory");
}
- copyFileIfModified( source, new File( destinationDirectory, source.getName() ) );
+ 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
- {
+ 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();
}
}
@@ -976,43 +860,34 @@ public static void mkDirs( final File sourceBase, String[] dirs, final File dest
* @throws java.io.FileNotFoundException if destination
is a directory (use
* {@link #copyFileToDirectory}).
*/
- public static void copyFile( final File source, final File destination )
- throws IOException
- {
+ public static void copyFile(final File source, final File destination) throws IOException {
// check source exists
- if ( !source.exists() )
- {
+ if (!source.exists()) {
final String message = "File " + source + " does not exist";
- throw new IOException( message );
+ throw new IOException(message);
}
// check source != destination, see PLXUTILS-10
- if ( source.getCanonicalPath().equals( destination.getCanonicalPath() ) )
- {
+ if (source.getCanonicalPath().equals(destination.getCanonicalPath())) {
// if they are equal, we can exit the method without doing any work
return;
}
- mkdirsFor( destination );
+ mkdirsFor(destination);
- doCopyFile( source, destination );
+ doCopyFile(source, destination);
- if ( source.length() != destination.length() )
- {
+ if (source.length() != destination.length()) {
String message = "Failed to copy full contents from " + source + " to " + destination;
- throw new IOException( message );
+ throw new IOException(message);
}
}
- private static void doCopyFile( File source, File destination )
- throws IOException
- {
- doCopyFileUsingNewIO( source, destination );
+ 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 );
+ private static void doCopyFileUsingNewIO(File source, File destination) throws IOException {
+ NioFiles.copy(source, destination);
}
/**
@@ -1026,25 +901,21 @@ private static void doCopyFileUsingNewIO( File source, File destination )
* @throws java.io.FileNotFoundException if destination
is a directory (use
* {@link #copyFileToDirectory}).
*/
- public static void linkFile( final File source, final File destination )
- throws IOException
- {
+ public static void linkFile(final File source, final File destination) throws IOException {
// check source exists
- if ( !source.exists() )
- {
+ if (!source.exists()) {
final String message = "File " + source + " does not exist";
- throw new IOException( message );
+ throw new IOException(message);
}
// check source != destination, see PLXUTILS-10
- if ( source.getCanonicalPath().equals( destination.getCanonicalPath() ) )
- {
+ if (source.getCanonicalPath().equals(destination.getCanonicalPath())) {
// if they are equal, we can exit the method without doing any work
return;
}
- mkdirsFor( destination );
+ mkdirsFor(destination);
- NioFiles.createSymbolicLink( destination, source );
+ NioFiles.createSymbolicLink(destination, source);
}
/**
@@ -1058,12 +929,9 @@ public static void linkFile( final File source, final File destination )
* @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 ( isSourceNewerThanDestination( source, destination ) )
- {
- copyFile( source, destination );
+ public static boolean copyFileIfModified(final File source, final File destination) throws IOException {
+ if (isSourceNewerThanDestination(source, destination)) {
+ copyFile(source, destination);
return true;
}
@@ -1085,10 +953,8 @@ public static boolean copyFileIfModified( final File source, final File destinat
*
- an IO error occurs during copying
*
*/
- public static void copyURLToFile( final URL source, final File destination )
- throws IOException
- {
- copyStreamToFile( new URLInputStreamFacade( source ), destination );
+ public static void copyURLToFile(final URL source, final File destination) throws IOException {
+ copyStreamToFile(new URLInputStreamFacade(source), destination);
}
/**
@@ -1105,36 +971,28 @@ public static void copyURLToFile( final URL source, final File destination )
* an IO error occurs during copying
*
*/
- public static void copyStreamToFile( final InputStreamFacade source, final File destination )
- throws IOException
- {
- mkdirsFor( destination );
- checkCanWrite( destination );
+ public static void copyStreamToFile(final InputStreamFacade source, final File destination) throws IOException {
+ mkdirsFor(destination);
+ checkCanWrite(destination);
- try ( InputStream input = source.getInputStream();
- OutputStream output = Files.newOutputStream( destination.toPath() ) )
- {
- IOUtil.copy( input, output );
+ try (InputStream input = source.getInputStream();
+ OutputStream output = Files.newOutputStream(destination.toPath())) {
+ IOUtil.copy(input, output);
}
}
- private static void checkCanWrite( File destination )
- throws IOException
- {
+ private static void checkCanWrite(File destination) throws IOException {
// make sure we can write to destination
- if ( destination.exists() && !destination.canWrite() )
- {
+ if (destination.exists() && !destination.canWrite()) {
final String message = "Unable to open file " + destination + " for writing.";
- throw new IOException( message );
+ throw new IOException(message);
}
}
- private static void mkdirsFor( File destination )
- {
+ private static void mkdirsFor(File destination) {
// does destination directory exist ?
File parentFile = destination.getParentFile();
- if ( parentFile != null && !parentFile.exists() )
- {
+ if (parentFile != null && !parentFile.exists()) {
parentFile.mkdirs();
}
}
@@ -1142,7 +1000,7 @@ private static void mkdirsFor( File destination )
/**
* Normalize a path. Eliminates "/../" and "/./" in a string. Returns null
if the ..'s went past the
* root. Eg:
- *
+ *
*
* /foo// --> /foo/
* /foo/./ --> /foo/
@@ -1156,45 +1014,37 @@ private static void mkdirsFor( File destination )
* @param path the path to normalize
* @return the normalized String, or null
if too many ..'s.
*/
- public static String normalize( final String path )
- {
+ public static String normalize(final String path) {
String normalized = path;
// Resolve occurrences of "//" in the normalized path
- while ( true )
- {
- int index = normalized.indexOf( "//" );
- if ( index < 0 )
- {
+ while (true) {
+ int index = normalized.indexOf("//");
+ if (index < 0) {
break;
}
- normalized = normalized.substring( 0, index ) + normalized.substring( index + 1 );
+ normalized = normalized.substring(0, index) + normalized.substring(index + 1);
}
// Resolve occurrences of "/./" in the normalized path
- while ( true )
- {
- int index = normalized.indexOf( "/./" );
- if ( index < 0 )
- {
+ while (true) {
+ int index = normalized.indexOf("/./");
+ if (index < 0) {
break;
}
- normalized = normalized.substring( 0, index ) + normalized.substring( index + 2 );
+ normalized = normalized.substring(0, index) + normalized.substring(index + 2);
}
// Resolve occurrences of "/../" in the normalized path
- while ( true )
- {
- int index = normalized.indexOf( "/../" );
- if ( index < 0 )
- {
+ while (true) {
+ int index = normalized.indexOf("/../");
+ if (index < 0) {
break;
}
- if ( index == 0 )
- {
+ if (index == 0) {
return null; // Trying to go outside our context
}
- int index2 = normalized.lastIndexOf( '/', index - 1 );
- normalized = normalized.substring( 0, index2 ) + normalized.substring( index + 3 );
+ int index2 = normalized.lastIndexOf('/', index - 1);
+ normalized = normalized.substring(0, index2) + normalized.substring(index + 3);
}
// Return the normalized path that we have completed
@@ -1203,45 +1053,40 @@ public static String normalize( final String path )
/**
* Will concatenate 2 paths. Paths with ..
will be properly handled.
- *
+ *
* Eg.,
*
* /a/b/c + d = /a/b/d
* /a/b/c + ../d = /a/d
*
-
+ *
* Thieved from Tomcat sources...
*
* @param lookupPath a path
* @param path the path to concatenate
* @return The concatenated paths, or null if error occurs
*/
- public static String catPath( final String lookupPath, final String path )
- {
+ public static String catPath(final String lookupPath, final String path) {
// Cut off the last slash and everything beyond
- int index = lookupPath.lastIndexOf( "/" );
- String lookup = lookupPath.substring( 0, index );
+ int index = lookupPath.lastIndexOf("/");
+ String lookup = lookupPath.substring(0, index);
String pth = path;
// Deal with .. by chopping dirs off the lookup path
- while ( pth.startsWith( "../" ) )
- {
- if ( lookup.length() > 0 )
- {
- index = lookup.lastIndexOf( "/" );
- lookup = lookup.substring( 0, index );
- }
- else
- {
+ while (pth.startsWith("../")) {
+ if (lookup.length() > 0) {
+ index = lookup.lastIndexOf("/");
+ lookup = lookup.substring(0, index);
+ } else {
// More ..'s than dirs, return null
return null;
}
- index = pth.indexOf( "../" ) + 3;
- pth = pth.substring( index );
+ index = pth.indexOf("../") + 3;
+ pth = pth.substring(index);
}
- return new StringBuffer( lookup ).append( "/" ).append( pth ).toString();
+ return new StringBuffer(lookup).append("/").append(pth).toString();
}
/**
@@ -1253,30 +1098,23 @@ public static String catPath( final String lookupPath, final String path )
* @param filename Absolute or relative file path to resolve.
* @return The canonical File
of filename
.
*/
- public static File resolveFile( final File baseFile, String filename )
- {
+ public static File resolveFile(final File baseFile, String filename) {
String filenm = filename;
- if ( '/' != File.separatorChar )
- {
- filenm = filename.replace( '/', File.separatorChar );
+ if ('/' != File.separatorChar) {
+ filenm = filename.replace('/', File.separatorChar);
}
- if ( '\\' != File.separatorChar )
- {
- filenm = filename.replace( '\\', File.separatorChar );
+ if ('\\' != File.separatorChar) {
+ filenm = filename.replace('\\', File.separatorChar);
}
// deal with absolute files
- if ( filenm.startsWith( File.separator ) || ( Os.isFamily( Os.FAMILY_WINDOWS ) && filenm.indexOf( ":" ) > 0 ) )
- {
- File file = new File( filenm );
+ if (filenm.startsWith(File.separator) || (Os.isFamily(Os.FAMILY_WINDOWS) && filenm.indexOf(":") > 0)) {
+ File file = new File(filenm);
- try
- {
+ try {
file = file.getCanonicalFile();
- }
- catch ( final IOException ioe )
- {
+ } catch (final IOException ioe) {
// nop
}
@@ -1291,33 +1129,27 @@ public static File resolveFile( final File baseFile, String filename )
// on win32 at start of filename as UNC filenames can
// be \\AComputer\AShare\myfile.txt
int start = 0;
- if ( '\\' == File.separatorChar )
- {
- sb.append( filenm.charAt( 0 ) );
+ if ('\\' == File.separatorChar) {
+ sb.append(filenm.charAt(0));
start++;
}
- for ( int i = start; i < chars.length; i++ )
- {
+ for (int i = start; i < chars.length; i++) {
final boolean doubleSeparator = File.separatorChar == chars[i] && File.separatorChar == chars[i - 1];
- if ( !doubleSeparator )
- {
- sb.append( chars[i] );
+ if (!doubleSeparator) {
+ sb.append(chars[i]);
}
}
filenm = sb.toString();
// must be relative
- File file = ( new File( baseFile, filenm ) ).getAbsoluteFile();
+ File file = (new File(baseFile, filenm)).getAbsoluteFile();
- try
- {
+ try {
file = file.getCanonicalFile();
- }
- catch ( final IOException ioe )
- {
+ } catch (final IOException ioe) {
// nop
}
@@ -1330,10 +1162,8 @@ public static File resolveFile( final File baseFile, String filename )
* @param file the file path
* @throws IOException if any
*/
- public static void forceDelete( final String file )
- throws IOException
- {
- forceDelete( new File( file ) );
+ public static void forceDelete(final String file) throws IOException {
+ forceDelete(new File(file));
}
/**
@@ -1342,24 +1172,18 @@ public static void forceDelete( final String file )
* @param file a file
* @throws IOException if any
*/
- public static void forceDelete( final File file )
- throws IOException
- {
- if ( file.isDirectory() )
- {
- deleteDirectory( file );
- }
- else
- {
+ public static void forceDelete(final File file) throws IOException {
+ if (file.isDirectory()) {
+ deleteDirectory(file);
+ } else {
/*
* NOTE: Always try to delete the file even if it appears to be non-existent. This will ensure that a
* symlink whose target does not exist is deleted, too.
*/
boolean filePresent = file.getCanonicalFile().exists();
- if ( !deleteFile( file ) && filePresent )
- {
+ if (!deleteFile(file) && filePresent) {
final String message = "File " + file + " unable to be deleted.";
- throw new IOException( message );
+ throw new IOException(message);
}
}
}
@@ -1371,29 +1195,21 @@ public static void forceDelete( final File file )
* @param file a file
* @throws IOException if any
*/
- private static boolean deleteFile( File file )
- throws IOException
- {
- if ( file.isDirectory() )
- {
- throw new IOException( "File " + file + " isn't a file." );
+ private static boolean deleteFile(File file) throws IOException {
+ if (file.isDirectory()) {
+ throw new IOException("File " + file + " isn't a file.");
}
- if ( !file.delete() )
- {
- if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
- {
+ if (!file.delete()) {
+ if (Os.isFamily(Os.FAMILY_WINDOWS)) {
file = file.getCanonicalFile();
System.gc();
}
- try
- {
- Thread.sleep( 10 );
+ try {
+ Thread.sleep(10);
return file.delete();
- }
- catch ( InterruptedException ignore )
- {
+ } catch (InterruptedException ignore) {
return file.delete();
}
}
@@ -1407,20 +1223,14 @@ private static boolean deleteFile( File file )
* @param file a file
* @throws IOException if any
*/
- public static void forceDeleteOnExit( final File file )
- throws IOException
- {
- if ( !file.exists() )
- {
+ public static void forceDeleteOnExit(final File file) throws IOException {
+ if (!file.exists()) {
return;
}
- if ( file.isDirectory() )
- {
- deleteDirectoryOnExit( file );
- }
- else
- {
+ if (file.isDirectory()) {
+ deleteDirectoryOnExit(file);
+ } else {
file.deleteOnExit();
}
}
@@ -1431,16 +1241,13 @@ public static void forceDeleteOnExit( final File file )
* @param directory a directory
* @throws IOException if any
*/
- private static void deleteDirectoryOnExit( final File directory )
- throws IOException
- {
- if ( !directory.exists() )
- {
+ private static void deleteDirectoryOnExit(final File directory) throws IOException {
+ if (!directory.exists()) {
return;
}
directory.deleteOnExit(); // The hook reverses the list
- cleanDirectoryOnExit( directory );
+ cleanDirectoryOnExit(directory);
}
/**
@@ -1449,38 +1256,29 @@ private static void deleteDirectoryOnExit( final File directory )
* @param directory a directory
* @throws IOException if any
*/
- private static void cleanDirectoryOnExit( final File directory )
- throws IOException
- {
- if ( !directory.exists() )
- {
+ private static void cleanDirectoryOnExit(final File directory) throws IOException {
+ if (!directory.exists()) {
final String message = directory + " does not exist";
- throw new IllegalArgumentException( message );
+ throw new IllegalArgumentException(message);
}
- if ( !directory.isDirectory() )
- {
+ if (!directory.isDirectory()) {
final String message = directory + " is not a directory";
- throw new IllegalArgumentException( message );
+ throw new IllegalArgumentException(message);
}
IOException exception = null;
final File[] files = directory.listFiles();
- for ( final File file : files )
- {
- try
- {
- forceDeleteOnExit( file );
- }
- catch ( final IOException ioe )
- {
+ for (final File file : files) {
+ try {
+ forceDeleteOnExit(file);
+ } catch (final IOException ioe) {
exception = ioe;
}
}
- if ( null != exception )
- {
+ if (null != exception) {
throw exception;
}
}
@@ -1493,34 +1291,25 @@ private static void cleanDirectoryOnExit( final File directory )
* @throws IllegalArgumentException if the file contains illegal Windows characters under Windows OS.
* @see #INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME
*/
- public static void forceMkdir( final File file )
- throws IOException
- {
- if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
- {
- if ( !isValidWindowsFileName( file ) )
- {
- throw new IllegalArgumentException( "The file (" + file.getAbsolutePath()
- + ") cannot contain any of the following characters: \n"
- + StringUtils.join( INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME, " " ) );
+ public static void forceMkdir(final File file) throws IOException {
+ if (Os.isFamily(Os.FAMILY_WINDOWS)) {
+ if (!isValidWindowsFileName(file)) {
+ throw new IllegalArgumentException("The file (" + file.getAbsolutePath()
+ + ") cannot contain any of the following characters: \n"
+ + StringUtils.join(INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME, " "));
}
}
- if ( file.exists() )
- {
- if ( file.isFile() )
- {
+ if (file.exists()) {
+ if (file.isFile()) {
final String message =
- "File " + file + " exists and is " + "not a directory. Unable to create directory.";
- throw new IOException( message );
+ "File " + file + " exists and is " + "not a directory. Unable to create directory.";
+ throw new IOException(message);
}
- }
- else
- {
- if ( false == file.mkdirs() )
- {
+ } else {
+ if (false == file.mkdirs()) {
final String message = "Unable to create directory " + file;
- throw new IOException( message );
+ throw new IOException(message);
}
}
}
@@ -1531,10 +1320,8 @@ public static void forceMkdir( final File file )
* @param directory a directory
* @throws IOException if any
*/
- public static void deleteDirectory( final String directory )
- throws IOException
- {
- deleteDirectory( new File( directory ) );
+ public static void deleteDirectory(final String directory) throws IOException {
+ deleteDirectory(new File(directory));
}
/**
@@ -1543,11 +1330,8 @@ public static void deleteDirectory( final String directory )
* @param directory a directory
* @throws IOException if any
*/
- public static void deleteDirectory( final File directory )
- throws IOException
- {
- if ( !directory.exists() )
- {
+ public static void deleteDirectory(final File directory) throws IOException {
+ if (!directory.exists()) {
return;
}
@@ -1555,16 +1339,14 @@ public static void deleteDirectory( final File directory )
* try delete the directory before its contents, which will take care of any directories that are really
* symbolic links.
*/
- if ( directory.delete() )
- {
+ if (directory.delete()) {
return;
}
- cleanDirectory( directory );
- if ( !directory.delete() )
- {
+ cleanDirectory(directory);
+ if (!directory.delete()) {
final String message = "Directory " + directory + " unable to be deleted.";
- throw new IOException( message );
+ throw new IOException(message);
}
}
@@ -1574,10 +1356,8 @@ public static void deleteDirectory( final File directory )
* @param directory a directory
* @throws IOException if any
*/
- public static void cleanDirectory( final String directory )
- throws IOException
- {
- cleanDirectory( new File( directory ) );
+ public static void cleanDirectory(final String directory) throws IOException {
+ cleanDirectory(new File(directory));
}
/**
@@ -1586,44 +1366,34 @@ public static void cleanDirectory( final String directory )
* @param directory a directory
* @throws IOException if any
*/
- public static void cleanDirectory( final File directory )
- throws IOException
- {
- if ( !directory.exists() )
- {
+ public static void cleanDirectory(final File directory) throws IOException {
+ if (!directory.exists()) {
final String message = directory + " does not exist";
- throw new IllegalArgumentException( message );
+ throw new IllegalArgumentException(message);
}
- if ( !directory.isDirectory() )
- {
+ if (!directory.isDirectory()) {
final String message = directory + " is not a directory";
- throw new IllegalArgumentException( message );
+ throw new IllegalArgumentException(message);
}
IOException exception = null;
final File[] files = directory.listFiles();
- if ( files == null )
- {
+ if (files == null) {
return;
}
- for ( final File file : files )
- {
- try
- {
- forceDelete( file );
- }
- catch ( final IOException ioe )
- {
+ for (final File file : files) {
+ try {
+ forceDelete(file);
+ } catch (final IOException ioe) {
exception = ioe;
}
}
- if ( null != exception )
- {
+ if (null != exception) {
throw exception;
}
}
@@ -1634,9 +1404,8 @@ public static void cleanDirectory( final File directory )
* @param directory a directory
* @return size of directory in bytes.
*/
- public static long sizeOfDirectory( final String directory )
- {
- return sizeOfDirectory( new File( directory ) );
+ public static long sizeOfDirectory(final String directory) {
+ return sizeOfDirectory(new File(directory));
}
/**
@@ -1645,31 +1414,24 @@ public static long sizeOfDirectory( final String directory )
* @param directory a directory
* @return size of directory in bytes.
*/
- public static long sizeOfDirectory( final File directory )
- {
- if ( !directory.exists() )
- {
+ public static long sizeOfDirectory(final File directory) {
+ if (!directory.exists()) {
final String message = directory + " does not exist";
- throw new IllegalArgumentException( message );
+ throw new IllegalArgumentException(message);
}
- if ( !directory.isDirectory() )
- {
+ if (!directory.isDirectory()) {
final String message = directory + " is not a directory";
- throw new IllegalArgumentException( message );
+ throw new IllegalArgumentException(message);
}
long size = 0;
final File[] files = directory.listFiles();
- for ( final File file : files )
- {
- if ( file.isDirectory() )
- {
- size += sizeOfDirectory( file );
- }
- else
- {
+ for (final File file : files) {
+ if (file.isDirectory()) {
+ size += sizeOfDirectory(file);
+ } else {
size += file.length();
}
}
@@ -1688,10 +1450,8 @@ public static long sizeOfDirectory( final File directory )
* @throws IOException io issue
* @see #getFileNames(File, String, String, boolean)
*/
- public static List getFiles( File directory, String includes, String excludes )
- throws IOException
- {
- return getFiles( directory, includes, excludes, true );
+ public static List getFiles(File directory, String includes, String excludes) throws IOException {
+ return getFiles(directory, includes, excludes, true);
}
/**
@@ -1705,16 +1465,14 @@ public static List getFiles( File directory, String includes, String exclu
* @throws IOException io issue
* @see #getFileNames(File, String, String, boolean)
*/
- public static List getFiles( File directory, String includes, String excludes, boolean includeBasedir )
- throws IOException
- {
- List fileNames = getFileNames( directory, includes, excludes, includeBasedir );
+ public static List getFiles(File directory, String includes, String excludes, boolean includeBasedir)
+ throws IOException {
+ List fileNames = getFileNames(directory, includes, excludes, includeBasedir);
List files = new ArrayList();
- for ( String filename : fileNames )
- {
- files.add( new File( filename ) );
+ for (String filename : fileNames) {
+ files.add(new File(filename));
}
return files;
@@ -1730,10 +1488,9 @@ public static List getFiles( File directory, String includes, String exclu
* @return a list of files as String
* @throws IOException io issue
*/
- public static List getFileNames( File directory, String includes, String excludes, boolean includeBasedir )
- throws IOException
- {
- return getFileNames( directory, includes, excludes, includeBasedir, true );
+ public static List getFileNames(File directory, String includes, String excludes, boolean includeBasedir)
+ throws IOException {
+ return getFileNames(directory, includes, excludes, includeBasedir, true);
}
/**
@@ -1747,11 +1504,10 @@ public static List getFileNames( File directory, String includes, String
* @return a list of files as String
* @throws IOException io issue
*/
- 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 );
+ 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);
}
/**
@@ -1764,11 +1520,9 @@ public static List getFileNames( File directory, String includes, String
* @return a list of directories as String
* @throws IOException io issue
*/
- public static List getDirectoryNames( File directory, String includes, String excludes,
- boolean includeBasedir )
- throws IOException
- {
- return getDirectoryNames( directory, includes, excludes, includeBasedir, true );
+ public static List getDirectoryNames(
+ File directory, String includes, String excludes, boolean includeBasedir) throws IOException {
+ return getDirectoryNames(directory, includes, excludes, includeBasedir, true);
}
/**
@@ -1782,11 +1536,10 @@ public static List getDirectoryNames( File directory, String includes, S
* @return a list of directories as String
* @throws IOException io issue
*/
- 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 );
+ 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);
}
/**
@@ -1802,61 +1555,53 @@ public static List getDirectoryNames( File directory, String includes, S
* @return a list of files as String
* @throws IOException io issue
*/
- public static List getFileAndDirectoryNames( File directory, String includes, String excludes,
- boolean includeBasedir, boolean isCaseSensitive,
- boolean getFiles, boolean getDirectories )
- throws IOException
- {
+ public static List getFileAndDirectoryNames(
+ File directory,
+ String includes,
+ String excludes,
+ boolean includeBasedir,
+ boolean isCaseSensitive,
+ boolean getFiles,
+ boolean getDirectories)
+ throws IOException {
DirectoryScanner scanner = new DirectoryScanner();
- scanner.setBasedir( directory );
+ scanner.setBasedir(directory);
- if ( includes != null )
- {
- scanner.setIncludes( StringUtils.split( includes, "," ) );
+ if (includes != null) {
+ scanner.setIncludes(StringUtils.split(includes, ","));
}
- if ( excludes != null )
- {
- scanner.setExcludes( StringUtils.split( excludes, "," ) );
+ if (excludes != null) {
+ scanner.setExcludes(StringUtils.split(excludes, ","));
}
- scanner.setCaseSensitive( isCaseSensitive );
+ scanner.setCaseSensitive(isCaseSensitive);
scanner.scan();
List list = new ArrayList();
- if ( getFiles )
- {
+ if (getFiles) {
String[] files = scanner.getIncludedFiles();
- for ( String file : files )
- {
- if ( includeBasedir )
- {
- list.add( directory + FileUtils.FS + file );
- }
- else
- {
- list.add( file );
+ for (String file : files) {
+ if (includeBasedir) {
+ list.add(directory + FileUtils.FS + file);
+ } else {
+ list.add(file);
}
}
}
- if ( getDirectories )
- {
+ if (getDirectories) {
String[] directories = scanner.getIncludedDirectories();
- for ( String directory1 : directories )
- {
- if ( includeBasedir )
- {
- list.add( directory + FileUtils.FS + directory1 );
- }
- else
- {
- list.add( directory1 );
+ for (String directory1 : directories) {
+ if (includeBasedir) {
+ list.add(directory + FileUtils.FS + directory1);
+ } else {
+ list.add(directory1);
}
}
}
@@ -1871,10 +1616,8 @@ public static List getFileAndDirectoryNames( File directory, String incl
* @param destinationDirectory the target dir
* @throws IOException if any
*/
- public static void copyDirectory( File sourceDirectory, File destinationDirectory )
- throws IOException
- {
- copyDirectory( sourceDirectory, destinationDirectory, "**", null );
+ public static void copyDirectory(File sourceDirectory, File destinationDirectory) throws IOException {
+ copyDirectory(sourceDirectory, destinationDirectory, "**", null);
}
/**
@@ -1887,26 +1630,22 @@ public static void copyDirectory( File sourceDirectory, File destinationDirector
* @throws IOException if any
* @see #getFiles(File, String, String)
*/
- public static void copyDirectory( File sourceDirectory, File destinationDirectory, String includes,
- String excludes )
- throws IOException
- {
- if ( !sourceDirectory.exists() )
- {
+ public static void copyDirectory(File sourceDirectory, File destinationDirectory, String includes, String excludes)
+ throws IOException {
+ if (!sourceDirectory.exists()) {
return;
}
- List files = getFiles( sourceDirectory, includes, excludes );
+ List files = getFiles(sourceDirectory, includes, excludes);
- for ( File file : files )
- {
- copyFileToDirectory( file, destinationDirectory );
+ for (File file : files) {
+ copyFileToDirectory(file, destinationDirectory);
}
}
/**
* Copies a entire directory layout : no files will be copied only directories
- *
+ *
* Note:
*
* - It will include empty directories.
@@ -1920,69 +1659,57 @@ public static void copyDirectory( File sourceDirectory, File destinationDirector
* @throws IOException if any
* @since 1.5.7
*/
- public static void copyDirectoryLayout( File sourceDirectory, File destinationDirectory, String[] includes,
- String[] excludes )
- throws IOException
- {
- if ( sourceDirectory == null )
- {
- throw new IOException( "source directory can't be null." );
+ public static void copyDirectoryLayout(
+ File sourceDirectory, File destinationDirectory, String[] includes, String[] excludes) throws IOException {
+ if (sourceDirectory == null) {
+ throw new IOException("source directory can't be null.");
}
- if ( destinationDirectory == null )
- {
- throw new IOException( "destination directory can't be null." );
+ if (destinationDirectory == null) {
+ throw new IOException("destination directory can't be null.");
}
- if ( sourceDirectory.equals( destinationDirectory ) )
- {
- throw new IOException( "source and destination are the same directory." );
+ if (sourceDirectory.equals(destinationDirectory)) {
+ throw new IOException("source and destination are the same directory.");
}
- if ( !sourceDirectory.exists() )
- {
- throw new IOException( "Source directory doesn't exists (" + sourceDirectory.getAbsolutePath() + ")." );
+ if (!sourceDirectory.exists()) {
+ throw new IOException("Source directory doesn't exists (" + sourceDirectory.getAbsolutePath() + ").");
}
DirectoryScanner scanner = new DirectoryScanner();
- scanner.setBasedir( sourceDirectory );
+ scanner.setBasedir(sourceDirectory);
- if ( includes != null && includes.length >= 1 )
- {
- scanner.setIncludes( includes );
- }
- else
- {
- scanner.setIncludes( new String[] { "**" } );
+ if (includes != null && includes.length >= 1) {
+ scanner.setIncludes(includes);
+ } else {
+ scanner.setIncludes(new String[] {"**"});
}
- if ( excludes != null && excludes.length >= 1 )
- {
- scanner.setExcludes( excludes );
+ if (excludes != null && excludes.length >= 1) {
+ scanner.setExcludes(excludes);
}
scanner.addDefaultExcludes();
scanner.scan();
- List includedDirectories = Arrays.asList( scanner.getIncludedDirectories() );
+ List includedDirectories = Arrays.asList(scanner.getIncludedDirectories());
- for ( String name : includedDirectories )
- {
- File source = new File( sourceDirectory, name );
+ for (String name : includedDirectories) {
+ File source = new File(sourceDirectory, name);
- if ( source.equals( sourceDirectory ) )
- {
+ if (source.equals(sourceDirectory)) {
continue;
}
- File destination = new File( destinationDirectory, name );
+ File destination = new File(destinationDirectory, name);
destination.mkdirs();
}
}
/**
*
Copies a entire directory structure.
- *
+ *
* Note:
*
- *
+ *
* A token in the incoming character stream may be escaped by prepending an "escape sequence" which is
* specified to the constructor. An escaped token is passed through as written, with the escape sequence removed. This
* allows things which would look like tokens to be read literally rather than interpolated.
- *
+ *
* @author jdcasey Created on Feb 3, 2005
* @see InterpolationFilterReader
*/
-public class LineOrientedInterpolatingReader
- extends FilterReader
-{
+public class LineOrientedInterpolatingReader extends FilterReader {
public static final String DEFAULT_START_DELIM = "${";
public static final String DEFAULT_END_DELIM = "}";
@@ -85,17 +83,16 @@ public class LineOrientedInterpolatingReader
/**
* Construct an interpolating Reader, specifying token delimiters and the escape sequence.
- *
+ *
* @param reader the Reader to be filtered.
* @param context keyword/value pairs for interpolation.
* @param startDelim character sequence which (possibly) begins a token.
* @param endDelim character sequence which ends a token.
* @param escapeSeq escape sequence
*/
- public LineOrientedInterpolatingReader( Reader reader, Map context, String startDelim, String endDelim,
- String escapeSeq )
- {
- super( reader );
+ public LineOrientedInterpolatingReader(
+ Reader reader, Map context, String startDelim, String endDelim, String escapeSeq) {
+ super(reader);
this.startDelim = startDelim;
@@ -106,86 +103,70 @@ public LineOrientedInterpolatingReader( Reader reader, Map context, S
// Expressions have to be at least this size...
this.minExpressionSize = startDelim.length() + endDelim.length() + 1;
- this.context = Collections.unmodifiableMap( context );
+ this.context = Collections.unmodifiableMap(context);
this.reflector = new Reflector();
- if ( reader instanceof PushbackReader )
- {
+ if (reader instanceof PushbackReader) {
this.pushbackReader = (PushbackReader) reader;
- }
- else
- {
- this.pushbackReader = new PushbackReader( reader, 1 );
+ } else {
+ this.pushbackReader = new PushbackReader(reader, 1);
}
}
/**
* Filters a Reader using the default escape sequence "\".
- *
+ *
* @param reader the Reader to be filtered.
* @param context keyword/value pairs for interpolation.
* @param startDelim the character sequence which (possibly) begins a token.
* @param endDelim the character sequence which ends a token.
*/
- public LineOrientedInterpolatingReader( Reader reader, Map context, String startDelim, String endDelim )
- {
- this( reader, context, startDelim, endDelim, DEFAULT_ESCAPE_SEQ );
+ public LineOrientedInterpolatingReader(Reader reader, Map context, String startDelim, String endDelim) {
+ this(reader, context, startDelim, endDelim, DEFAULT_ESCAPE_SEQ);
}
/**
* Filters a Reader using the default escape sequence "\" and token delimiters "${", "}".
- *
+ *
* @param reader the Reader to be filtered.
* @param context keyword/value pairs for interpolation.
*/
- public LineOrientedInterpolatingReader( Reader reader, Map context )
- {
- this( reader, context, DEFAULT_START_DELIM, DEFAULT_END_DELIM, DEFAULT_ESCAPE_SEQ );
+ public LineOrientedInterpolatingReader(Reader reader, Map context) {
+ this(reader, context, DEFAULT_START_DELIM, DEFAULT_END_DELIM, DEFAULT_ESCAPE_SEQ);
}
@Override
- public int read()
- throws IOException
- {
- if ( line == null || lineIdx >= line.length() )
- {
+ public int read() throws IOException {
+ if (line == null || lineIdx >= line.length()) {
readAndInterpolateLine();
}
int next = -1;
- if ( line != null && lineIdx < line.length() )
- {
- next = line.charAt( lineIdx++ );
+ if (line != null && lineIdx < line.length()) {
+ next = line.charAt(lineIdx++);
}
return next;
}
@Override
- public int read( char[] cbuf, int off, int len )
- throws IOException
- {
+ public int read(char[] cbuf, int off, int len) throws IOException {
int fillCount = 0;
- for ( int i = off; i < off + len; i++ )
- {
+ for (int i = off; i < off + len; i++) {
int next = read();
- if ( next > -1 )
- {
+ if (next > -1) {
cbuf[i] = (char) next;
- }
- else
- {
+ } else {
break;
}
fillCount++;
}
- if ( fillCount == 0 )
- {
+ if (fillCount == 0) {
fillCount = -1;
}
@@ -193,17 +174,13 @@ public int read( char[] cbuf, int off, int len )
}
@Override
- public long skip( long n )
- throws IOException
- {
+ public long skip(long n) throws IOException {
long skipCount = 0;
- for ( long i = 0; i < n; i++ )
- {
+ for (long i = 0; i < n; i++) {
int next = read();
- if ( next < 0 )
- {
+ if (next < 0) {
break;
}
@@ -213,27 +190,21 @@ public long skip( long n )
return skipCount;
}
- private void readAndInterpolateLine()
- throws IOException
- {
+ private void readAndInterpolateLine() throws IOException {
String rawLine = readLine();
- if ( rawLine != null )
- {
- Set expressions = parseForExpressions( rawLine );
+ if (rawLine != null) {
+ Set expressions = parseForExpressions(rawLine);
- Map evaluatedExpressions = evaluateExpressions( expressions );
+ Map evaluatedExpressions = evaluateExpressions(expressions);
- String interpolated = replaceWithInterpolatedValues( rawLine, evaluatedExpressions );
+ String interpolated = replaceWithInterpolatedValues(rawLine, evaluatedExpressions);
- if ( interpolated != null && interpolated.length() > 0 )
- {
+ if (interpolated != null && interpolated.length() > 0) {
line = interpolated;
lineIdx = 0;
}
- }
- else
- {
+ } else {
line = null;
lineIdx = -1;
}
@@ -243,97 +214,73 @@ private void readAndInterpolateLine()
* Read one line from the wrapped Reader. A line is a sequence of characters ending in CRLF, CR, or LF. The
* terminating character(s) will be included in the returned line.
*/
- private String readLine()
- throws IOException
- {
- StringBuilder lineBuffer = new StringBuilder( 40 ); // half of the "normal" line maxsize
+ private String readLine() throws IOException {
+ StringBuilder lineBuffer = new StringBuilder(40); // half of the "normal" line maxsize
int next;
boolean lastWasCR = false;
- while ( ( next = pushbackReader.read() ) > -1 )
- {
+ while ((next = pushbackReader.read()) > -1) {
char c = (char) next;
- if ( c == CARRIAGE_RETURN_CHAR )
- {
+ if (c == CARRIAGE_RETURN_CHAR) {
lastWasCR = true;
- lineBuffer.append( c );
- }
- else if ( c == NEWLINE_CHAR )
- {
- lineBuffer.append( c );
+ lineBuffer.append(c);
+ } else if (c == NEWLINE_CHAR) {
+ lineBuffer.append(c);
break; // end of line.
- }
- else if ( lastWasCR )
- {
- pushbackReader.unread( c );
+ } else if (lastWasCR) {
+ pushbackReader.unread(c);
break;
- }
- else
- {
- lineBuffer.append( c );
+ } else {
+ lineBuffer.append(c);
}
}
- if ( lineBuffer.length() < 1 )
- {
+ if (lineBuffer.length() < 1) {
return null;
- }
- else
- {
+ } else {
return lineBuffer.toString();
}
}
- private String replaceWithInterpolatedValues( String rawLine, Map evaluatedExpressions )
- {
+ private String replaceWithInterpolatedValues(String rawLine, Map evaluatedExpressions) {
String result = rawLine;
- for ( Object o : evaluatedExpressions.entrySet() )
- {
+ for (Object o : evaluatedExpressions.entrySet()) {
Map.Entry entry = (Map.Entry) o;
String expression = (String) entry.getKey();
- String value = String.valueOf( entry.getValue() );
+ String value = String.valueOf(entry.getValue());
- result = findAndReplaceUnlessEscaped( result, expression, value );
+ result = findAndReplaceUnlessEscaped(result, expression, value);
}
return result;
}
- private Map evaluateExpressions( Set expressions )
- {
+ private Map evaluateExpressions(Set expressions) {
Map evaluated = new TreeMap();
- for ( Object expression : expressions )
- {
+ for (Object expression : expressions) {
String rawExpression = (String) expression;
String realExpression =
- rawExpression.substring( startDelim.length(), rawExpression.length() - endDelim.length() );
-
- String[] parts = realExpression.split( "\\." );
- if ( parts.length > 0 )
- {
- Object value = context.get( parts[0] );
-
- if ( value != null )
- {
- for ( int i = 1; i < parts.length; i++ )
- {
- try
- {
- value = reflector.getObjectProperty( value, parts[i] );
-
- if ( value == null )
- {
+ rawExpression.substring(startDelim.length(), rawExpression.length() - endDelim.length());
+
+ String[] parts = realExpression.split("\\.");
+ if (parts.length > 0) {
+ Object value = context.get(parts[0]);
+
+ if (value != null) {
+ for (int i = 1; i < parts.length; i++) {
+ try {
+ value = reflector.getObjectProperty(value, parts[i]);
+
+ if (value == null) {
break;
}
- }
- catch ( ReflectorException e )
- {
+ } catch (ReflectorException e) {
// TODO: Fix this! It should report, but not interrupt.
e.printStackTrace();
@@ -341,7 +288,7 @@ private Map evaluateExpressions( Set expressions )
}
}
- evaluated.put( rawExpression, value );
+ evaluated.put(rawExpression, value);
}
}
}
@@ -349,32 +296,27 @@ private Map evaluateExpressions( Set expressions )
return evaluated;
}
- private Set parseForExpressions( String rawLine )
- {
+ private Set parseForExpressions(String rawLine) {
Set expressions = new HashSet();
- if ( rawLine != null )
- {
+ if (rawLine != null) {
int placeholder = -1;
- do
- {
+ do {
// find the beginning of the next expression.
- int start = findDelimiter( rawLine, startDelim, placeholder );
+ int start = findDelimiter(rawLine, startDelim, placeholder);
// if we can't find a start-delimiter, then there is no valid expression. Ignore everything else.
- if ( start < 0 )
- {
+ if (start < 0) {
// no expression found.
break;
}
// find the end of the next expression.
- int end = findDelimiter( rawLine, endDelim, start + 1 );
+ int end = findDelimiter(rawLine, endDelim, start + 1);
// if we can't find an end-delimiter, then this is not a valid expression. Ignore it.
- if ( end < 0 )
- {
+ if (end < 0) {
// no VALID expression found.
break;
}
@@ -382,93 +324,73 @@ private Set parseForExpressions( String rawLine )
// if we reach this point, we have a valid start and end position, which
// means we have a valid expression. So, we add it to the set of
// expressions in need of evaluation.
- expressions.add( rawLine.substring( start, end + endDelim.length() ) );
+ expressions.add(rawLine.substring(start, end + endDelim.length()));
// increment the placeholder so we can look beyond this expression.
placeholder = end + 1;
- }
- while ( placeholder < rawLine.length() - minExpressionSize );
+ } while (placeholder < rawLine.length() - minExpressionSize);
}
return expressions;
}
- private int findDelimiter( String rawLine, String delimiter, int lastPos )
- {
+ private int findDelimiter(String rawLine, String delimiter, int lastPos) {
int placeholder = lastPos;
int position;
- do
- {
- position = rawLine.indexOf( delimiter, placeholder );
+ do {
+ position = rawLine.indexOf(delimiter, placeholder);
- if ( position < 0 )
- {
+ if (position < 0) {
break;
- }
- else
- {
- int escEndIdx = rawLine.indexOf( escapeSeq, placeholder ) + escapeSeq.length();
+ } else {
+ int escEndIdx = rawLine.indexOf(escapeSeq, placeholder) + escapeSeq.length();
- if ( escEndIdx > escapeSeq.length() - 1 && escEndIdx == position )
- {
+ if (escEndIdx > escapeSeq.length() - 1 && escEndIdx == position) {
placeholder = position + 1;
position = -1;
}
}
- }
- while ( position < 0 && placeholder < rawLine.length() - endDelim.length() );
+ } while (position < 0 && placeholder < rawLine.length() - endDelim.length());
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// use length() - endDelim.length() b/c otherwise there is nothing left to search.
return position;
}
- private String findAndReplaceUnlessEscaped( String rawLine, String search, String replace )
- {
- StringBuilder lineBuffer = new StringBuilder( (int) ( rawLine.length() * 1.5 ) );
+ private String findAndReplaceUnlessEscaped(String rawLine, String search, String replace) {
+ StringBuilder lineBuffer = new StringBuilder((int) (rawLine.length() * 1.5));
int lastReplacement = -1;
- do
- {
- int nextReplacement = rawLine.indexOf( search, lastReplacement + 1 );
- if ( nextReplacement > -1 )
- {
- if ( lastReplacement < 0 )
- {
+ do {
+ int nextReplacement = rawLine.indexOf(search, lastReplacement + 1);
+ if (nextReplacement > -1) {
+ if (lastReplacement < 0) {
lastReplacement = 0;
}
- lineBuffer.append( rawLine, lastReplacement, nextReplacement );
+ lineBuffer.append(rawLine, lastReplacement, nextReplacement);
- int escIdx = rawLine.indexOf( escapeSeq, lastReplacement + 1 );
- if ( escIdx > -1 && escIdx + escapeSeq.length() == nextReplacement )
- {
- lineBuffer.setLength( lineBuffer.length() - escapeSeq.length() );
- lineBuffer.append( search );
- }
- else
- {
- lineBuffer.append( replace );
+ int escIdx = rawLine.indexOf(escapeSeq, lastReplacement + 1);
+ if (escIdx > -1 && escIdx + escapeSeq.length() == nextReplacement) {
+ lineBuffer.setLength(lineBuffer.length() - escapeSeq.length());
+ lineBuffer.append(search);
+ } else {
+ lineBuffer.append(replace);
}
lastReplacement = nextReplacement + search.length();
- }
- else
- {
+ } else {
break;
}
- }
- while ( lastReplacement > -1 );
+ } while (lastReplacement > -1);
- if ( lastReplacement < rawLine.length() )
- {
- lineBuffer.append( rawLine, lastReplacement, rawLine.length() );
+ if (lastReplacement < rawLine.length()) {
+ lineBuffer.append(rawLine, lastReplacement, rawLine.length());
}
return lineBuffer.toString();
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/MatchPattern.java b/src/main/java/org/codehaus/plexus/util/MatchPattern.java
index de57de21..4dc757e3 100644
--- a/src/main/java/org/codehaus/plexus/util/MatchPattern.java
+++ b/src/main/java/org/codehaus/plexus/util/MatchPattern.java
@@ -23,13 +23,12 @@
/**
* Describes a match target for SelectorUtils.
- *
+ *
* Significantly more efficient than using strings, since re-evaluation and re-tokenizing is avoided.
*
* @author Kristian Rosenvold
*/
-public class MatchPattern
-{
+public class MatchPattern {
private final String source;
private final String regexPattern;
@@ -40,107 +39,85 @@ public class MatchPattern
private final char[][] tokenizedChar;
- private MatchPattern( String source, String separator )
- {
- regexPattern = SelectorUtils.isRegexPrefixedPattern( source )
- ? source.substring( SelectorUtils.REGEX_HANDLER_PREFIX.length(),
- source.length() - SelectorUtils.PATTERN_HANDLER_SUFFIX.length() )
- : null;
- this.source = SelectorUtils.isAntPrefixedPattern( source )
- ? source.substring( SelectorUtils.ANT_HANDLER_PREFIX.length(),
- source.length() - SelectorUtils.PATTERN_HANDLER_SUFFIX.length() )
- : source;
+ private MatchPattern(String source, String separator) {
+ regexPattern = SelectorUtils.isRegexPrefixedPattern(source)
+ ? source.substring(
+ SelectorUtils.REGEX_HANDLER_PREFIX.length(),
+ source.length() - SelectorUtils.PATTERN_HANDLER_SUFFIX.length())
+ : null;
+ this.source = SelectorUtils.isAntPrefixedPattern(source)
+ ? source.substring(
+ SelectorUtils.ANT_HANDLER_PREFIX.length(),
+ source.length() - SelectorUtils.PATTERN_HANDLER_SUFFIX.length())
+ : source;
this.separator = separator;
- tokenized = tokenizePathToString( this.source, separator );
+ tokenized = tokenizePathToString(this.source, separator);
tokenizedChar = new char[tokenized.length][];
- for ( int i = 0; i < tokenized.length; i++ )
- {
+ for (int i = 0; i < tokenized.length; i++) {
tokenizedChar[i] = tokenized[i].toCharArray();
}
-
}
- public boolean matchPath( String str, boolean isCaseSensitive )
- {
- if ( regexPattern != null )
- {
- return str.matches( regexPattern );
- }
- else
- {
- return SelectorUtils.matchAntPathPattern( this, str, separator, isCaseSensitive );
+ public boolean matchPath(String str, boolean isCaseSensitive) {
+ if (regexPattern != null) {
+ return str.matches(regexPattern);
+ } else {
+ return SelectorUtils.matchAntPathPattern(this, str, separator, isCaseSensitive);
}
}
- boolean matchPath( String str, char[][] strDirs, boolean isCaseSensitive )
- {
- if ( regexPattern != null )
- {
- return str.matches( regexPattern );
- }
- else
- {
- return SelectorUtils.matchAntPathPattern( getTokenizedPathChars(), strDirs, isCaseSensitive );
+ boolean matchPath(String str, char[][] strDirs, boolean isCaseSensitive) {
+ if (regexPattern != null) {
+ return str.matches(regexPattern);
+ } else {
+ return SelectorUtils.matchAntPathPattern(getTokenizedPathChars(), strDirs, isCaseSensitive);
}
}
- public boolean matchPatternStart( String str, boolean isCaseSensitive )
- {
- if ( regexPattern != null )
- {
+ public boolean matchPatternStart(String str, boolean isCaseSensitive) {
+ if (regexPattern != null) {
// FIXME: ICK! But we can't do partial matches for regex, so we have to reserve judgement until we have
// a file to deal with, or we can definitely say this is an exclusion...
return true;
- }
- else
- {
- String altStr = str.replace( '\\', '/' );
+ } else {
+ String altStr = str.replace('\\', '/');
- return SelectorUtils.matchAntPathPatternStart( this, str, File.separator, isCaseSensitive )
- || SelectorUtils.matchAntPathPatternStart( this, altStr, "/", isCaseSensitive );
+ return SelectorUtils.matchAntPathPatternStart(this, str, File.separator, isCaseSensitive)
+ || SelectorUtils.matchAntPathPatternStart(this, altStr, "/", isCaseSensitive);
}
}
- public String[] getTokenizedPathString()
- {
+ public String[] getTokenizedPathString() {
return tokenized;
}
- public char[][] getTokenizedPathChars()
- {
+ public char[][] getTokenizedPathChars() {
return tokenizedChar;
}
- public boolean startsWith( String string )
- {
- return source.startsWith( string );
+ public boolean startsWith(String string) {
+ return source.startsWith(string);
}
- static String[] tokenizePathToString( String path, String separator )
- {
+ static String[] tokenizePathToString(String path, String separator) {
List ret = new ArrayList();
- StringTokenizer st = new StringTokenizer( path, separator );
- while ( st.hasMoreTokens() )
- {
- ret.add( st.nextToken() );
+ StringTokenizer st = new StringTokenizer(path, separator);
+ while (st.hasMoreTokens()) {
+ ret.add(st.nextToken());
}
- return ret.toArray( new String[0] );
+ return ret.toArray(new String[0]);
}
- static char[][] tokenizePathToCharArray( String path, String separator )
- {
- String[] tokenizedName = tokenizePathToString( path, separator );
+ static char[][] tokenizePathToCharArray(String path, String separator) {
+ String[] tokenizedName = tokenizePathToString(path, separator);
char[][] tokenizedNameChar = new char[tokenizedName.length][];
- for ( int i = 0; i < tokenizedName.length; i++ )
- {
+ for (int i = 0; i < tokenizedName.length; i++) {
tokenizedNameChar[i] = tokenizedName[i].toCharArray();
}
return tokenizedNameChar;
}
- public static MatchPattern fromString( String source )
- {
- return new MatchPattern( source, File.separator );
+ public static MatchPattern fromString(String source) {
+ return new MatchPattern(source, File.separator);
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/MatchPatterns.java b/src/main/java/org/codehaus/plexus/util/MatchPatterns.java
index 35f9ea22..fd36a9d8 100644
--- a/src/main/java/org/codehaus/plexus/util/MatchPatterns.java
+++ b/src/main/java/org/codehaus/plexus/util/MatchPatterns.java
@@ -9,88 +9,71 @@
*
* @author Kristian Rosenvold
*/
-public class MatchPatterns
-{
+public class MatchPatterns {
private final MatchPattern[] patterns;
- private MatchPatterns( MatchPattern[] patterns )
- {
+ private MatchPatterns(MatchPattern[] patterns) {
this.patterns = patterns;
}
/**
* Checks these MatchPatterns against a specified string.
- *
+ *
* Uses far less string tokenization than any of the alternatives.
*
* @param name The name to look for
* @param isCaseSensitive If the comparison is case sensitive
* @return true if any of the supplied patterns match
*/
- public boolean matches( String name, boolean isCaseSensitive )
- {
- String[] tokenized = MatchPattern.tokenizePathToString( name, File.separator );
- return matches( name, tokenized, isCaseSensitive );
+ public boolean matches(String name, boolean isCaseSensitive) {
+ String[] tokenized = MatchPattern.tokenizePathToString(name, File.separator);
+ return matches(name, tokenized, isCaseSensitive);
}
- public boolean matches( String name, String[] tokenizedName, boolean isCaseSensitive )
- {
+ public boolean matches(String name, String[] tokenizedName, boolean isCaseSensitive) {
char[][] tokenizedNameChar = new char[tokenizedName.length][];
- for ( int i = 0; i < tokenizedName.length; i++ )
- {
+ for (int i = 0; i < tokenizedName.length; i++) {
tokenizedNameChar[i] = tokenizedName[i].toCharArray();
}
return matches(name, tokenizedNameChar, isCaseSensitive);
}
- public boolean matches(String name, char[][] tokenizedNameChar, boolean isCaseSensitive)
- {
- for ( MatchPattern pattern : patterns )
- {
- if ( pattern.matchPath( name, tokenizedNameChar, isCaseSensitive ) )
- {
+ public boolean matches(String name, char[][] tokenizedNameChar, boolean isCaseSensitive) {
+ for (MatchPattern pattern : patterns) {
+ if (pattern.matchPath(name, tokenizedNameChar, isCaseSensitive)) {
return true;
}
}
return false;
}
- public boolean matchesPatternStart( String name, boolean isCaseSensitive )
- {
- for ( MatchPattern includesPattern : patterns )
- {
- if ( includesPattern.matchPatternStart( name, isCaseSensitive ) )
- {
+ public boolean matchesPatternStart(String name, boolean isCaseSensitive) {
+ for (MatchPattern includesPattern : patterns) {
+ if (includesPattern.matchPatternStart(name, isCaseSensitive)) {
return true;
}
}
return false;
}
- public static MatchPatterns from( String... sources )
- {
+ public static MatchPatterns from(String... sources) {
final int length = sources.length;
MatchPattern[] result = new MatchPattern[length];
- for ( int i = 0; i < length; i++ )
- {
- result[i] = MatchPattern.fromString( sources[i] );
+ for (int i = 0; i < length; i++) {
+ result[i] = MatchPattern.fromString(sources[i]);
}
- return new MatchPatterns( result );
+ return new MatchPatterns(result);
}
- public static MatchPatterns from( Iterable strings )
- {
- return new MatchPatterns( getMatchPatterns( strings ) );
+ public static MatchPatterns from(Iterable strings) {
+ return new MatchPatterns(getMatchPatterns(strings));
}
- private static MatchPattern[] getMatchPatterns( Iterable items )
- {
+ private static MatchPattern[] getMatchPatterns(Iterable items) {
List result = new ArrayList();
- for ( String string : items )
- {
- result.add( MatchPattern.fromString( string ) );
+ for (String string : items) {
+ result.add(MatchPattern.fromString(string));
}
- return result.toArray( new MatchPattern[0] );
+ return result.toArray(new MatchPattern[0]);
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/NioFiles.java b/src/main/java/org/codehaus/plexus/util/NioFiles.java
index eb62bac7..d7a00a78 100644
--- a/src/main/java/org/codehaus/plexus/util/NioFiles.java
+++ b/src/main/java/org/codehaus/plexus/util/NioFiles.java
@@ -30,74 +30,57 @@
/**
* Encapsulates use of java7 features, exposing mostly backward compatible types
*/
-@SuppressWarnings( "Since15" )
-public class NioFiles
-{
- public static boolean isSymbolicLink( File file )
- {
- return Files.isSymbolicLink( file.toPath() );
+@SuppressWarnings("Since15")
+public class NioFiles {
+ public static boolean isSymbolicLink(File file) {
+ return Files.isSymbolicLink(file.toPath());
}
- public static void chmod( File file, int mode )
- throws IOException
- {
+ public static void chmod(File file, int mode) throws IOException {
Path path = file.toPath();
- if ( !Files.isSymbolicLink( path ) )
- {
- Files.setPosixFilePermissions( path, getPermissions( mode ) );
+ if (!Files.isSymbolicLink(path)) {
+ Files.setPosixFilePermissions(path, getPermissions(mode));
}
}
- @SuppressWarnings( { "OctalInteger", "MagicNumber" } )
- private static Set getPermissions( int mode )
- {
+ @SuppressWarnings({"OctalInteger", "MagicNumber"})
+ private static Set getPermissions(int mode) {
Set perms = new HashSet<>();
// add owners permission
- if ( ( mode & 0400 ) > 0 )
- {
- perms.add( PosixFilePermission.OWNER_READ );
+ if ((mode & 0400) > 0) {
+ perms.add(PosixFilePermission.OWNER_READ);
}
- if ( ( mode & 0200 ) > 0 )
- {
- perms.add( PosixFilePermission.OWNER_WRITE );
+ if ((mode & 0200) > 0) {
+ perms.add(PosixFilePermission.OWNER_WRITE);
}
- if ( ( mode & 0100 ) > 0 )
- {
- perms.add( PosixFilePermission.OWNER_EXECUTE );
+ if ((mode & 0100) > 0) {
+ perms.add(PosixFilePermission.OWNER_EXECUTE);
}
// add group permissions
- if ( ( mode & 0040 ) > 0 )
- {
- perms.add( PosixFilePermission.GROUP_READ );
+ if ((mode & 0040) > 0) {
+ perms.add(PosixFilePermission.GROUP_READ);
}
- if ( ( mode & 0020 ) > 0 )
- {
- perms.add( PosixFilePermission.GROUP_WRITE );
+ if ((mode & 0020) > 0) {
+ perms.add(PosixFilePermission.GROUP_WRITE);
}
- if ( ( mode & 0010 ) > 0 )
- {
- perms.add( PosixFilePermission.GROUP_EXECUTE );
+ if ((mode & 0010) > 0) {
+ perms.add(PosixFilePermission.GROUP_EXECUTE);
}
// add others permissions
- if ( ( mode & 0004 ) > 0 )
- {
- perms.add( PosixFilePermission.OTHERS_READ );
+ if ((mode & 0004) > 0) {
+ perms.add(PosixFilePermission.OTHERS_READ);
}
- if ( ( mode & 0002 ) > 0 )
- {
- perms.add( PosixFilePermission.OTHERS_WRITE );
+ if ((mode & 0002) > 0) {
+ perms.add(PosixFilePermission.OTHERS_WRITE);
}
- if ( ( mode & 0001 ) > 0 )
- {
- perms.add( PosixFilePermission.OTHERS_EXECUTE );
+ if ((mode & 0001) > 0) {
+ perms.add(PosixFilePermission.OTHERS_EXECUTE);
}
return perms;
}
- public static long getLastModified( File file )
- throws IOException
- {
- BasicFileAttributes basicFileAttributes = Files.readAttributes( file.toPath(), BasicFileAttributes.class );
+ public static long getLastModified(File file) throws IOException {
+ BasicFileAttributes basicFileAttributes = Files.readAttributes(file.toPath(), BasicFileAttributes.class);
return basicFileAttributes.lastModifiedTime().toMillis();
}
@@ -108,38 +91,30 @@ public static long getLastModified( File file )
* @return A file that is the target of the symlink
* @throws java.io.IOException io issue
*/
-
- public static File readSymbolicLink( File symlink )
- throws IOException
- {
- Path path = Files.readSymbolicLink( symlink.toPath() );
+ public static File readSymbolicLink(File symlink) throws IOException {
+ Path path = Files.readSymbolicLink(symlink.toPath());
return path.toFile();
}
- public static File createSymbolicLink( File symlink, File target )
- throws IOException
- {
+ public static File createSymbolicLink(File symlink, File target) throws IOException {
Path link = symlink.toPath();
- if ( Files.exists( link, LinkOption.NOFOLLOW_LINKS ) )
- {
- Files.delete( link );
+ if (Files.exists(link, LinkOption.NOFOLLOW_LINKS)) {
+ Files.delete(link);
}
- link = Files.createSymbolicLink( link, target.toPath() );
+ link = Files.createSymbolicLink(link, target.toPath());
return link.toFile();
}
- public static boolean deleteIfExists( File file )
- throws IOException
- {
- return Files.deleteIfExists( file.toPath() );
+ public static boolean deleteIfExists(File file) throws IOException {
+ return Files.deleteIfExists(file.toPath());
}
- public static File copy( File source, File target )
- throws IOException
- {
- Path copy = Files.copy( source.toPath(), target.toPath(), StandardCopyOption.REPLACE_EXISTING,
- StandardCopyOption.COPY_ATTRIBUTES );
+ public static File copy(File source, File target) throws IOException {
+ Path copy = Files.copy(
+ source.toPath(),
+ target.toPath(),
+ StandardCopyOption.REPLACE_EXISTING,
+ StandardCopyOption.COPY_ATTRIBUTES);
return copy.toFile();
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/Os.java b/src/main/java/org/codehaus/plexus/util/Os.java
index b4ed2882..95b29cb6 100644
--- a/src/main/java/org/codehaus/plexus/util/Os.java
+++ b/src/main/java/org/codehaus/plexus/util/Os.java
@@ -67,8 +67,7 @@
* @since 1.0
*
*/
-public class Os
-{
+public class Os {
// define the families for easier reference
public static final String FAMILY_DOS = "dos";
@@ -96,13 +95,13 @@ public class Os
private static final Set validFamilies = setValidFamilies();
// get the current info
- private static final String PATH_SEP = System.getProperty( "path.separator" );
+ private static final String PATH_SEP = System.getProperty("path.separator");
- public static final String OS_NAME = System.getProperty( "os.name" ).toLowerCase( Locale.US );
+ public static final String OS_NAME = System.getProperty("os.name").toLowerCase(Locale.US);
- public static final String OS_ARCH = System.getProperty( "os.arch" ).toLowerCase( Locale.US );
+ public static final String OS_ARCH = System.getProperty("os.arch").toLowerCase(Locale.US);
- public static final String OS_VERSION = System.getProperty( "os.version" ).toLowerCase( Locale.US );
+ public static final String OS_VERSION = System.getProperty("os.version").toLowerCase(Locale.US);
// Make sure this method is called after static fields it depends on have been set!
public static final String OS_FAMILY = getOsFamily();
@@ -118,44 +117,40 @@ public class Os
/**
* Default constructor
*/
- public Os()
- {
- }
+ public Os() {}
/**
* Constructor that sets the family attribute
- *
+ *
* @param family a String value
*/
- public Os( String family )
- {
- setFamily( family );
+ public Os(String family) {
+ setFamily(family);
}
/**
* Initializes the set of valid families.
*/
- private static Set setValidFamilies()
- {
+ private static Set setValidFamilies() {
Set valid = new HashSet();
- valid.add( FAMILY_DOS );
- valid.add( FAMILY_MAC );
- valid.add( FAMILY_NETWARE );
- valid.add( FAMILY_OS2 );
- valid.add( FAMILY_TANDEM );
- valid.add( FAMILY_UNIX );
- valid.add( FAMILY_WINDOWS );
- valid.add( FAMILY_WIN9X );
- valid.add( FAMILY_ZOS );
- valid.add( FAMILY_OS400 );
- valid.add( FAMILY_OPENVMS );
+ valid.add(FAMILY_DOS);
+ valid.add(FAMILY_MAC);
+ valid.add(FAMILY_NETWARE);
+ valid.add(FAMILY_OS2);
+ valid.add(FAMILY_TANDEM);
+ valid.add(FAMILY_UNIX);
+ valid.add(FAMILY_WINDOWS);
+ valid.add(FAMILY_WIN9X);
+ valid.add(FAMILY_ZOS);
+ valid.add(FAMILY_OS400);
+ valid.add(FAMILY_OPENVMS);
return valid;
}
/**
* Sets the desired OS family type
- *
+ *
* @param f The OS family type desired
* Possible values:
*
@@ -172,39 +167,35 @@ private static Set setValidFamilies()
* - openvms
*
*/
- public void setFamily( String f )
- {
- family = f.toLowerCase( Locale.US );
+ public void setFamily(String f) {
+ family = f.toLowerCase(Locale.US);
}
/**
* Sets the desired OS name
- *
+ *
* @param name The OS name
*/
- public void setName( String name )
- {
- this.name = name.toLowerCase( Locale.US );
+ public void setName(String name) {
+ this.name = name.toLowerCase(Locale.US);
}
/**
* Sets the desired OS architecture
- *
+ *
* @param arch The OS architecture
*/
- public void setArch( String arch )
- {
- this.arch = arch.toLowerCase( Locale.US );
+ public void setArch(String arch) {
+ this.arch = arch.toLowerCase(Locale.US);
}
/**
* Sets the desired OS version
- *
+ *
* @param version The OS version
*/
- public void setVersion( String version )
- {
- this.version = version.toLowerCase( Locale.US );
+ public void setVersion(String version) {
+ this.version = version.toLowerCase(Locale.US);
}
/**
@@ -213,64 +204,58 @@ public void setVersion( String version )
* @see Os#setFamily(String)
* @throws Exception any errir
*/
- public boolean eval()
- throws Exception
- {
- return isOs( family, name, arch, version );
+ public boolean eval() throws Exception {
+ return isOs(family, name, arch, version);
}
/**
* Determines if the current OS matches the given OS family.
- *
+ *
* @param family the family to check for
* @return true if the OS matches
* @since 1.0
*/
- public static boolean isFamily( String family )
- {
- return isOs( family, null, null, null );
+ public static boolean isFamily(String family) {
+ return isOs(family, null, null, null);
}
/**
* Determines if the current OS matches the given OS name.
- *
+ *
* @param name the OS name to check for
* @return true if the OS matches
* @since 1.0
*/
- public static boolean isName( String name )
- {
- return isOs( null, name, null, null );
+ public static boolean isName(String name) {
+ return isOs(null, name, null, null);
}
/**
* Determines if the current OS matches the given OS architecture.
- *
+ *
* @param arch the OS architecture to check for
* @return true if the OS matches
* @since 1.0
*/
- public static boolean isArch( String arch )
- {
- return isOs( null, null, arch, null );
+ public static boolean isArch(String arch) {
+ return isOs(null, null, arch, null);
}
/**
* Determines if the current OS matches the given OS version.
- *
+ *
* @param version the OS version to check for
* @return true if the OS matches
* @since 1.0
*/
- public static boolean isVersion( String version )
- {
- return isOs( null, null, null, version );
+ public static boolean isVersion(String version) {
+ return isOs(null, null, null, version);
}
/**
* Determines if the current OS matches the given OS family, name, architecture and version. The name, architecture
* and version are compared to the System properties os.name, os.version and os.arch in a case-independent way.
- *
+ *
* @param family The OS family
* @param name The OS name
* @param arch The OS architecture
@@ -278,84 +263,61 @@ public static boolean isVersion( String version )
* @return true if the OS matches
* @since 1.0
*/
- public static boolean isOs( String family, String name, String arch, String version )
- {
+ public static boolean isOs(String family, String name, String arch, String version) {
boolean retValue = false;
- if ( family != null || name != null || arch != null || version != null )
- {
+ if (family != null || name != null || arch != null || version != null) {
boolean isFamily = true;
boolean isName = true;
boolean isArch = true;
boolean isVersion = true;
- if ( family != null )
- {
- if ( family.equalsIgnoreCase( FAMILY_WINDOWS ) )
- {
- isFamily = OS_NAME.contains( FAMILY_WINDOWS );
- }
- else if ( family.equalsIgnoreCase( FAMILY_OS2 ) )
- {
- isFamily = OS_NAME.contains( FAMILY_OS2 );
- }
- else if ( family.equalsIgnoreCase( FAMILY_NETWARE ) )
- {
- isFamily = OS_NAME.contains( FAMILY_NETWARE );
- }
- else if ( family.equalsIgnoreCase( FAMILY_DOS ) )
- {
- isFamily = PATH_SEP.equals( ";" ) && !isFamily( FAMILY_NETWARE ) && !isFamily( FAMILY_WINDOWS )
- && !isFamily( FAMILY_WIN9X );
-
- }
- else if ( family.equalsIgnoreCase( FAMILY_MAC ) )
- {
- isFamily = OS_NAME.contains( FAMILY_MAC );
- }
- else if ( family.equalsIgnoreCase( FAMILY_TANDEM ) )
- {
- isFamily = OS_NAME.contains( "nonstop_kernel" );
- }
- else if ( family.equalsIgnoreCase( FAMILY_UNIX ) )
- {
- isFamily = PATH_SEP.equals( ":" ) && !isFamily( FAMILY_OPENVMS )
- && ( !isFamily( FAMILY_MAC ) || OS_NAME.endsWith( "x" ) );
- }
- else if ( family.equalsIgnoreCase( FAMILY_WIN9X ) )
- {
- isFamily = isFamily( FAMILY_WINDOWS ) && ( OS_NAME.contains( "95" ) || OS_NAME.contains( "98" )
- || OS_NAME.contains( "me" ) || OS_NAME.contains( "ce" ) );
- }
- else if ( family.equalsIgnoreCase( FAMILY_ZOS ) )
- {
- isFamily = OS_NAME.contains( FAMILY_ZOS ) || OS_NAME.contains( "os/390" );
- }
- else if ( family.equalsIgnoreCase( FAMILY_OS400 ) )
- {
- isFamily = OS_NAME.contains( FAMILY_OS400 );
- }
- else if ( family.equalsIgnoreCase( FAMILY_OPENVMS ) )
- {
- isFamily = OS_NAME.contains( FAMILY_OPENVMS );
- }
- else
- {
- isFamily = OS_NAME.contains( family.toLowerCase( Locale.US ) );
+ if (family != null) {
+ if (family.equalsIgnoreCase(FAMILY_WINDOWS)) {
+ isFamily = OS_NAME.contains(FAMILY_WINDOWS);
+ } else if (family.equalsIgnoreCase(FAMILY_OS2)) {
+ isFamily = OS_NAME.contains(FAMILY_OS2);
+ } else if (family.equalsIgnoreCase(FAMILY_NETWARE)) {
+ isFamily = OS_NAME.contains(FAMILY_NETWARE);
+ } else if (family.equalsIgnoreCase(FAMILY_DOS)) {
+ isFamily = PATH_SEP.equals(";")
+ && !isFamily(FAMILY_NETWARE)
+ && !isFamily(FAMILY_WINDOWS)
+ && !isFamily(FAMILY_WIN9X);
+
+ } else if (family.equalsIgnoreCase(FAMILY_MAC)) {
+ isFamily = OS_NAME.contains(FAMILY_MAC);
+ } else if (family.equalsIgnoreCase(FAMILY_TANDEM)) {
+ isFamily = OS_NAME.contains("nonstop_kernel");
+ } else if (family.equalsIgnoreCase(FAMILY_UNIX)) {
+ isFamily = PATH_SEP.equals(":")
+ && !isFamily(FAMILY_OPENVMS)
+ && (!isFamily(FAMILY_MAC) || OS_NAME.endsWith("x"));
+ } else if (family.equalsIgnoreCase(FAMILY_WIN9X)) {
+ isFamily = isFamily(FAMILY_WINDOWS)
+ && (OS_NAME.contains("95")
+ || OS_NAME.contains("98")
+ || OS_NAME.contains("me")
+ || OS_NAME.contains("ce"));
+ } else if (family.equalsIgnoreCase(FAMILY_ZOS)) {
+ isFamily = OS_NAME.contains(FAMILY_ZOS) || OS_NAME.contains("os/390");
+ } else if (family.equalsIgnoreCase(FAMILY_OS400)) {
+ isFamily = OS_NAME.contains(FAMILY_OS400);
+ } else if (family.equalsIgnoreCase(FAMILY_OPENVMS)) {
+ isFamily = OS_NAME.contains(FAMILY_OPENVMS);
+ } else {
+ isFamily = OS_NAME.contains(family.toLowerCase(Locale.US));
}
}
- if ( name != null )
- {
- isName = name.toLowerCase( Locale.US ).equals( OS_NAME );
+ if (name != null) {
+ isName = name.toLowerCase(Locale.US).equals(OS_NAME);
}
- if ( arch != null )
- {
- isArch = arch.toLowerCase( Locale.US ).equals( OS_ARCH );
+ if (arch != null) {
+ isArch = arch.toLowerCase(Locale.US).equals(OS_ARCH);
}
- if ( version != null )
- {
- isVersion = version.toLowerCase( Locale.US ).equals( OS_VERSION );
+ if (version != null) {
+ isVersion = version.toLowerCase(Locale.US).equals(OS_VERSION);
}
retValue = isFamily && isName && isArch && isVersion;
}
@@ -364,28 +326,22 @@ else if ( family.equalsIgnoreCase( FAMILY_OPENVMS ) )
/**
* Helper method to determine the current OS family.
- *
+ *
* @return name of current OS family.
* @since 1.4.2
*/
- private static String getOsFamily()
- {
+ private static String getOsFamily() {
// in case the order of static initialization is
// wrong, get the list
// safely.
Set families = null;
- if ( !validFamilies.isEmpty() )
- {
+ if (!validFamilies.isEmpty()) {
families = validFamilies;
- }
- else
- {
+ } else {
families = setValidFamilies();
}
- for ( String fam : families )
- {
- if ( Os.isFamily( fam ) )
- {
+ for (String fam : families) {
+ if (Os.isFamily(fam)) {
return fam;
}
}
@@ -407,22 +363,20 @@ private static String getOsFamily()
* - os/400
* - openvms
*
- *
+ *
* @param theFamily the family to check.
* @return true if one of the valid families.
* @since 1.4.2
*/
- public static boolean isValidFamily( String theFamily )
- {
- return ( validFamilies.contains( theFamily ) );
+ public static boolean isValidFamily(String theFamily) {
+ return (validFamilies.contains(theFamily));
}
/**
* @return a copy of the valid families
* @since 1.4.2
*/
- public static Set getValidFamilies()
- {
- return new HashSet( validFamilies );
+ public static Set getValidFamilies() {
+ return new HashSet(validFamilies);
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/PathTool.java b/src/main/java/org/codehaus/plexus/util/PathTool.java
index b8392cdb..e6deab6b 100644
--- a/src/main/java/org/codehaus/plexus/util/PathTool.java
+++ b/src/main/java/org/codehaus/plexus/util/PathTool.java
@@ -27,17 +27,16 @@
* @author Vincent Siveton
*
*/
-public class PathTool
-{
+public class PathTool {
/**
* Determines the relative path of a filename from a base directory. This method is useful in building relative
* links within pages of a web site. It provides similar functionality to Anakia's $relativePath
* context variable. The arguments to this method may contain either forward or backward slashes as file separators.
* The relative path returned is formed using forward slashes as it is expected this path is to be used as a link in
* a web page (again mimicking Anakia's behavior).
- *
+ *
* This method is thread-safe.
- *
+ *
*
* PathTool.getRelativePath( null, null ) = ""
* PathTool.getRelativePath( null, "/usr/local/java/bin" ) = ""
@@ -53,17 +52,18 @@ public class PathTool
* slash. A zero-length string is returned if: the filename is not relative to the base directory,
* basedir
is null or zero-length, or filename
is null or zero-length.
*/
- public static final String getRelativePath( String basedir, String filename )
- {
- basedir = uppercaseDrive( basedir );
- filename = uppercaseDrive( filename );
+ public static final String getRelativePath(String basedir, String filename) {
+ basedir = uppercaseDrive(basedir);
+ filename = uppercaseDrive(filename);
/*
* Verify the arguments and make sure the filename is relative to the base directory.
*/
- if ( basedir == null || basedir.length() == 0 || filename == null || filename.length() == 0
- || !filename.startsWith( basedir ) )
- {
+ if (basedir == null
+ || basedir.length() == 0
+ || filename == null
+ || filename.length() == 0
+ || !filename.startsWith(basedir)) {
return "";
}
@@ -71,17 +71,17 @@ public static final String getRelativePath( String basedir, String filename )
* Normalize the arguments. First, determine the file separator that is being used, then strip that off the end
* of both the base directory and filename.
*/
- String separator = determineSeparator( filename );
- basedir = StringUtils.chompLast( basedir, separator );
- filename = StringUtils.chompLast( filename, separator );
+ String separator = determineSeparator(filename);
+ basedir = StringUtils.chompLast(basedir, separator);
+ filename = StringUtils.chompLast(filename, separator);
/*
* Remove the base directory from the filename to end up with a relative filename (relative to the base
* directory). This filename is then used to determine the relative path.
*/
- String relativeFilename = filename.substring( basedir.length() );
+ String relativeFilename = filename.substring(basedir.length());
- return determineRelativePath( relativeFilename, separator );
+ return determineRelativePath(relativeFilename, separator);
}
/**
@@ -90,7 +90,7 @@ public static final String getRelativePath( String basedir, String filename )
* to this method may contain either forward or backward slashes as file separators. The relative path returned is
* formed using forward slashes as it is expected this path is to be used as a link in a web page (again mimicking
* Anakia's behavior).
- *
+ *
* This method is thread-safe.
*
* @param filename The filename to be parsed.
@@ -98,12 +98,10 @@ public static final String getRelativePath( String basedir, String filename )
* string is returned if: filename
is null or zero-length.
* @see #getRelativeFilePath(String, String)
*/
- public static final String getRelativePath( String filename )
- {
- filename = uppercaseDrive( filename );
+ public static final String getRelativePath(String filename) {
+ filename = uppercaseDrive(filename);
- if ( filename == null || filename.length() == 0 )
- {
+ if (filename == null || filename.length() == 0) {
return "";
}
@@ -112,23 +110,22 @@ public static final String getRelativePath( String filename )
* of the filename. Then, if the filename doesn't begin with a separator, add one.
*/
- String separator = determineSeparator( filename );
- filename = StringUtils.chompLast( filename, separator );
- if ( !filename.startsWith( separator ) )
- {
+ String separator = determineSeparator(filename);
+ filename = StringUtils.chompLast(filename, separator);
+ if (!filename.startsWith(separator)) {
filename = separator + filename;
}
- return determineRelativePath( filename, separator );
+ return determineRelativePath(filename, separator);
}
/**
* Determines the directory component of a filename. This is useful within DVSL templates when used in conjunction
* with the DVSL's $context.getAppValue("infilename")
to get the current directory that is currently
* being processed.
- *
+ *
* This method is thread-safe.
- *
+ *
*
* PathTool.getDirectoryComponent( null ) = ""
* PathTool.getDirectoryComponent( "/usr/local/java/bin" ) = "/usr/local/java"
@@ -140,18 +137,15 @@ public static final String getRelativePath( String filename )
* @return The directory portion of the filename
. If the filename does not contain a directory
* component, "." is returned.
*/
- public static final String getDirectoryComponent( String filename )
- {
- if ( filename == null || filename.length() == 0 )
- {
+ public static final String getDirectoryComponent(String filename) {
+ if (filename == null || filename.length() == 0) {
return "";
}
- String separator = determineSeparator( filename );
- String directory = StringUtils.chomp( filename, separator );
+ String separator = determineSeparator(filename);
+ String directory = StringUtils.chomp(filename, separator);
- if ( filename.equals( directory ) )
- {
+ if (filename.equals(directory)) {
return ".";
}
@@ -160,7 +154,7 @@ public static final String getDirectoryComponent( String filename )
/**
* Calculates the appropriate link given the preferred link and the relativePath of the document.
- *
+ *
*
* PathTool.calculateLink( "/index.html", "../.." ) = "../../index.html"
* PathTool.calculateLink( "http://plexus.codehaus.org/plexus-utils/index.html", "../.." ) = "http://plexus.codehaus.org/plexus-utils/index.html"
@@ -173,53 +167,43 @@ public static final String getDirectoryComponent( String filename )
* @param relativePath relative
* @return String
*/
- public static final String calculateLink( String link, String relativePath )
- {
- if ( link == null )
- {
+ public static final String calculateLink(String link, String relativePath) {
+ if (link == null) {
link = "";
}
- if ( relativePath == null )
- {
+ if (relativePath == null) {
relativePath = "";
}
// This must be some historical feature
- if ( link.startsWith( "/site/" ) )
- {
- return link.substring( 5 );
+ if (link.startsWith("/site/")) {
+ return link.substring(5);
}
// Allows absolute links in nav-bars etc
- if ( link.startsWith( "/absolute/" ) )
- {
- return link.substring( 10 );
+ if (link.startsWith("/absolute/")) {
+ return link.substring(10);
}
// This traps urls like http://
- if ( link.contains( ":" ) )
- {
+ if (link.contains(":")) {
return link;
}
// If relativepath is current directory, just pass the link through
- if ( StringUtils.equals( relativePath, "." ) )
- {
- if ( link.startsWith( "/" ) )
- {
- return link.substring( 1 );
+ if (StringUtils.equals(relativePath, ".")) {
+ if (link.startsWith("/")) {
+ return link.substring(1);
}
return link;
}
// If we don't do this, you can end up with ..//bob.html rather than ../bob.html
- if ( relativePath.endsWith( "/" ) && link.startsWith( "/" ) )
- {
- return relativePath + "." + link.substring( 1 );
+ if (relativePath.endsWith("/") && link.startsWith("/")) {
+ return relativePath + "." + link.substring(1);
}
- if ( relativePath.endsWith( "/" ) || link.startsWith( "/" ) )
- {
+ if (relativePath.endsWith("/") || link.startsWith("/")) {
return relativePath + link;
}
@@ -228,7 +212,7 @@ public static final String calculateLink( String link, String relativePath )
/**
* This method can calculate the relative path between two paths on a web site.
- *
+ *
*
* PathTool.getRelativeWebPath( null, null ) = ""
* PathTool.getRelativeWebPath( null, "http://plexus.codehaus.org/" ) = ""
@@ -243,17 +227,14 @@ public static final String calculateLink( String link, String relativePath )
* @param newPath second path
* @return a relative web path from oldPath
.
*/
- public static final String getRelativeWebPath( final String oldPath, final String newPath )
- {
- if ( StringUtils.isEmpty( oldPath ) || StringUtils.isEmpty( newPath ) )
- {
+ public static final String getRelativeWebPath(final String oldPath, final String newPath) {
+ if (StringUtils.isEmpty(oldPath) || StringUtils.isEmpty(newPath)) {
return "";
}
- String resultPath = buildRelativePath( newPath, oldPath, '/' );
+ String resultPath = buildRelativePath(newPath, oldPath, '/');
- if ( newPath.endsWith( "/" ) && !resultPath.endsWith( "/" ) )
- {
+ if (newPath.endsWith("/") && !resultPath.endsWith("/")) {
return resultPath + "/";
}
@@ -262,7 +243,7 @@ public static final String getRelativeWebPath( final String oldPath, final Strin
/**
* This method can calculate the relative path between two paths on a file system.
- *
+ *
*
* PathTool.getRelativeFilePath( null, null ) = ""
* PathTool.getRelativeFilePath( null, "/usr/local/java/bin" ) = ""
@@ -275,66 +256,57 @@ public static final String getRelativeWebPath( final String oldPath, final Strin
* PathTool.getRelativeFilePath( "/usr/local/", "/bin" ) = "../../bin"
* PathTool.getRelativeFilePath( "/bin", "/usr/local/" ) = "../usr/local"
*
- *
+ *
* Note: On Windows based system, the /
character should be replaced by \
character.
*
* @param oldPath main path
* @param newPath second path
* @return a relative file path from oldPath
.
*/
- public static final String getRelativeFilePath( final String oldPath, final String newPath )
- {
- if ( StringUtils.isEmpty( oldPath ) || StringUtils.isEmpty( newPath ) )
- {
+ public static final String getRelativeFilePath(final String oldPath, final String newPath) {
+ if (StringUtils.isEmpty(oldPath) || StringUtils.isEmpty(newPath)) {
return "";
}
// normalise the path delimiters
- String fromPath = new File( oldPath ).getPath();
- String toPath = new File( newPath ).getPath();
+ String fromPath = new File(oldPath).getPath();
+ String toPath = new File(newPath).getPath();
// strip any leading slashes if its a windows path
- if ( toPath.matches( "^\\[a-zA-Z]:" ) )
- {
- toPath = toPath.substring( 1 );
+ if (toPath.matches("^\\[a-zA-Z]:")) {
+ toPath = toPath.substring(1);
}
- if ( fromPath.matches( "^\\[a-zA-Z]:" ) )
- {
- fromPath = fromPath.substring( 1 );
+ if (fromPath.matches("^\\[a-zA-Z]:")) {
+ fromPath = fromPath.substring(1);
}
// lowercase windows drive letters.
- if ( fromPath.startsWith( ":", 1 ) )
- {
- fromPath = Character.toLowerCase( fromPath.charAt( 0 ) ) + fromPath.substring( 1 );
+ if (fromPath.startsWith(":", 1)) {
+ fromPath = Character.toLowerCase(fromPath.charAt(0)) + fromPath.substring(1);
}
- if ( toPath.startsWith( ":", 1 ) )
- {
- toPath = Character.toLowerCase( toPath.charAt( 0 ) ) + toPath.substring( 1 );
+ if (toPath.startsWith(":", 1)) {
+ toPath = Character.toLowerCase(toPath.charAt(0)) + toPath.substring(1);
}
// check for the presence of windows drives. No relative way of
// traversing from one to the other.
- if ( ( toPath.startsWith( ":", 1 ) && fromPath.startsWith( ":", 1 ) )
- && ( !toPath.substring( 0, 1 ).equals( fromPath.substring( 0, 1 ) ) ) )
- {
+ if ((toPath.startsWith(":", 1) && fromPath.startsWith(":", 1))
+ && (!toPath.substring(0, 1).equals(fromPath.substring(0, 1)))) {
// they both have drive path element but they dont match, no
// relative path
return null;
}
- if ( ( toPath.startsWith( ":", 1 ) && !fromPath.startsWith( ":", 1 ) )
- || ( !toPath.startsWith( ":", 1 ) && fromPath.startsWith( ":", 1 ) ) )
- {
+ if ((toPath.startsWith(":", 1) && !fromPath.startsWith(":", 1))
+ || (!toPath.startsWith(":", 1) && fromPath.startsWith(":", 1))) {
// one has a drive path element and the other doesnt, no relative
// path.
return null;
}
- String resultPath = buildRelativePath( toPath, fromPath, File.separatorChar );
+ String resultPath = buildRelativePath(toPath, fromPath, File.separatorChar);
- if ( newPath.endsWith( File.separator ) && !resultPath.endsWith( File.separator ) )
- {
+ if (newPath.endsWith(File.separator) && !resultPath.endsWith(File.separator)) {
return resultPath + File.separator;
}
@@ -354,10 +326,8 @@ public static final String getRelativeFilePath( final String oldPath, final Stri
* @return The relative path of the filename. This value is not terminated with a forward slash. A zero-length
* string is returned if: the filename is zero-length.
*/
- private static final String determineRelativePath( String filename, String separator )
- {
- if ( filename.length() == 0 )
- {
+ private static final String determineRelativePath(String filename, String separator) {
+ if (filename.length() == 0) {
return "";
}
@@ -365,9 +335,8 @@ private static final String determineRelativePath( String filename, String separ
* Count the slashes in the relative filename, but exclude the leading slash. If the path has no slashes, then
* the filename is relative to the current directory.
*/
- int slashCount = StringUtils.countMatches( filename, separator ) - 1;
- if ( slashCount <= 0 )
- {
+ int slashCount = StringUtils.countMatches(filename, separator) - 1;
+ if (slashCount <= 0) {
return ".";
}
@@ -376,15 +345,14 @@ private static final String determineRelativePath( String filename, String separ
* directories. Thus, each slash represents a "../" in the relative path.
*/
StringBuilder sb = new StringBuilder();
- for ( int i = 0; i < slashCount; i++ )
- {
- sb.append( "../" );
+ for (int i = 0; i < slashCount; i++) {
+ sb.append("../");
}
/*
* Finally, return the relative path but strip the trailing slash to mimic Anakia's behavior.
*/
- return StringUtils.chop( sb.toString() );
+ return StringUtils.chop(sb.toString());
}
/**
@@ -394,10 +362,9 @@ private static final String determineRelativePath( String filename, String separ
* @param filename The filename parsed to determine the file separator.
* @return The file separator used within filename
. This value is either a forward or backward slash.
*/
- private static final String determineSeparator( String filename )
- {
- int forwardCount = StringUtils.countMatches( filename, "/" );
- int backwardCount = StringUtils.countMatches( filename, "\\" );
+ private static final String determineSeparator(String filename) {
+ int forwardCount = StringUtils.countMatches(filename, "/");
+ int backwardCount = StringUtils.countMatches(filename, "\\");
return forwardCount >= backwardCount ? "/" : "\\";
}
@@ -408,41 +375,31 @@ private static final String determineSeparator( String filename )
* @param path
* @return String
*/
- static final String uppercaseDrive( String path )
- {
- if ( path == null )
- {
+ static final String uppercaseDrive(String path) {
+ if (path == null) {
return null;
}
- if ( path.length() >= 2 && path.charAt( 1 ) == ':' )
- {
- path = Character.toUpperCase( path.charAt( 0 ) ) + path.substring( 1 );
+ if (path.length() >= 2 && path.charAt(1) == ':') {
+ path = Character.toUpperCase(path.charAt(0)) + path.substring(1);
}
return path;
}
- private static final String buildRelativePath( String toPath, String fromPath, final char separatorChar )
- {
+ private static final String buildRelativePath(String toPath, String fromPath, final char separatorChar) {
// use tokeniser to traverse paths and for lazy checking
- StringTokenizer toTokeniser = new StringTokenizer( toPath, String.valueOf( separatorChar ) );
- StringTokenizer fromTokeniser = new StringTokenizer( fromPath, String.valueOf( separatorChar ) );
+ StringTokenizer toTokeniser = new StringTokenizer(toPath, String.valueOf(separatorChar));
+ StringTokenizer fromTokeniser = new StringTokenizer(fromPath, String.valueOf(separatorChar));
int count = 0;
// walk along the to path looking for divergence from the from path
- while ( toTokeniser.hasMoreTokens() && fromTokeniser.hasMoreTokens() )
- {
- if ( separatorChar == '\\' )
- {
- if ( !fromTokeniser.nextToken().equalsIgnoreCase( toTokeniser.nextToken() ) )
- {
+ while (toTokeniser.hasMoreTokens() && fromTokeniser.hasMoreTokens()) {
+ if (separatorChar == '\\') {
+ if (!fromTokeniser.nextToken().equalsIgnoreCase(toTokeniser.nextToken())) {
break;
}
- }
- else
- {
- if ( !fromTokeniser.nextToken().equals( toTokeniser.nextToken() ) )
- {
+ } else {
+ if (!fromTokeniser.nextToken().equals(toTokeniser.nextToken())) {
break;
}
}
@@ -453,11 +410,10 @@ private static final String buildRelativePath( String toPath, String fromPath, f
// reinitialise the tokenisers to count positions to retrieve the
// gobbled token
- toTokeniser = new StringTokenizer( toPath, String.valueOf( separatorChar ) );
- fromTokeniser = new StringTokenizer( fromPath, String.valueOf( separatorChar ) );
+ toTokeniser = new StringTokenizer(toPath, String.valueOf(separatorChar));
+ fromTokeniser = new StringTokenizer(fromPath, String.valueOf(separatorChar));
- while ( count-- > 0 )
- {
+ while (count-- > 0) {
fromTokeniser.nextToken();
toTokeniser.nextToken();
}
@@ -465,30 +421,25 @@ private static final String buildRelativePath( String toPath, String fromPath, f
String relativePath = "";
// add back refs for the rest of from location.
- while ( fromTokeniser.hasMoreTokens() )
- {
+ while (fromTokeniser.hasMoreTokens()) {
fromTokeniser.nextToken();
relativePath += "..";
- if ( fromTokeniser.hasMoreTokens() )
- {
+ if (fromTokeniser.hasMoreTokens()) {
relativePath += separatorChar;
}
}
- if ( relativePath.length() != 0 && toTokeniser.hasMoreTokens() )
- {
+ if (relativePath.length() != 0 && toTokeniser.hasMoreTokens()) {
relativePath += separatorChar;
}
// add fwd fills for whatevers left of newPath.
- while ( toTokeniser.hasMoreTokens() )
- {
+ while (toTokeniser.hasMoreTokens()) {
relativePath += toTokeniser.nextToken();
- if ( toTokeniser.hasMoreTokens() )
- {
+ if (toTokeniser.hasMoreTokens()) {
relativePath += separatorChar;
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/PropertyUtils.java b/src/main/java/org/codehaus/plexus/util/PropertyUtils.java
index 210cb3a6..848ac158 100644
--- a/src/main/java/org/codehaus/plexus/util/PropertyUtils.java
+++ b/src/main/java/org/codehaus/plexus/util/PropertyUtils.java
@@ -16,13 +16,13 @@
* limitations under the License.
*/
-import java.util.Objects;
-import java.util.Properties;
import java.io.File;
-import java.io.InputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
+import java.util.Objects;
+import java.util.Properties;
/**
* Static methods to create Properties loaded from various sources.
@@ -30,36 +30,27 @@
* @author Jason van Zyl
* @author Michal Maczka
*/
-public class PropertyUtils
-{
+public class PropertyUtils {
- public static Properties loadProperties( final URL url )
- throws IOException
- {
- return loadProperties( Objects.requireNonNull( url, "url" ).openStream() );
+ public static Properties loadProperties(final URL url) throws IOException {
+ return loadProperties(Objects.requireNonNull(url, "url").openStream());
}
- public static Properties loadProperties( final File file )
- throws IOException
- {
- return loadProperties( Files.newInputStream( Objects.requireNonNull( file, "file" ).toPath() ) );
+ public static Properties loadProperties(final File file) throws IOException {
+ return loadProperties(
+ Files.newInputStream(Objects.requireNonNull(file, "file").toPath()));
}
- public static Properties loadProperties( final InputStream is )
- throws IOException
- {
+ public static Properties loadProperties(final InputStream is) throws IOException {
final Properties properties = new Properties();
-
+
// Make sure the properties stream is valid
- if ( is != null )
- {
- try ( InputStream in = is )
- {
- properties.load( in );
+ if (is != null) {
+ try (InputStream in = is) {
+ properties.load(in);
}
}
return properties;
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/ReaderFactory.java b/src/main/java/org/codehaus/plexus/util/ReaderFactory.java
index 067d41d5..06d7a2d5 100644
--- a/src/main/java/org/codehaus/plexus/util/ReaderFactory.java
+++ b/src/main/java/org/codehaus/plexus/util/ReaderFactory.java
@@ -16,8 +16,6 @@
* limitations under the License.
*/
-import org.codehaus.plexus.util.xml.XmlStreamReader;
-
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -28,6 +26,8 @@
import java.nio.charset.Charset;
import java.nio.file.Files;
+import org.codehaus.plexus.util.xml.XmlStreamReader;
+
/**
* Utility to create Readers from streams, with explicit encoding choice: platform default, XML, or specified.
*
@@ -43,12 +43,11 @@
* @since 1.4.3
*/
@Deprecated
-public class ReaderFactory
-{
+public class ReaderFactory {
/**
* ISO Latin Alphabet #1, also known as ISO-LATIN-1. Every implementation of the Java platform is required to
* support this character encoding.
- *
+ *
* @see Charset
*/
public static final String ISO_8859_1 = "ISO-8859-1";
@@ -56,7 +55,7 @@ public class ReaderFactory
/**
* Seven-bit ASCII, also known as ISO646-US, also known as the Basic Latin block of the Unicode character set. Every
* implementation of the Java platform is required to support this character encoding.
- *
+ *
* @see Charset
*/
public static final String US_ASCII = "US-ASCII";
@@ -65,7 +64,7 @@ public class ReaderFactory
* Sixteen-bit Unicode Transformation Format, byte order specified by a mandatory initial byte-order mark (either
* order accepted on input, big-endian used on output). Every implementation of the Java platform is required to
* support this character encoding.
- *
+ *
* @see Charset
*/
public static final String UTF_16 = "UTF-16";
@@ -73,7 +72,7 @@ public class ReaderFactory
/**
* Sixteen-bit Unicode Transformation Format, big-endian byte order. Every implementation of the Java platform is
* required to support this character encoding.
- *
+ *
* @see Charset
*/
public static final String UTF_16BE = "UTF-16BE";
@@ -81,7 +80,7 @@ public class ReaderFactory
/**
* Sixteen-bit Unicode Transformation Format, little-endian byte order. Every implementation of the Java platform is
* required to support this character encoding.
- *
+ *
* @see Charset
*/
public static final String UTF_16LE = "UTF-16LE";
@@ -89,7 +88,7 @@ public class ReaderFactory
/**
* Eight-bit Unicode Transformation Format. Every implementation of the Java platform is required to support this
* character encoding.
- *
+ *
* @see Charset
*/
public static final String UTF_8 = "UTF-8";
@@ -97,7 +96,7 @@ public class ReaderFactory
/**
* The file.encoding
System Property.
*/
- public static final String FILE_ENCODING = System.getProperty( "file.encoding" );
+ public static final String FILE_ENCODING = System.getProperty("file.encoding");
/**
* Create a new Reader with XML encoding detection rules.
@@ -107,10 +106,8 @@ public class ReaderFactory
* @throws IOException if any.
* @see XmlStreamReader
*/
- public static XmlStreamReader newXmlReader( InputStream in )
- throws IOException
- {
- return new XmlStreamReader( in );
+ public static XmlStreamReader newXmlReader(InputStream in) throws IOException {
+ return new XmlStreamReader(in);
}
/**
@@ -121,10 +118,8 @@ public static XmlStreamReader newXmlReader( InputStream in )
* @throws IOException if any.
* @see XmlStreamReader
*/
- public static XmlStreamReader newXmlReader( File file )
- throws IOException
- {
- return new XmlStreamReader( file );
+ public static XmlStreamReader newXmlReader(File file) throws IOException {
+ return new XmlStreamReader(file);
}
/**
@@ -135,10 +130,8 @@ public static XmlStreamReader newXmlReader( File file )
* @throws IOException if any.
* @see XmlStreamReader
*/
- public static XmlStreamReader newXmlReader( URL url )
- throws IOException
- {
- return new XmlStreamReader( url );
+ public static XmlStreamReader newXmlReader(URL url) throws IOException {
+ return new XmlStreamReader(url);
}
/**
@@ -148,9 +141,8 @@ public static XmlStreamReader newXmlReader( URL url )
* @return a reader instance for the input stream using the default platform charset.
* @see Charset#defaultCharset()
*/
- public static Reader newPlatformReader( InputStream in )
- {
- return new InputStreamReader( in );
+ public static Reader newPlatformReader(InputStream in) {
+ return new InputStreamReader(in);
}
/**
@@ -161,10 +153,8 @@ public static Reader newPlatformReader( InputStream in )
* @throws IOException if any.
* @see Charset#defaultCharset()
*/
- public static Reader newPlatformReader( File file )
- throws IOException
- {
- return Files.newBufferedReader( file.toPath() );
+ public static Reader newPlatformReader(File file) throws IOException {
+ return Files.newBufferedReader(file.toPath());
}
/**
@@ -175,10 +165,8 @@ public static Reader newPlatformReader( File file )
* @throws IOException if any.
* @see Charset#defaultCharset()
*/
- public static Reader newPlatformReader( URL url )
- throws IOException
- {
- return new InputStreamReader( url.openStream() );
+ public static Reader newPlatformReader(URL url) throws IOException {
+ return new InputStreamReader(url.openStream());
}
/**
@@ -190,10 +178,8 @@ public static Reader newPlatformReader( URL url )
* @throws UnsupportedEncodingException if any.
* @see Supported encodings
*/
- public static Reader newReader( InputStream in, String encoding )
- throws UnsupportedEncodingException
- {
- return new InputStreamReader( in, encoding );
+ public static Reader newReader(InputStream in, String encoding) throws UnsupportedEncodingException {
+ return new InputStreamReader(in, encoding);
}
/**
@@ -206,10 +192,8 @@ public static Reader newReader( InputStream in, String encoding )
* @throws IOException if any.
* @see Supported encodings
*/
- public static Reader newReader( File file, String encoding )
- throws IOException
- {
- return new InputStreamReader( Files.newInputStream( file.toPath() ), encoding );
+ public static Reader newReader(File file, String encoding) throws IOException {
+ return new InputStreamReader(Files.newInputStream(file.toPath()), encoding);
}
/**
@@ -221,9 +205,7 @@ public static Reader newReader( File file, String encoding )
* @throws IOException if any.
* @see Supported encodings
*/
- public static Reader newReader( URL url, String encoding )
- throws IOException
- {
- return new InputStreamReader( url.openStream(), encoding );
+ public static Reader newReader(URL url, String encoding) throws IOException {
+ return new InputStreamReader(url.openStream(), encoding);
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/ReflectionUtils.java b/src/main/java/org/codehaus/plexus/util/ReflectionUtils.java
index 3ebf3b2d..a0d3af64 100644
--- a/src/main/java/org/codehaus/plexus/util/ReflectionUtils.java
+++ b/src/main/java/org/codehaus/plexus/util/ReflectionUtils.java
@@ -16,59 +16,51 @@
* limitations under the License.
*/
+import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
-import java.lang.reflect.AccessibleObject;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
* Operations on a class' fields and their setters.
- *
+ *
* @author Michal Maczka
* @author Jesse McConnell
* @author Trygve Laugstøl
*/
-public final class ReflectionUtils
-{
+public final class ReflectionUtils {
// ----------------------------------------------------------------------
// Field utils
// ----------------------------------------------------------------------
- public static Field getFieldByNameIncludingSuperclasses( String fieldName, Class> clazz )
- {
+ public static Field getFieldByNameIncludingSuperclasses(String fieldName, Class> clazz) {
Field retValue = null;
- try
- {
- retValue = clazz.getDeclaredField( fieldName );
- }
- catch ( NoSuchFieldException e )
- {
+ try {
+ retValue = clazz.getDeclaredField(fieldName);
+ } catch (NoSuchFieldException e) {
Class> superclass = clazz.getSuperclass();
- if ( superclass != null )
- {
- retValue = getFieldByNameIncludingSuperclasses( fieldName, superclass );
+ if (superclass != null) {
+ retValue = getFieldByNameIncludingSuperclasses(fieldName, superclass);
}
}
return retValue;
}
- public static List getFieldsIncludingSuperclasses( Class> clazz )
- {
- List fields = new ArrayList<>( Arrays.asList( clazz.getDeclaredFields() ) );
+ public static List getFieldsIncludingSuperclasses(Class> clazz) {
+ List fields = new ArrayList<>(Arrays.asList(clazz.getDeclaredFields()));
Class> superclass = clazz.getSuperclass();
- if ( superclass != null )
- {
- fields.addAll( getFieldsIncludingSuperclasses( superclass ) );
+ if (superclass != null) {
+ fields.addAll(getFieldsIncludingSuperclasses(superclass));
}
return fields;
@@ -85,16 +77,13 @@ public static List getFieldsIncludingSuperclasses( Class> clazz )
* @param clazz The class to find the method in.
* @return null or the method found.
*/
- public static Method getSetter( String fieldName, Class> clazz )
- {
+ public static Method getSetter(String fieldName, Class> clazz) {
Method[] methods = clazz.getMethods();
- fieldName = "set" + StringUtils.capitalizeFirstLetter( fieldName );
+ fieldName = "set" + StringUtils.capitalizeFirstLetter(fieldName);
- for ( Method method : methods )
- {
- if ( method.getName().equals( fieldName ) && isSetter( method ) )
- {
+ for (Method method : methods) {
+ if (method.getName().equals(fieldName) && isSetter(method)) {
return method;
}
}
@@ -106,17 +95,14 @@ public static Method getSetter( String fieldName, Class> clazz )
* @return all setters in the given class and super classes.
* @param clazz the Class
*/
- public static List getSetters( Class> clazz )
- {
+ public static List getSetters(Class> clazz) {
Method[] methods = clazz.getMethods();
List list = new ArrayList<>();
- for ( Method method : methods )
- {
- if ( isSetter( method ) )
- {
- list.add( method );
+ for (Method method : methods) {
+ if (isSetter(method)) {
+ list.add(method);
}
}
@@ -127,12 +113,10 @@ public static List getSetters( Class> clazz )
* @param method the method
* @return the class of the argument to the setter. Will throw an RuntimeException if the method isn't a setter.
*/
- public static Class> getSetterType( Method method )
- {
- if ( !isSetter( method ) )
- {
- throw new RuntimeException( "The method " + method.getDeclaringClass().getName() + "." + method.getName()
- + " is not a setter." );
+ public static Class> getSetterType(Method method) {
+ if (!isSetter(method)) {
+ throw new RuntimeException("The method "
+ + method.getDeclaringClass().getName() + "." + method.getName() + " is not a setter.");
}
return method.getParameterTypes()[0];
@@ -150,33 +134,30 @@ public static Class> getSetterType( Method method )
* @param value see name
* @throws IllegalAccessException if error
*/
- public static void setVariableValueInObject( Object object, String variable, Object value )
- throws IllegalAccessException
- {
- Field field = getFieldByNameIncludingSuperclasses( variable, object.getClass() );
+ public static void setVariableValueInObject(Object object, String variable, Object value)
+ throws IllegalAccessException {
+ Field field = getFieldByNameIncludingSuperclasses(variable, object.getClass());
- field.setAccessible( true );
+ field.setAccessible(true);
- field.set( object, value );
+ field.set(object, value);
}
/**
* Generates a map of the fields and values on a given object, also pulls from superclasses
- *
+ *
* @param variable field name
* @param object the object to generate the list of fields from
* @return map containing the fields and their values
* @throws IllegalAccessException cannot access
*/
- public static Object getValueIncludingSuperclasses( String variable, Object object )
- throws IllegalAccessException
- {
+ public static Object getValueIncludingSuperclasses(String variable, Object object) throws IllegalAccessException {
- Field field = getFieldByNameIncludingSuperclasses( variable, object.getClass() );
+ Field field = getFieldByNameIncludingSuperclasses(variable, object.getClass());
- field.setAccessible( true );
+ field.setAccessible(true);
- return field.get( object );
+ return field.get(object);
}
/**
@@ -186,12 +167,11 @@ public static Object getValueIncludingSuperclasses( String variable, Object obje
* @return map containing the fields and their values
* @throws IllegalAccessException cannot access
*/
- public static Map getVariablesAndValuesIncludingSuperclasses( Object object )
- throws IllegalAccessException
- {
+ public static Map getVariablesAndValuesIncludingSuperclasses(Object object)
+ throws IllegalAccessException {
Map map = new HashMap<>();
- gatherVariablesAndValuesIncludingSuperclasses( object, map );
+ gatherVariablesAndValuesIncludingSuperclasses(object, map);
return map;
}
@@ -200,10 +180,11 @@ public static Map getVariablesAndValuesIncludingSuperclasses( Ob
// Private
// ----------------------------------------------------------------------
- public static boolean isSetter( Method method )
- {
- return method.getReturnType().equals( Void.TYPE ) && // FIXME: needed /required?
- !Modifier.isStatic( method.getModifiers() ) && method.getParameterTypes().length == 1;
+ public static boolean isSetter(Method method) {
+ return method.getReturnType().equals(Void.TYPE)
+ && // FIXME: needed /required?
+ !Modifier.isStatic(method.getModifiers())
+ && method.getParameterTypes().length == 1;
}
/**
@@ -212,15 +193,13 @@ public static boolean isSetter( Method method )
* @param object the object to generate the list of fields from
* @param map to populate
*/
- private static void gatherVariablesAndValuesIncludingSuperclasses( Object object, Map map )
- throws IllegalAccessException
- {
+ private static void gatherVariablesAndValuesIncludingSuperclasses(Object object, Map map)
+ throws IllegalAccessException {
Class> clazz = object.getClass();
- if ( Float.parseFloat( System.getProperty( "java.specification.version" ) ) >= 11
- && Class.class.getCanonicalName().equals( clazz.getCanonicalName() ) )
- {
+ if (Float.parseFloat(System.getProperty("java.specification.version")) >= 11
+ && Class.class.getCanonicalName().equals(clazz.getCanonicalName())) {
// Updating Class fields accessibility is forbidden on Java 16 (and throws warning from version 11)
// No concrete use case to modify accessibility at this level
return;
@@ -228,19 +207,16 @@ private static void gatherVariablesAndValuesIncludingSuperclasses( Object object
Field[] fields = clazz.getDeclaredFields();
- AccessibleObject.setAccessible( fields, true );
-
- for ( Field field : fields )
- {
- map.put( field.getName(), field.get( object ) );
+ AccessibleObject.setAccessible(fields, true);
+ for (Field field : fields) {
+ map.put(field.getName(), field.get(object));
}
Class> superclass = clazz.getSuperclass();
- if ( !Object.class.equals( superclass ) )
- {
- gatherVariablesAndValuesIncludingSuperclasses( superclass, map );
+ if (!Object.class.equals(superclass)) {
+ gatherVariablesAndValuesIncludingSuperclasses(superclass, map);
}
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/Scanner.java b/src/main/java/org/codehaus/plexus/util/Scanner.java
index 20bf85fb..4d1701c1 100644
--- a/src/main/java/org/codehaus/plexus/util/Scanner.java
+++ b/src/main/java/org/codehaus/plexus/util/Scanner.java
@@ -22,8 +22,7 @@
/**
* Scan a directory tree for files, with specified inclusions and exclusions.
*/
-public interface Scanner
-{
+public interface Scanner {
/**
* Sets the list of include patterns to use. All '/' and '\' characters are replaced by
@@ -34,7 +33,7 @@ public interface Scanner
* @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
.
*/
- void setIncludes( String[] includes );
+ void setIncludes(String[] includes);
/**
* Sets the list of exclude patterns to use. All '/' and '\' characters are replaced by
@@ -45,7 +44,7 @@ public interface Scanner
* @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
.
*/
- void setExcludes( String[] excludes );
+ void setExcludes(String[] excludes);
/**
* Adds default exclusions to the current exclusions set.
@@ -91,5 +90,5 @@ public interface Scanner
* @param filenameComparator the Comparator instance to use
* @since 3.3.0
*/
- void setFilenameComparator( Comparator filenameComparator );
+ void setFilenameComparator(Comparator filenameComparator);
}
diff --git a/src/main/java/org/codehaus/plexus/util/SelectorUtils.java b/src/main/java/org/codehaus/plexus/util/SelectorUtils.java
index 234a92c5..f5122c78 100644
--- a/src/main/java/org/codehaus/plexus/util/SelectorUtils.java
+++ b/src/main/java/org/codehaus/plexus/util/SelectorUtils.java
@@ -63,7 +63,7 @@
* This is a utility class used by selectors and DirectoryScanner. The functionality more properly belongs just to
* selectors, but unfortunately DirectoryScanner exposed these as protected methods. Thus we have to support any
* subclasses of DirectoryScanner that may access these methods.
- *
+ *
* This is a Singleton.
*
* @author Arnout J. Kuiper ajkuiper@wxs.nl
@@ -72,8 +72,7 @@
*
* @since 1.5
*/
-public final class SelectorUtils
-{
+public final class SelectorUtils {
public static final String PATTERN_HANDLER_PREFIX = "[";
@@ -88,21 +87,18 @@ public final class SelectorUtils
/**
* Private Constructor
*/
- private SelectorUtils()
- {
- }
+ private SelectorUtils() {}
/**
* @return Retrieves the manager of the Singleton.
*/
- public static SelectorUtils getInstance()
- {
+ public static SelectorUtils getInstance() {
return instance;
}
/**
* 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
.
*
@@ -110,14 +106,13 @@ public static SelectorUtils getInstance()
* @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 "**".
*/
- public static boolean matchPatternStart( String pattern, String str )
- {
- return matchPatternStart( pattern, str, true );
+ public static boolean matchPatternStart(String pattern, String str) {
+ return matchPatternStart(pattern, str, 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
.
*
@@ -126,79 +121,67 @@ public static boolean matchPatternStart( String pattern, String str )
* @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 "**".
*/
- public static boolean matchPatternStart( String pattern, String str, boolean isCaseSensitive )
- {
- if ( isRegexPrefixedPattern( pattern ) )
- {
+ public static boolean matchPatternStart(String pattern, String str, boolean isCaseSensitive) {
+ if (isRegexPrefixedPattern(pattern)) {
// FIXME: ICK! But we can't do partial matches for regex, so we have to reserve judgement until we have
// a file to deal with, or we can definitely say this is an exclusion...
return true;
- }
- else
- {
- if ( isAntPrefixedPattern( pattern ) )
- {
- pattern = pattern.substring( ANT_HANDLER_PREFIX.length(),
- pattern.length() - PATTERN_HANDLER_SUFFIX.length() );
+ } else {
+ if (isAntPrefixedPattern(pattern)) {
+ pattern = pattern.substring(
+ ANT_HANDLER_PREFIX.length(), pattern.length() - PATTERN_HANDLER_SUFFIX.length());
}
- String altStr = str.replace( '\\', '/' );
+ String altStr = str.replace('\\', '/');
- return matchAntPathPatternStart( pattern, str, File.separator, isCaseSensitive )
- || matchAntPathPatternStart( pattern, altStr, "/", isCaseSensitive );
+ return matchAntPathPatternStart(pattern, str, File.separator, isCaseSensitive)
+ || matchAntPathPatternStart(pattern, altStr, "/", isCaseSensitive);
}
}
- static boolean isAntPrefixedPattern( String pattern )
- {
- return pattern.length() > ( ANT_HANDLER_PREFIX.length() + PATTERN_HANDLER_SUFFIX.length() + 1 )
- && pattern.startsWith( ANT_HANDLER_PREFIX ) && pattern.endsWith( PATTERN_HANDLER_SUFFIX );
+ static boolean isAntPrefixedPattern(String pattern) {
+ return pattern.length() > (ANT_HANDLER_PREFIX.length() + PATTERN_HANDLER_SUFFIX.length() + 1)
+ && pattern.startsWith(ANT_HANDLER_PREFIX)
+ && pattern.endsWith(PATTERN_HANDLER_SUFFIX);
}
- @SuppressWarnings( "SimplifiableIfStatement" )
- static boolean matchAntPathPatternStart( MatchPattern pattern, String str, String separator,
- boolean isCaseSensitive )
- {
- if ( separatorPatternStartSlashMismatch( pattern, str, separator ) )
- {
+ @SuppressWarnings("SimplifiableIfStatement")
+ static boolean matchAntPathPatternStart(
+ MatchPattern pattern, String str, String separator, boolean isCaseSensitive) {
+ if (separatorPatternStartSlashMismatch(pattern, str, separator)) {
return false;
}
- return matchAntPathPatternStart( pattern.getTokenizedPathString(), str, separator, isCaseSensitive );
+ return matchAntPathPatternStart(pattern.getTokenizedPathString(), str, separator, isCaseSensitive);
}
- static boolean matchAntPathPatternStart( String pattern, String str, String separator, boolean isCaseSensitive )
- {
+ static boolean matchAntPathPatternStart(String pattern, String str, String separator, boolean isCaseSensitive) {
// When str starts with a File.separator, pattern has to start with a
// File.separator.
// When pattern starts with a File.separator, str has to start with a
// File.separator.
- if ( separatorPatternStartSlashMismatch( pattern, str, separator ) )
- {
+ if (separatorPatternStartSlashMismatch(pattern, str, separator)) {
return false;
}
- String[] patDirs = tokenizePathToString( pattern, separator );
- return matchAntPathPatternStart( patDirs, str, separator, isCaseSensitive );
+ String[] patDirs = tokenizePathToString(pattern, separator);
+ return matchAntPathPatternStart(patDirs, str, separator, isCaseSensitive);
}
// When str starts with a File.separator, pattern has to start with a
// File.separator.
// When pattern starts with a File.separator, str has to start with a
// File.separator.
- private static boolean separatorPatternStartSlashMismatch( String pattern, String str, String separator )
- {
- return str.startsWith( separator ) != pattern.startsWith( separator );
+ private static boolean separatorPatternStartSlashMismatch(String pattern, String str, String separator) {
+ return str.startsWith(separator) != pattern.startsWith(separator);
}
- private static boolean separatorPatternStartSlashMismatch( MatchPattern matchPattern, String str, String separator )
- {
- return str.startsWith( separator ) != matchPattern.startsWith( separator );
+ private static boolean separatorPatternStartSlashMismatch(MatchPattern matchPattern, String str, String separator) {
+ return str.startsWith(separator) != matchPattern.startsWith(separator);
}
- static boolean matchAntPathPatternStart( String[] patDirs, String str, String separator, boolean isCaseSensitive )
- {
- String[] strDirs = tokenizePathToString( str, separator );
+ static boolean matchAntPathPatternStart(String[] patDirs, String str, String separator, boolean isCaseSensitive) {
+ String[] strDirs = tokenizePathToString(str, separator);
int patIdxStart = 0;
int patIdxEnd = patDirs.length - 1;
@@ -206,15 +189,12 @@ static boolean matchAntPathPatternStart( String[] patDirs, String str, String se
int strIdxEnd = strDirs.length - 1;
// up to first '**'
- while ( patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd )
- {
+ while (patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd) {
String patDir = patDirs[patIdxStart];
- if ( patDir.equals( "**" ) )
- {
+ if (patDir.equals("**")) {
break;
}
- if ( !match( patDir, strDirs[strIdxStart], isCaseSensitive ) )
- {
+ if (!match(patDir, strDirs[strIdxStart], isCaseSensitive)) {
return false;
}
patIdxStart++;
@@ -231,9 +211,8 @@ static boolean matchAntPathPatternStart( String[] patDirs, String str, String se
* @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.
*/
- public static boolean matchPath( String pattern, String str )
- {
- return matchPath( pattern, str, true );
+ public static boolean matchPath(String pattern, String str) {
+ return matchPath(pattern, str, true);
}
/**
@@ -244,174 +223,140 @@ public static boolean matchPath( String pattern, String str )
* @param isCaseSensitive Whether or not matching should be performed case sensitively.
* @return true
if the pattern matches against the string, or false
otherwise.
*/
- public static boolean matchPath( String pattern, String str, boolean isCaseSensitive )
- {
- return matchPath( pattern, str, File.separator, isCaseSensitive );
+ public static boolean matchPath(String pattern, String str, boolean isCaseSensitive) {
+ return matchPath(pattern, str, File.separator, isCaseSensitive);
}
- public static boolean matchPath( String pattern, String str, String separator, boolean isCaseSensitive )
- {
- if ( isRegexPrefixedPattern( pattern ) )
- {
- String localPattern =
- pattern.substring( REGEX_HANDLER_PREFIX.length(), pattern.length() - PATTERN_HANDLER_SUFFIX.length() );
+ public static boolean matchPath(String pattern, String str, String separator, boolean isCaseSensitive) {
+ if (isRegexPrefixedPattern(pattern)) {
+ String localPattern = pattern.substring(
+ REGEX_HANDLER_PREFIX.length(), pattern.length() - PATTERN_HANDLER_SUFFIX.length());
- return str.matches( localPattern );
- }
- else
- {
- String localPattern = isAntPrefixedPattern( pattern )
- ? pattern.substring( ANT_HANDLER_PREFIX.length(), pattern.length() - PATTERN_HANDLER_SUFFIX.length() )
- : pattern;
- final String osRelatedPath = toOSRelatedPath( str, separator );
- final String osRelatedPattern = toOSRelatedPath( localPattern, separator );
- return matchAntPathPattern( osRelatedPattern, osRelatedPath, separator, isCaseSensitive );
+ return str.matches(localPattern);
+ } else {
+ String localPattern = isAntPrefixedPattern(pattern)
+ ? pattern.substring(ANT_HANDLER_PREFIX.length(), pattern.length() - PATTERN_HANDLER_SUFFIX.length())
+ : pattern;
+ final String osRelatedPath = toOSRelatedPath(str, separator);
+ final String osRelatedPattern = toOSRelatedPath(localPattern, separator);
+ return matchAntPathPattern(osRelatedPattern, osRelatedPath, separator, isCaseSensitive);
}
}
- private static String toOSRelatedPath( String pattern, String separator )
- {
- if ( "/".equals( separator ) )
- {
- return pattern.replace( "\\", separator );
+ private static String toOSRelatedPath(String pattern, String separator) {
+ if ("/".equals(separator)) {
+ return pattern.replace("\\", separator);
}
- if ( "\\".equals( separator ) ) {
- return pattern.replace( "/", separator );
+ if ("\\".equals(separator)) {
+ return pattern.replace("/", separator);
}
return pattern;
}
- static boolean isRegexPrefixedPattern( String pattern )
- {
- return pattern.length() > ( REGEX_HANDLER_PREFIX.length() + PATTERN_HANDLER_SUFFIX.length() + 1 )
- && pattern.startsWith( REGEX_HANDLER_PREFIX ) && pattern.endsWith( PATTERN_HANDLER_SUFFIX );
+ static boolean isRegexPrefixedPattern(String pattern) {
+ return pattern.length() > (REGEX_HANDLER_PREFIX.length() + PATTERN_HANDLER_SUFFIX.length() + 1)
+ && pattern.startsWith(REGEX_HANDLER_PREFIX)
+ && pattern.endsWith(PATTERN_HANDLER_SUFFIX);
}
- static boolean matchAntPathPattern( MatchPattern matchPattern, String str, String separator,
- boolean isCaseSensitive )
- {
- if ( separatorPatternStartSlashMismatch( matchPattern, str, separator ) )
- {
+ static boolean matchAntPathPattern(
+ MatchPattern matchPattern, String str, String separator, boolean isCaseSensitive) {
+ if (separatorPatternStartSlashMismatch(matchPattern, str, separator)) {
return false;
}
String[] patDirs = matchPattern.getTokenizedPathString();
- String[] strDirs = tokenizePathToString( str, separator );
- return matchAntPathPattern( patDirs, strDirs, isCaseSensitive );
+ String[] strDirs = tokenizePathToString(str, separator);
+ return matchAntPathPattern(patDirs, strDirs, isCaseSensitive);
}
- static boolean matchAntPathPattern( String pattern, String str, String separator, boolean isCaseSensitive )
- {
- if ( separatorPatternStartSlashMismatch( pattern, str, separator ) )
- {
+ static boolean matchAntPathPattern(String pattern, String str, String separator, boolean isCaseSensitive) {
+ if (separatorPatternStartSlashMismatch(pattern, str, separator)) {
return false;
}
- String[] patDirs = tokenizePathToString( pattern, separator );
- String[] strDirs = tokenizePathToString( str, separator );
- return matchAntPathPattern( patDirs, strDirs, isCaseSensitive );
-
+ String[] patDirs = tokenizePathToString(pattern, separator);
+ String[] strDirs = tokenizePathToString(str, separator);
+ return matchAntPathPattern(patDirs, strDirs, isCaseSensitive);
}
- static boolean matchAntPathPattern( String[] patDirs, String[] strDirs, boolean isCaseSensitive )
- {
+ static boolean matchAntPathPattern(String[] patDirs, String[] strDirs, boolean isCaseSensitive) {
int patIdxStart = 0;
int patIdxEnd = patDirs.length - 1;
int strIdxStart = 0;
int strIdxEnd = strDirs.length - 1;
// up to first '**'
- while ( patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd )
- {
+ while (patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd) {
String patDir = patDirs[patIdxStart];
- if ( patDir.equals( "**" ) )
- {
+ if (patDir.equals("**")) {
break;
}
- if ( !match( patDir, strDirs[strIdxStart], isCaseSensitive ) )
- {
+ if (!match(patDir, strDirs[strIdxStart], isCaseSensitive)) {
return false;
}
patIdxStart++;
strIdxStart++;
}
- if ( strIdxStart > strIdxEnd )
- {
+ if (strIdxStart > strIdxEnd) {
// String is exhausted
- for ( int i = patIdxStart; i <= patIdxEnd; i++ )
- {
- if ( !patDirs[i].equals( "**" ) )
- {
+ for (int i = patIdxStart; i <= patIdxEnd; i++) {
+ if (!patDirs[i].equals("**")) {
return false;
}
}
return true;
- }
- else
- {
- if ( patIdxStart > patIdxEnd )
- {
+ } else {
+ if (patIdxStart > patIdxEnd) {
// String not exhausted, but pattern is. Failure.
return false;
}
}
// up to last '**'
- while ( patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd )
- {
+ while (patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd) {
String patDir = patDirs[patIdxEnd];
- if ( patDir.equals( "**" ) )
- {
+ if (patDir.equals("**")) {
break;
}
- if ( !match( patDir, strDirs[strIdxEnd], isCaseSensitive ) )
- {
+ if (!match(patDir, strDirs[strIdxEnd], isCaseSensitive)) {
return false;
}
patIdxEnd--;
strIdxEnd--;
}
- if ( strIdxStart > strIdxEnd )
- {
+ if (strIdxStart > strIdxEnd) {
// String is exhausted
- for ( int i = patIdxStart; i <= patIdxEnd; i++ )
- {
- if ( !patDirs[i].equals( "**" ) )
- {
+ for (int i = patIdxStart; i <= patIdxEnd; i++) {
+ if (!patDirs[i].equals("**")) {
return false;
}
}
return true;
}
- while ( patIdxStart != patIdxEnd && strIdxStart <= strIdxEnd )
- {
+ while (patIdxStart != patIdxEnd && strIdxStart <= strIdxEnd) {
int patIdxTmp = -1;
- for ( int i = patIdxStart + 1; i <= patIdxEnd; i++ )
- {
- if ( patDirs[i].equals( "**" ) )
- {
+ for (int i = patIdxStart + 1; i <= patIdxEnd; i++) {
+ if (patDirs[i].equals("**")) {
patIdxTmp = i;
break;
}
}
- if ( patIdxTmp == patIdxStart + 1 )
- {
+ if (patIdxTmp == patIdxStart + 1) {
// '**/**' situation, so skip one
patIdxStart++;
continue;
}
// Find the pattern between padIdxStart & padIdxTmp in str between
// strIdxStart & strIdxEnd
- int patLength = ( patIdxTmp - patIdxStart - 1 );
- int strLength = ( strIdxEnd - strIdxStart + 1 );
+ int patLength = (patIdxTmp - patIdxStart - 1);
+ int strLength = (strIdxEnd - strIdxStart + 1);
int foundIdx = -1;
- strLoop: for ( int i = 0; i <= strLength - patLength; i++ )
- {
- for ( int j = 0; j < patLength; j++ )
- {
+ strLoop:
+ for (int i = 0; i <= strLength - patLength; i++) {
+ for (int j = 0; j < patLength; j++) {
String subPat = patDirs[patIdxStart + j + 1];
String subStr = strDirs[strIdxStart + i + j];
- if ( !match( subPat, subStr, isCaseSensitive ) )
- {
+ if (!match(subPat, subStr, isCaseSensitive)) {
continue strLoop;
}
}
@@ -420,8 +365,7 @@ static boolean matchAntPathPattern( String[] patDirs, String[] strDirs, boolean
break;
}
- if ( foundIdx == -1 )
- {
+ if (foundIdx == -1) {
return false;
}
@@ -429,10 +373,8 @@ static boolean matchAntPathPattern( String[] patDirs, String[] strDirs, boolean
strIdxStart = foundIdx + patLength;
}
- for ( int i = patIdxStart; i <= patIdxEnd; i++ )
- {
- if ( !patDirs[i].equals( "**" ) )
- {
+ for (int i = patIdxStart; i <= patIdxEnd; i++) {
+ if (!patDirs[i].equals("**")) {
return false;
}
}
@@ -440,107 +382,85 @@ static boolean matchAntPathPattern( String[] patDirs, String[] strDirs, boolean
return true;
}
- static boolean matchAntPathPattern( char[][] patDirs, char[][] strDirs, boolean isCaseSensitive )
- {
+ static boolean matchAntPathPattern(char[][] patDirs, char[][] strDirs, boolean isCaseSensitive) {
int patIdxStart = 0;
int patIdxEnd = patDirs.length - 1;
int strIdxStart = 0;
int strIdxEnd = strDirs.length - 1;
// up to first '**'
- while ( patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd )
- {
+ while (patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd) {
char[] patDir = patDirs[patIdxStart];
- if ( isDoubleStar( patDir ) )
- {
+ if (isDoubleStar(patDir)) {
break;
}
- if ( !match( patDir, strDirs[strIdxStart], isCaseSensitive ) )
- {
+ if (!match(patDir, strDirs[strIdxStart], isCaseSensitive)) {
return false;
}
patIdxStart++;
strIdxStart++;
}
- if ( strIdxStart > strIdxEnd )
- {
+ if (strIdxStart > strIdxEnd) {
// String is exhausted
- for ( int i = patIdxStart; i <= patIdxEnd; i++ )
- {
- if ( !isDoubleStar( patDirs[i] ) )
- {
+ for (int i = patIdxStart; i <= patIdxEnd; i++) {
+ if (!isDoubleStar(patDirs[i])) {
return false;
}
}
return true;
- }
- else
- {
- if ( patIdxStart > patIdxEnd )
- {
+ } else {
+ if (patIdxStart > patIdxEnd) {
// String not exhausted, but pattern is. Failure.
return false;
}
}
// up to last '**'
- while ( patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd )
- {
+ while (patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd) {
char[] patDir = patDirs[patIdxEnd];
- if ( isDoubleStar( patDir ) )
- {
+ if (isDoubleStar(patDir)) {
break;
}
- if ( !match( patDir, strDirs[strIdxEnd], isCaseSensitive ) )
- {
+ if (!match(patDir, strDirs[strIdxEnd], isCaseSensitive)) {
return false;
}
patIdxEnd--;
strIdxEnd--;
}
- if ( strIdxStart > strIdxEnd )
- {
+ if (strIdxStart > strIdxEnd) {
// String is exhausted
- for ( int i = patIdxStart; i <= patIdxEnd; i++ )
- {
- if ( !isDoubleStar( patDirs[i] ) )
- {
+ for (int i = patIdxStart; i <= patIdxEnd; i++) {
+ if (!isDoubleStar(patDirs[i])) {
return false;
}
}
return true;
}
- while ( patIdxStart != patIdxEnd && strIdxStart <= strIdxEnd )
- {
+ while (patIdxStart != patIdxEnd && strIdxStart <= strIdxEnd) {
int patIdxTmp = -1;
- for ( int i = patIdxStart + 1; i <= patIdxEnd; i++ )
- {
- if ( isDoubleStar( patDirs[i] ) )
- {
+ for (int i = patIdxStart + 1; i <= patIdxEnd; i++) {
+ if (isDoubleStar(patDirs[i])) {
patIdxTmp = i;
break;
}
}
- if ( patIdxTmp == patIdxStart + 1 )
- {
+ if (patIdxTmp == patIdxStart + 1) {
// '**/**' situation, so skip one
patIdxStart++;
continue;
}
// Find the pattern between padIdxStart & padIdxTmp in str between
// strIdxStart & strIdxEnd
- int patLength = ( patIdxTmp - patIdxStart - 1 );
- int strLength = ( strIdxEnd - strIdxStart + 1 );
+ int patLength = (patIdxTmp - patIdxStart - 1);
+ int strLength = (strIdxEnd - strIdxStart + 1);
int foundIdx = -1;
- strLoop: for ( int i = 0; i <= strLength - patLength; i++ )
- {
- for ( int j = 0; j < patLength; j++ )
- {
+ strLoop:
+ for (int i = 0; i <= strLength - patLength; i++) {
+ for (int j = 0; j < patLength; j++) {
char[] subPat = patDirs[patIdxStart + j + 1];
char[] subStr = strDirs[strIdxStart + i + j];
- if ( !match( subPat, subStr, isCaseSensitive ) )
- {
+ if (!match(subPat, subStr, isCaseSensitive)) {
continue strLoop;
}
}
@@ -549,8 +469,7 @@ static boolean matchAntPathPattern( char[][] patDirs, char[][] strDirs, boolean
break;
}
- if ( foundIdx == -1 )
- {
+ if (foundIdx == -1) {
return false;
}
@@ -558,10 +477,8 @@ static boolean matchAntPathPattern( char[][] patDirs, char[][] strDirs, boolean
strIdxStart = foundIdx + patLength;
}
- for ( int i = patIdxStart; i <= patIdxEnd; i++ )
- {
- if ( !isDoubleStar( patDirs[i] ) )
- {
+ for (int i = patIdxStart; i <= patIdxEnd; i++) {
+ if (!isDoubleStar(patDirs[i])) {
return false;
}
}
@@ -569,8 +486,7 @@ static boolean matchAntPathPattern( char[][] patDirs, char[][] strDirs, boolean
return true;
}
- private static boolean isDoubleStar( char[] patDir )
- {
+ private static boolean isDoubleStar(char[] patDir) {
return patDir != null && patDir.length == 2 && patDir[0] == '*' && patDir[1] == '*';
}
@@ -583,9 +499,8 @@ private static boolean isDoubleStar( char[] patDir )
* @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 match( pattern, str, true );
+ public static boolean match(String pattern, String str) {
+ return match(pattern, str, true);
}
/**
@@ -598,15 +513,13 @@ public static boolean match( String pattern, String str )
* @param isCaseSensitive Whether or not matching should be performed case sensitively.
* @return true
if the string matches against the pattern, or false
otherwise.
*/
- public static boolean match( String pattern, String str, boolean isCaseSensitive )
- {
+ public static boolean match(String pattern, String str, boolean isCaseSensitive) {
char[] patArr = pattern.toCharArray();
char[] strArr = str.toCharArray();
- return match( patArr, strArr, isCaseSensitive );
+ return match(patArr, strArr, isCaseSensitive);
}
- public static boolean match( char[] patArr, char[] strArr, boolean isCaseSensitive )
- {
+ public static boolean match(char[] patArr, char[] strArr, boolean isCaseSensitive) {
int patIdxStart = 0;
int patIdxEnd = patArr.length - 1;
int strIdxStart = 0;
@@ -614,56 +527,44 @@ public static boolean match( char[] patArr, char[] strArr, boolean isCaseSensiti
char ch;
boolean containsStar = false;
- for ( char aPatArr : patArr )
- {
- if ( aPatArr == '*' )
- {
+ for (char aPatArr : patArr) {
+ if (aPatArr == '*') {
containsStar = true;
break;
}
}
- if ( !containsStar )
- {
+ if (!containsStar) {
// No '*'s, so we make a shortcut
- if ( patIdxEnd != strIdxEnd )
- {
+ if (patIdxEnd != strIdxEnd) {
return false; // Pattern and string do not have the same size
}
- for ( int i = 0; i <= patIdxEnd; i++ )
- {
+ for (int i = 0; i <= patIdxEnd; i++) {
ch = patArr[i];
- if ( ch != '?' && !equals( ch, strArr[i], isCaseSensitive ) )
- {
+ if (ch != '?' && !equals(ch, strArr[i], isCaseSensitive)) {
return false; // Character mismatch
}
}
return true; // String matches against pattern
}
- if ( patIdxEnd == 0 )
- {
+ if (patIdxEnd == 0) {
return true; // Pattern contains only '*', which matches anything
}
// Process characters before first star
- while ( ( ch = patArr[patIdxStart] ) != '*' && strIdxStart <= strIdxEnd )
- {
- if ( ch != '?' && !equals( ch, strArr[strIdxStart], isCaseSensitive ) )
- {
+ while ((ch = patArr[patIdxStart]) != '*' && strIdxStart <= strIdxEnd) {
+ if (ch != '?' && !equals(ch, strArr[strIdxStart], isCaseSensitive)) {
return false; // Character mismatch
}
patIdxStart++;
strIdxStart++;
}
- if ( strIdxStart > strIdxEnd )
- {
+ if (strIdxStart > strIdxEnd) {
// All characters in the string are used. Check if only '*'s are
// left in the pattern. If so, we succeeded. Otherwise failure.
- for ( int i = patIdxStart; i <= patIdxEnd; i++ )
- {
- if ( patArr[i] != '*' )
- {
+ for (int i = patIdxStart; i <= patIdxEnd; i++) {
+ if (patArr[i] != '*') {
return false;
}
}
@@ -671,23 +572,18 @@ public static boolean match( char[] patArr, char[] strArr, boolean isCaseSensiti
}
// Process characters after last star
- while ( ( ch = patArr[patIdxEnd] ) != '*' && strIdxStart <= strIdxEnd )
- {
- if ( ch != '?' && !equals( ch, strArr[strIdxEnd], isCaseSensitive ) )
- {
+ while ((ch = patArr[patIdxEnd]) != '*' && strIdxStart <= strIdxEnd) {
+ if (ch != '?' && !equals(ch, strArr[strIdxEnd], isCaseSensitive)) {
return false; // Character mismatch
}
patIdxEnd--;
strIdxEnd--;
}
- if ( strIdxStart > strIdxEnd )
- {
+ if (strIdxStart > strIdxEnd) {
// All characters in the string are used. Check if only '*'s are
// left in the pattern. If so, we succeeded. Otherwise failure.
- for ( int i = patIdxStart; i <= patIdxEnd; i++ )
- {
- if ( patArr[i] != '*' )
- {
+ for (int i = patIdxStart; i <= patIdxEnd; i++) {
+ if (patArr[i] != '*') {
return false;
}
}
@@ -696,35 +592,29 @@ public static boolean match( char[] patArr, char[] strArr, boolean isCaseSensiti
// process pattern between stars. padIdxStart and patIdxEnd point
// always to a '*'.
- while ( patIdxStart != patIdxEnd && strIdxStart <= strIdxEnd )
- {
+ while (patIdxStart != patIdxEnd && strIdxStart <= strIdxEnd) {
int patIdxTmp = -1;
- for ( int i = patIdxStart + 1; i <= patIdxEnd; i++ )
- {
- if ( patArr[i] == '*' )
- {
+ for (int i = patIdxStart + 1; i <= patIdxEnd; i++) {
+ if (patArr[i] == '*') {
patIdxTmp = i;
break;
}
}
- if ( patIdxTmp == patIdxStart + 1 )
- {
+ if (patIdxTmp == patIdxStart + 1) {
// Two stars next to each other, skip the first one.
patIdxStart++;
continue;
}
// Find the pattern between padIdxStart & padIdxTmp in str between
// strIdxStart & strIdxEnd
- int patLength = ( patIdxTmp - patIdxStart - 1 );
- int strLength = ( strIdxEnd - strIdxStart + 1 );
+ int patLength = (patIdxTmp - patIdxStart - 1);
+ int strLength = (strIdxEnd - strIdxStart + 1);
int foundIdx = -1;
- strLoop: for ( int i = 0; i <= strLength - patLength; i++ )
- {
- for ( int j = 0; j < patLength; j++ )
- {
+ strLoop:
+ for (int i = 0; i <= strLength - patLength; i++) {
+ for (int j = 0; j < patLength; j++) {
ch = patArr[patIdxStart + j + 1];
- if ( ch != '?' && !equals( ch, strArr[strIdxStart + i + j], isCaseSensitive ) )
- {
+ if (ch != '?' && !equals(ch, strArr[strIdxStart + i + j], isCaseSensitive)) {
continue strLoop;
}
}
@@ -733,8 +623,7 @@ public static boolean match( char[] patArr, char[] strArr, boolean isCaseSensiti
break;
}
- if ( foundIdx == -1 )
- {
+ if (foundIdx == -1) {
return false;
}
@@ -744,10 +633,8 @@ public static boolean match( char[] patArr, char[] strArr, boolean isCaseSensiti
// All characters in the string are used. Check if only '*'s are left
// in the pattern. If so, we succeeded. Otherwise failure.
- for ( int i = patIdxStart; i <= patIdxEnd; i++ )
- {
- if ( patArr[i] != '*' )
- {
+ for (int i = patIdxStart; i <= patIdxEnd; i++) {
+ if (patArr[i] != '*') {
return false;
}
}
@@ -757,33 +644,27 @@ public static boolean match( char[] patArr, char[] strArr, boolean isCaseSensiti
/**
* Tests whether two characters are equal.
*/
- private static boolean equals( char c1, char c2, boolean isCaseSensitive )
- {
- if ( c1 == c2 )
- {
+ private static boolean equals(char c1, char c2, boolean isCaseSensitive) {
+ if (c1 == c2) {
return true;
}
- if ( !isCaseSensitive )
- {
+ if (!isCaseSensitive) {
// NOTE: Try both upper case and lower case as done by String.equalsIgnoreCase()
- if ( Character.toUpperCase( c1 ) == Character.toUpperCase( c2 )
- || Character.toLowerCase( c1 ) == Character.toLowerCase( c2 ) )
- {
+ if (Character.toUpperCase(c1) == Character.toUpperCase(c2)
+ || Character.toLowerCase(c1) == Character.toLowerCase(c2)) {
return true;
}
}
return false;
}
- private static String[] tokenizePathToString( String path, String separator )
- {
+ private static String[] tokenizePathToString(String path, String separator) {
List ret = new ArrayList();
- StringTokenizer st = new StringTokenizer( path, separator );
- while ( st.hasMoreTokens() )
- {
- ret.add( st.nextToken() );
+ StringTokenizer st = new StringTokenizer(path, separator);
+ while (st.hasMoreTokens()) {
+ ret.add(st.nextToken());
}
- return ret.toArray( new String[0] );
+ return ret.toArray(new String[0]);
}
/**
@@ -797,18 +678,14 @@ private static String[] tokenizePathToString( String path, String separator )
* @param granularity the amount in seconds of slack we will give in determining out of dateness
* @return whether the target is out of date
*/
- public static boolean isOutOfDate( File src, File target, int granularity )
- {
- if ( !src.exists() )
- {
+ public static boolean isOutOfDate(File src, File target, int granularity) {
+ if (!src.exists()) {
return false;
}
- if ( !target.exists() )
- {
+ if (!target.exists()) {
return true;
}
- if ( ( src.lastModified() - granularity ) > target.lastModified() )
- {
+ if ((src.lastModified() - granularity) > target.lastModified()) {
return true;
}
return false;
@@ -821,15 +698,12 @@ public static boolean isOutOfDate( File src, File target, int granularity )
* @param input a String to remove all whitespace.
* @return a String that has had all whitespace removed.
*/
- public static String removeWhitespace( String input )
- {
+ public static String removeWhitespace(String input) {
StringBuilder result = new StringBuilder();
- if ( input != null )
- {
- StringTokenizer st = new StringTokenizer( input );
- while ( st.hasMoreTokens() )
- {
- result.append( st.nextToken() );
+ if (input != null) {
+ StringTokenizer st = new StringTokenizer(input);
+ while (st.hasMoreTokens()) {
+ result.append(st.nextToken());
}
}
return result.toString();
diff --git a/src/main/java/org/codehaus/plexus/util/StringInputStream.java b/src/main/java/org/codehaus/plexus/util/StringInputStream.java
index ea1c46c8..1e3ca5f5 100644
--- a/src/main/java/org/codehaus/plexus/util/StringInputStream.java
+++ b/src/main/java/org/codehaus/plexus/util/StringInputStream.java
@@ -70,9 +70,7 @@
* {@link java.io.ByteArrayInputStream}.
*/
@Deprecated
-public class StringInputStream
- extends InputStream
-{
+public class StringInputStream extends InputStream {
/** Source string, stored as a StringReader */
private StringReader in;
@@ -81,9 +79,8 @@ public class StringInputStream
*
* @param source The string to read from. Must not be null
.
*/
- public StringInputStream( String source )
- {
- in = new StringReader( source );
+ public StringInputStream(String source) {
+ in = new StringReader(source);
}
/**
@@ -94,9 +91,7 @@ public StringInputStream( String source )
* @exception IOException if the original StringReader fails to be read
*/
@Override
- public int read()
- throws IOException
- {
+ public int read() throws IOException {
return in.read();
}
@@ -106,9 +101,7 @@ public int read()
* @exception IOException if the original StringReader fails to be closed
*/
@Override
- public void close()
- throws IOException
- {
+ public void close() throws IOException {
in.close();
}
@@ -118,15 +111,11 @@ public void close()
* @param limit the maximum limit of bytes that can be read before the mark position becomes invalid
*/
@Override
- public synchronized void mark( final int limit )
- {
- try
- {
- in.mark( limit );
- }
- catch ( IOException ioe )
- {
- throw new RuntimeException( ioe.getMessage() );
+ public synchronized void mark(final int limit) {
+ try {
+ in.mark(limit);
+ } catch (IOException ioe) {
+ throw new RuntimeException(ioe.getMessage());
}
}
@@ -136,9 +125,7 @@ public synchronized void mark( final int limit )
* @exception IOException if the StringReader fails to be reset
*/
@Override
- public synchronized void reset()
- throws IOException
- {
+ public synchronized void reset() throws IOException {
in.reset();
}
@@ -146,8 +133,7 @@ public synchronized void reset()
* @see InputStream#markSupported
*/
@Override
- public boolean markSupported()
- {
+ public boolean markSupported() {
return in.markSupported();
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/StringOutputStream.java b/src/main/java/org/codehaus/plexus/util/StringOutputStream.java
index ef22b575..60474d81 100644
--- a/src/main/java/org/codehaus/plexus/util/StringOutputStream.java
+++ b/src/main/java/org/codehaus/plexus/util/StringOutputStream.java
@@ -28,37 +28,28 @@
* encoding. Instead, use {@link java.io.ByteArrayOutputStream#toString(String)}.
*/
@Deprecated
-public class StringOutputStream
- extends OutputStream
-{
+public class StringOutputStream extends OutputStream {
private StringBuffer buf = new StringBuffer();
@Override
- public void write( byte[] b )
- throws IOException
- {
- buf.append( new String( b ) );
+ public void write(byte[] b) throws IOException {
+ buf.append(new String(b));
}
@Override
- public void write( byte[] b, int off, int len )
- throws IOException
- {
- buf.append( new String( b, off, len ) );
+ public void write(byte[] b, int off, int len) throws IOException {
+ buf.append(new String(b, off, len));
}
@Override
- public void write( int b )
- throws IOException
- {
+ public void write(int b) throws IOException {
byte[] bytes = new byte[1];
bytes[0] = (byte) b;
- buf.append( new String( bytes ) );
+ buf.append(new String(bytes));
}
@Override
- public String toString()
- {
+ public String toString() {
return buf.toString();
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/StringUtils.java b/src/main/java/org/codehaus/plexus/util/StringUtils.java
index 0f8518de..edae9844 100644
--- a/src/main/java/org/codehaus/plexus/util/StringUtils.java
+++ b/src/main/java/org/codehaus/plexus/util/StringUtils.java
@@ -82,8 +82,7 @@
* @since 1.0
*
*/
-public class StringUtils
-{
+public class StringUtils {
/**
*
* StringUtils
instances should NOT be constructed in standard programming. Instead, the class should
@@ -93,9 +92,7 @@ public class StringUtils
* This constructor is public to permit tools that require a JavaBean manager to operate.
*
*/
- public StringUtils()
- {
- }
+ public StringUtils() {}
// Empty
// --------------------------------------------------------------------------
@@ -110,9 +107,8 @@ public StringUtils()
* @param str the String to check
* @return the trimmed text (never null
)
*/
- public static String clean( String str )
- {
- return ( str == null ? "" : str.trim() );
+ public static String clean(String str) {
+ return (str == null ? "" : str.trim());
}
/**
@@ -125,9 +121,8 @@ public static String clean( String str )
* @param str the String to check
* @return the trimmed text (or null
)
*/
- public static String trim( String str )
- {
- return ( str == null ? null : str.trim() );
+ public static String trim(String str) {
+ return (str == null ? null : str.trim());
}
/**
@@ -141,15 +136,12 @@ public static String trim( String str )
* @param str String target to delete whitespace from
* @return the String without whitespaces
*/
- public static String deleteWhitespace( String str )
- {
+ public static String deleteWhitespace(String str) {
StringBuilder buffer = new StringBuilder();
int sz = str.length();
- for ( int i = 0; i < sz; i++ )
- {
- if ( !Character.isWhitespace( str.charAt( i ) ) )
- {
- buffer.append( str.charAt( i ) );
+ for (int i = 0; i < sz; i++) {
+ if (!Character.isWhitespace(str.charAt(i))) {
+ buffer.append(str.charAt(i));
}
}
return buffer.toString();
@@ -161,9 +153,8 @@ public static String deleteWhitespace( String str )
* @param str the String to check
* @return true if the String is non-null, and not length zero
*/
- public static boolean isNotEmpty( String str )
- {
- return ( ( str != null ) && ( !str.isEmpty() ) );
+ public static boolean isNotEmpty(String str) {
+ return ((str != null) && (!str.isEmpty()));
}
/**
@@ -176,9 +167,8 @@ public static boolean isNotEmpty( String str )
* @param str the String to check
* @return true
if the String is null
, or length zero
*/
- public static boolean isEmpty( String str )
- {
- return ( ( str == null ) || ( str.isEmpty() ) );
+ public static boolean isEmpty(String str) {
+ return ((str == null) || (str.isEmpty()));
}
/**
@@ -198,17 +188,13 @@ public static boolean isEmpty( String str )
* @return true
if the String is null, empty or whitespace
* @since 1.5.2
*/
- public static boolean isBlank( String str )
- {
+ public static boolean isBlank(String str) {
int strLen;
- if ( str == null || ( strLen = str.length() ) == 0 )
- {
+ if (str == null || (strLen = str.length()) == 0) {
return true;
}
- for ( int i = 0; i < strLen; i++ )
- {
- if ( !Character.isWhitespace( str.charAt( i ) ) )
- {
+ for (int i = 0; i < strLen; i++) {
+ if (!Character.isWhitespace(str.charAt(i))) {
return false;
}
}
@@ -232,9 +218,8 @@ public static boolean isBlank( String str )
* @return true
if the String is not empty and not null and not whitespace
* @since 1.5.2
*/
- public static boolean isNotBlank( String str )
- {
- return !StringUtils.isBlank( str );
+ public static boolean isNotBlank(String str) {
+ return !StringUtils.isBlank(str);
}
// Equals and IndexOf
@@ -256,9 +241,8 @@ public static boolean isNotBlank( String str )
* @see Objects#equals(Object, Object)
*/
@Deprecated
- public static boolean equals( String str1, String str2 )
- {
- return Objects.equals( str1, str2 );
+ public static boolean equals(String str1, String str2) {
+ return Objects.equals(str1, str2);
}
/**
@@ -275,9 +259,8 @@ public static boolean equals( String str1, String str2 )
* @param str2 the second string
* @return true
if the Strings are equal, case insensitive, or both null
*/
- public static boolean equalsIgnoreCase( String str1, String str2 )
- {
- return ( str1 == null ? str2 == null : str1.equalsIgnoreCase( str2 ) );
+ public static boolean equalsIgnoreCase(String str1, String str2) {
+ return (str1 == null ? str2 == null : str1.equalsIgnoreCase(str2));
}
/**
@@ -293,10 +276,8 @@ public static boolean equalsIgnoreCase( String str1, String str2 )
* @return the first index of any of the searchStrs in str
* @throws NullPointerException if any of searchStrs[i] is null
*/
- public static int indexOfAny( String str, String[] searchStrs )
- {
- if ( ( str == null ) || ( searchStrs == null ) )
- {
+ public static int indexOfAny(String str, String[] searchStrs) {
+ if ((str == null) || (searchStrs == null)) {
return -1;
}
int sz = searchStrs.length;
@@ -305,21 +286,18 @@ public static int indexOfAny( String str, String[] searchStrs )
int ret = Integer.MAX_VALUE;
int tmp;
- for ( String searchStr : searchStrs )
- {
- tmp = str.indexOf( searchStr );
- if ( tmp == -1 )
- {
+ for (String searchStr : searchStrs) {
+ tmp = str.indexOf(searchStr);
+ if (tmp == -1) {
continue;
}
- if ( tmp < ret )
- {
+ if (tmp < ret) {
ret = tmp;
}
}
- return ( ret == Integer.MAX_VALUE ) ? -1 : ret;
+ return (ret == Integer.MAX_VALUE) ? -1 : ret;
}
/**
@@ -335,19 +313,15 @@ public static int indexOfAny( String str, String[] searchStrs )
* @return the last index of any of the Strings
* @throws NullPointerException if any of searchStrs[i] is null
*/
- public static int lastIndexOfAny( String str, String[] searchStrs )
- {
- if ( ( str == null ) || ( searchStrs == null ) )
- {
+ public static int lastIndexOfAny(String str, String[] searchStrs) {
+ if ((str == null) || (searchStrs == null)) {
return -1;
}
int ret = -1;
int tmp;
- for ( String searchStr : searchStrs )
- {
- tmp = str.lastIndexOf( searchStr );
- if ( tmp > ret )
- {
+ for (String searchStr : searchStrs) {
+ tmp = str.lastIndexOf(searchStr);
+ if (tmp > ret) {
ret = tmp;
}
}
@@ -370,29 +344,24 @@ public static int lastIndexOfAny( String str, String[] searchStrs )
* characters
* @return substring from start position
*/
- public static String substring( String str, int start )
- {
- if ( str == null )
- {
+ public static String substring(String str, int start) {
+ if (str == null) {
return null;
}
// handle negatives, which means last n characters
- if ( start < 0 )
- {
+ if (start < 0) {
start = str.length() + start; // remember start is negative
}
- if ( start < 0 )
- {
+ if (start < 0) {
start = 0;
}
- if ( start > str.length() )
- {
+ if (start > str.length()) {
return "";
}
- return str.substring( start );
+ return str.substring(start);
}
/**
@@ -410,46 +379,38 @@ public static String substring( String str, int start )
* characters
* @return substring from start position to end position
*/
- public static String substring( String str, int start, int end )
- {
- if ( str == null )
- {
+ public static String substring(String str, int start, int end) {
+ if (str == null) {
return null;
}
// handle negatives
- if ( end < 0 )
- {
+ if (end < 0) {
end = str.length() + end; // remember end is negative
}
- if ( start < 0 )
- {
+ if (start < 0) {
start = str.length() + start; // remember start is negative
}
// check length next
- if ( end > str.length() )
- {
+ if (end > str.length()) {
// check this works.
end = str.length();
}
// if start is greater than end, return ""
- if ( start > end )
- {
+ if (start > end) {
return "";
}
- if ( start < 0 )
- {
+ if (start < 0) {
start = 0;
}
- if ( end < 0 )
- {
+ if (end < 0) {
end = 0;
}
- return str.substring( start, end );
+ return str.substring(start, end);
}
/**
@@ -466,19 +427,14 @@ public static String substring( String str, int start, int end )
* @return the leftmost characters
* @throws IllegalArgumentException if len is less than zero
*/
- public static String left( String str, int len )
- {
- if ( len < 0 )
- {
- throw new IllegalArgumentException( "Requested String length " + len + " is less than zero" );
+ public static String left(String str, int len) {
+ if (len < 0) {
+ throw new IllegalArgumentException("Requested String length " + len + " is less than zero");
}
- if ( ( str == null ) || ( str.length() <= len ) )
- {
+ if ((str == null) || (str.length() <= len)) {
return str;
- }
- else
- {
- return str.substring( 0, len );
+ } else {
+ return str.substring(0, len);
}
}
@@ -496,19 +452,14 @@ public static String left( String str, int len )
* @return the leftmost characters
* @throws IllegalArgumentException if len is less than zero
*/
- public static String right( String str, int len )
- {
- if ( len < 0 )
- {
- throw new IllegalArgumentException( "Requested String length " + len + " is less than zero" );
+ public static String right(String str, int len) {
+ if (len < 0) {
+ throw new IllegalArgumentException("Requested String length " + len + " is less than zero");
}
- if ( ( str == null ) || ( str.length() <= len ) )
- {
+ if ((str == null) || (str.length() <= len)) {
return str;
- }
- else
- {
- return str.substring( str.length() - len );
+ } else {
+ return str.substring(str.length() - len);
}
}
@@ -528,27 +479,20 @@ public static String right( String str, int len )
* @throws IndexOutOfBoundsException if pos is out of bounds
* @throws IllegalArgumentException if len is less than zero
*/
- public static String mid( String str, int pos, int len )
- {
- if ( ( pos < 0 ) || ( ( str != null ) && ( pos > str.length() ) ) )
- {
- throw new StringIndexOutOfBoundsException( "String index " + pos + " is out of bounds" );
+ public static String mid(String str, int pos, int len) {
+ if ((pos < 0) || ((str != null) && (pos > str.length()))) {
+ throw new StringIndexOutOfBoundsException("String index " + pos + " is out of bounds");
}
- if ( len < 0 )
- {
- throw new IllegalArgumentException( "Requested String length " + len + " is less than zero" );
+ if (len < 0) {
+ throw new IllegalArgumentException("Requested String length " + len + " is less than zero");
}
- if ( str == null )
- {
+ if (str == null) {
return null;
}
- if ( str.length() <= ( pos + len ) )
- {
- return str.substring( pos );
- }
- else
- {
- return str.substring( pos, pos + len );
+ if (str.length() <= (pos + len)) {
+ return str.substring(pos);
+ } else {
+ return str.substring(pos, pos + len);
}
}
@@ -566,9 +510,8 @@ public static String mid( String str, int pos, int len )
* @param str the String to parse
* @return an array of parsed Strings
*/
- public static String[] split( String str )
- {
- return split( str, null, -1 );
+ public static String[] split(String str) {
+ return split(str, null, -1);
}
/**
@@ -576,9 +519,8 @@ public static String[] split( String str )
* @param separator Characters used as the delimiters. If null
, splits on whitespace.
* @return an array of parsed Strings
*/
- public static String[] split( String text, String separator )
- {
- return split( text, separator, -1 );
+ public static String[] split(String text, String separator) {
+ return split(text, separator, -1);
}
/**
@@ -599,23 +541,18 @@ public static String[] split( String text, String separator )
* @param max The maximum number of elements to include in the array. A zero or negative value implies no limit.
* @return an array of parsed Strings
*/
- public static String[] split( String str, String separator, int max )
- {
+ public static String[] split(String str, String separator, int max) {
StringTokenizer tok;
- if ( separator == null )
- {
+ if (separator == null) {
// Null separator means we're using StringTokenizer's default
// delimiter, which comprises all whitespace characters.
- tok = new StringTokenizer( str );
- }
- else
- {
- tok = new StringTokenizer( str, separator );
+ tok = new StringTokenizer(str);
+ } else {
+ tok = new StringTokenizer(str, separator);
}
int listSize = tok.countTokens();
- if ( ( max > 0 ) && ( listSize > max ) )
- {
+ if ((max > 0) && (listSize > max)) {
listSize = max;
}
@@ -623,22 +560,18 @@ public static String[] split( String str, String separator, int max )
int i = 0;
int lastTokenBegin;
int lastTokenEnd = 0;
- while ( tok.hasMoreTokens() )
- {
- if ( ( max > 0 ) && ( i == listSize - 1 ) )
- {
+ while (tok.hasMoreTokens()) {
+ if ((max > 0) && (i == listSize - 1)) {
// In the situation where we hit the max yet have
// tokens left over in our input, the last list
// element gets all remaining text.
String endToken = tok.nextToken();
- lastTokenBegin = str.indexOf( endToken, lastTokenEnd );
- list[i] = str.substring( lastTokenBegin );
+ lastTokenBegin = str.indexOf(endToken, lastTokenEnd);
+ list[i] = str.substring(lastTokenBegin);
break;
- }
- else
- {
+ } else {
list[i] = tok.nextToken();
- lastTokenBegin = str.indexOf( list[i], lastTokenEnd );
+ lastTokenBegin = str.indexOf(list[i], lastTokenEnd);
lastTokenEnd = lastTokenBegin + list[i].length();
}
i++;
@@ -659,9 +592,8 @@ public static String[] split( String str, String separator, int max )
* @param array the array of values to concatenate.
* @return the concatenated string.
*/
- public static String concatenate( Object[] array )
- {
- return join( array, "" );
+ public static String concatenate(Object[] array) {
+ return join(array, "");
}
/**
@@ -676,23 +608,19 @@ public static String concatenate( Object[] array )
* @param separator the separator character to use
* @return the joined String
*/
- public static String join( Object[] array, String separator )
- {
- if ( separator == null )
- {
+ public static String join(Object[] array, String separator) {
+ if (separator == null) {
separator = "";
}
int arraySize = array.length;
- int bufSize = ( arraySize == 0 ? 0 : ( array[0].toString().length() + separator.length() ) * arraySize );
- StringBuilder buf = new StringBuilder( bufSize );
-
- for ( int i = 0; i < arraySize; i++ )
- {
- if ( i > 0 )
- {
- buf.append( separator );
+ int bufSize = (arraySize == 0 ? 0 : (array[0].toString().length() + separator.length()) * arraySize);
+ StringBuilder buf = new StringBuilder(bufSize);
+
+ for (int i = 0; i < arraySize; i++) {
+ if (i > 0) {
+ buf.append(separator);
}
- buf.append( array[i] );
+ buf.append(array[i]);
}
return buf.toString();
}
@@ -709,19 +637,15 @@ public static String join( Object[] array, String separator )
* @param separator the separator character to use
* @return the joined String
*/
- public static String join( Iterator> iterator, String separator )
- {
- if ( separator == null )
- {
+ public static String join(Iterator> iterator, String separator) {
+ if (separator == null) {
separator = "";
}
- StringBuilder buf = new StringBuilder( 256 ); // Java default is 16, probably too small
- while ( iterator.hasNext() )
- {
- buf.append( iterator.next() );
- if ( iterator.hasNext() )
- {
- buf.append( separator );
+ StringBuilder buf = new StringBuilder(256); // Java default is 16, probably too small
+ while (iterator.hasNext()) {
+ buf.append(iterator.next());
+ if (iterator.hasNext()) {
+ buf.append(separator);
}
}
return buf.toString();
@@ -744,9 +668,8 @@ public static String join( Iterator> iterator, String separator )
* @param with char to replace with
* @return the text with any replacements processed
*/
- public static String replaceOnce( String text, char repl, char with )
- {
- return replace( text, repl, with, 1 );
+ public static String replaceOnce(String text, char repl, char with) {
+ return replace(text, repl, with, 1);
}
/**
@@ -763,9 +686,8 @@ public static String replaceOnce( String text, char repl, char with )
* @param with char to replace with
* @return the text with any replacements processed
*/
- public static String replace( String text, char repl, char with )
- {
- return replace( text, repl, with, -1 );
+ public static String replace(String text, char repl, char with) {
+ return replace(text, repl, with, -1);
}
/**
@@ -783,9 +705,8 @@ public static String replace( String text, char repl, char with )
* @param max maximum number of values to replace, or -1
if no maximum
* @return the text with any replacements processed
*/
- public static String replace( String text, char repl, char with, int max )
- {
- return replace( text, String.valueOf( repl ), String.valueOf( with ), max );
+ public static String replace(String text, char repl, char with, int max) {
+ return replace(text, String.valueOf(repl), String.valueOf(with), max);
}
/**
@@ -802,9 +723,8 @@ public static String replace( String text, char repl, char with, int max )
* @param with String to replace with
* @return the text with any replacements processed
*/
- public static String replaceOnce( String text, String repl, String with )
- {
- return replace( text, repl, with, 1 );
+ public static String replaceOnce(String text, String repl, String with) {
+ return replace(text, repl, with, 1);
}
/**
@@ -821,9 +741,8 @@ public static String replaceOnce( String text, String repl, String with )
* @param with String to replace with
* @return the text with any replacements processed
*/
- public static String replace( String text, String repl, String with )
- {
- return replace( text, repl, with, -1 );
+ public static String replace(String text, String repl, String with) {
+ return replace(text, repl, with, -1);
}
/**
@@ -841,26 +760,22 @@ public static String replace( String text, String repl, String with )
* @param max maximum number of values to replace, or -1
if no maximum
* @return the text with any replacements processed
*/
- public static String replace( String text, String repl, String with, int max )
- {
- if ( ( text == null ) || ( repl == null ) || ( with == null ) || ( repl.length() == 0 ) )
- {
+ public static String replace(String text, String repl, String with, int max) {
+ if ((text == null) || (repl == null) || (with == null) || (repl.length() == 0)) {
return text;
}
- StringBuilder buf = new StringBuilder( text.length() );
+ StringBuilder buf = new StringBuilder(text.length());
int start = 0, end;
- while ( ( end = text.indexOf( repl, start ) ) != -1 )
- {
- buf.append( text, start, end ).append( with );
+ while ((end = text.indexOf(repl, start)) != -1) {
+ buf.append(text, start, end).append(with);
start = end + repl.length();
- if ( --max == 0 )
- {
+ if (--max == 0) {
break;
}
}
- buf.append( text, start, text.length() );
+ buf.append(text, start, text.length());
return buf.toString();
}
@@ -876,10 +791,12 @@ public static String replace( String text, String repl, String with, int max )
* @return String with overlayed text
* @throws NullPointerException if text or overlay is null
*/
- public static String overlayString( String text, String overlay, int start, int end )
- {
- return new StringBuilder( start + overlay.length() + text.length() - end
- + 1 ).append( text, 0, start ).append( overlay ).append( text, end, text.length() ).toString();
+ public static String overlayString(String text, String overlay, int start, int end) {
+ return new StringBuilder(start + overlay.length() + text.length() - end + 1)
+ .append(text, 0, start)
+ .append(overlay)
+ .append(text, end, text.length())
+ .toString();
}
// Centering
@@ -898,9 +815,8 @@ public static String overlayString( String text, String overlay, int start, int
* @return String containing centered String
* @throws NullPointerException if str is null
*/
- public static String center( String str, int size )
- {
- return center( str, size, " " );
+ public static String center(String str, int size) {
+ return center(str, size, " ");
}
/**
@@ -918,16 +834,14 @@ public static String center( String str, int size )
* @throws NullPointerException if str or delim is null
* @throws ArithmeticException if delim is the empty String
*/
- public static String center( String str, int size, String delim )
- {
+ public static String center(String str, int size, String delim) {
int sz = str.length();
int p = size - sz;
- if ( p < 1 )
- {
+ if (p < 1) {
return str;
}
- str = leftPad( str, sz + p / 2, delim );
- str = rightPad( str, size, delim );
+ str = leftPad(str, sz + p / 2, delim);
+ str = rightPad(str, size, delim);
return str;
}
@@ -943,9 +857,8 @@ public static String center( String str, int size, String delim )
* @return String without chomped newline
* @throws NullPointerException if str is null
*/
- public static String chomp( String str )
- {
- return chomp( str, "\n" );
+ public static String chomp(String str) {
+ return chomp(str, "\n");
}
/**
@@ -958,15 +871,11 @@ public static String chomp( String str )
* @return String without chomped ending
* @throws NullPointerException if str or sep is null
*/
- public static String chomp( String str, String sep )
- {
- int idx = str.lastIndexOf( sep );
- if ( idx != -1 )
- {
- return str.substring( 0, idx );
- }
- else
- {
+ public static String chomp(String str, String sep) {
+ int idx = str.lastIndexOf(sep);
+ if (idx != -1) {
+ return str.substring(0, idx);
+ } else {
return str;
}
}
@@ -980,9 +889,8 @@ public static String chomp( String str, String sep )
* @return String without chomped ending
* @throws NullPointerException if str is null
*/
- public static String chompLast( String str )
- {
- return chompLast( str, "\n" );
+ public static String chompLast(String str) {
+ return chompLast(str, "\n");
}
/**
@@ -995,19 +903,14 @@ public static String chompLast( String str )
* @return String without chomped ending
* @throws NullPointerException if str or sep is null
*/
- public static String chompLast( String str, String sep )
- {
- if ( str.length() == 0 )
- {
+ public static String chompLast(String str, String sep) {
+ if (str.length() == 0) {
return str;
}
- String sub = str.substring( str.length() - sep.length() );
- if ( sep.equals( sub ) )
- {
- return str.substring( 0, str.length() - sep.length() );
- }
- else
- {
+ String sub = str.substring(str.length() - sep.length());
+ if (sep.equals(sub)) {
+ return str.substring(0, str.length() - sep.length());
+ } else {
return str;
}
}
@@ -1022,19 +925,13 @@ public static String chompLast( String str, String sep )
* @return String chomped
* @throws NullPointerException if str or sep is null
*/
- public static String getChomp( String str, String sep )
- {
- int idx = str.lastIndexOf( sep );
- if ( idx == str.length() - sep.length() )
- {
+ public static String getChomp(String str, String sep) {
+ int idx = str.lastIndexOf(sep);
+ if (idx == str.length() - sep.length()) {
return sep;
- }
- else if ( idx != -1 )
- {
- return str.substring( idx );
- }
- else
- {
+ } else if (idx != -1) {
+ return str.substring(idx);
+ } else {
return "";
}
}
@@ -1049,15 +946,11 @@ else if ( idx != -1 )
* @return String without chomped beginning
* @throws NullPointerException if str or sep is null
*/
- public static String prechomp( String str, String sep )
- {
- int idx = str.indexOf( sep );
- if ( idx != -1 )
- {
- return str.substring( idx + sep.length() );
- }
- else
- {
+ public static String prechomp(String str, String sep) {
+ int idx = str.indexOf(sep);
+ if (idx != -1) {
+ return str.substring(idx + sep.length());
+ } else {
return str;
}
}
@@ -1072,15 +965,11 @@ public static String prechomp( String str, String sep )
* @return String prechomped
* @throws NullPointerException if str or sep is null
*/
- public static String getPrechomp( String str, String sep )
- {
- int idx = str.indexOf( sep );
- if ( idx != -1 )
- {
- return str.substring( 0, idx + sep.length() );
- }
- else
- {
+ public static String getPrechomp(String str, String sep) {
+ int idx = str.indexOf(sep);
+ if (idx != -1) {
+ return str.substring(0, idx + sep.length());
+ } else {
return "";
}
}
@@ -1100,24 +989,19 @@ public static String getPrechomp( String str, String sep )
* @return String without last character
* @throws NullPointerException if str is null
*/
- public static String chop( String str )
- {
- if ( "".equals( str ) )
- {
+ public static String chop(String str) {
+ if ("".equals(str)) {
return "";
}
- if ( str.length() == 1 )
- {
+ if (str.length() == 1) {
return "";
}
int lastIdx = str.length() - 1;
- String ret = str.substring( 0, lastIdx );
- char last = str.charAt( lastIdx );
- if ( last == '\n' )
- {
- if ( ret.charAt( lastIdx - 1 ) == '\r' )
- {
- return ret.substring( 0, lastIdx - 1 );
+ String ret = str.substring(0, lastIdx);
+ char last = str.charAt(lastIdx);
+ if (last == '\n') {
+ if (ret.charAt(lastIdx - 1) == '\r') {
+ return ret.substring(0, lastIdx - 1);
}
}
return ret;
@@ -1133,22 +1017,17 @@ public static String chop( String str )
* @return String without newline
* @throws NullPointerException if str is null
*/
- public static String chopNewline( String str )
- {
+ public static String chopNewline(String str) {
int lastIdx = str.length() - 1;
- char last = str.charAt( lastIdx );
- if ( last == '\n' )
- {
- if ( str.charAt( lastIdx - 1 ) == '\r' )
- {
+ char last = str.charAt(lastIdx);
+ if (last == '\n') {
+ if (str.charAt(lastIdx - 1) == '\r') {
lastIdx--;
}
- }
- else
- {
+ } else {
lastIdx++;
}
- return str.substring( 0, lastIdx );
+ return str.substring(0, lastIdx);
}
// Conversion
@@ -1167,83 +1046,67 @@ public static String chopNewline( String str )
* @return String with escaped values
* @throws NullPointerException if str is null
*/
- public static String escape( String str )
- {
+ public static String escape(String str) {
// improved with code from cybertiger@cyberiantiger.org
// unicode from him, and default for < 32's.
int sz = str.length();
- StringBuilder buffer = new StringBuilder( 2 * sz );
- for ( int i = 0; i < sz; i++ )
- {
- char ch = str.charAt( i );
+ StringBuilder buffer = new StringBuilder(2 * sz);
+ for (int i = 0; i < sz; i++) {
+ char ch = str.charAt(i);
// handle unicode
- if ( ch > 0xfff )
- {
- buffer.append( "\\u" + Integer.toHexString( ch ) );
- }
- else if ( ch > 0xff )
- {
- buffer.append( "\\u0" + Integer.toHexString( ch ) );
- }
- else if ( ch > 0x7f )
- {
- buffer.append( "\\u00" + Integer.toHexString( ch ) );
- }
- else if ( ch < 32 )
- {
- switch ( ch )
- {
+ if (ch > 0xfff) {
+ buffer.append("\\u" + Integer.toHexString(ch));
+ } else if (ch > 0xff) {
+ buffer.append("\\u0" + Integer.toHexString(ch));
+ } else if (ch > 0x7f) {
+ buffer.append("\\u00" + Integer.toHexString(ch));
+ } else if (ch < 32) {
+ switch (ch) {
case '\b':
- buffer.append( '\\' );
- buffer.append( 'b' );
+ buffer.append('\\');
+ buffer.append('b');
break;
case '\n':
- buffer.append( '\\' );
- buffer.append( 'n' );
+ buffer.append('\\');
+ buffer.append('n');
break;
case '\t':
- buffer.append( '\\' );
- buffer.append( 't' );
+ buffer.append('\\');
+ buffer.append('t');
break;
case '\f':
- buffer.append( '\\' );
- buffer.append( 'f' );
+ buffer.append('\\');
+ buffer.append('f');
break;
case '\r':
- buffer.append( '\\' );
- buffer.append( 'r' );
+ buffer.append('\\');
+ buffer.append('r');
break;
default:
- if ( ch > 0xf )
- {
- buffer.append( "\\u00" + Integer.toHexString( ch ) );
- }
- else
- {
- buffer.append( "\\u000" + Integer.toHexString( ch ) );
+ if (ch > 0xf) {
+ buffer.append("\\u00" + Integer.toHexString(ch));
+ } else {
+ buffer.append("\\u000" + Integer.toHexString(ch));
}
break;
}
- }
- else
- {
- switch ( ch )
- {
+ } else {
+ switch (ch) {
case '\'':
- buffer.append( '\\' );
- buffer.append( '\'' );
+ buffer.append('\\');
+ buffer.append('\'');
break;
case '"':
- buffer.append( '\\' );
- buffer.append( '"' );
+ buffer.append('\\');
+ buffer.append('"');
break;
case '\\':
- buffer.append( '\\' );
- buffer.append( '\\' );
+ buffer.append('\\');
+ buffer.append('\\');
break;
default:
- buffer.append( ch );
+ buffer.append(ch);
break;
}
}
@@ -1265,12 +1128,10 @@ else if ( ch < 32 )
* @throws NegativeArraySizeException if repeat < 0
* @throws NullPointerException if str is null
*/
- public static String repeat( String str, int repeat )
- {
- StringBuilder buffer = new StringBuilder( repeat * str.length() );
- for ( int i = 0; i < repeat; i++ )
- {
- buffer.append( str );
+ public static String repeat(String str, int repeat) {
+ StringBuilder buffer = new StringBuilder(repeat * str.length());
+ for (int i = 0; i < repeat; i++) {
+ buffer.append(str);
}
return buffer.toString();
}
@@ -1288,9 +1149,8 @@ public static String repeat( String str, int repeat )
* @return right padded String
* @throws NullPointerException if str is null
*/
- public static String rightPad( String str, int size )
- {
- return rightPad( str, size, " " );
+ public static String rightPad(String str, int size) {
+ return rightPad(str, size, " ");
}
/**
@@ -1308,12 +1168,10 @@ public static String rightPad( String str, int size )
* @throws NullPointerException if str or delim is null
* @throws ArithmeticException if delim is the empty String
*/
- public static String rightPad( String str, int size, String delim )
- {
- size = ( size - str.length() ) / delim.length();
- if ( size > 0 )
- {
- str += repeat( delim, size );
+ public static String rightPad(String str, int size, String delim) {
+ size = (size - str.length()) / delim.length();
+ if (size > 0) {
+ str += repeat(delim, size);
}
return str;
}
@@ -1331,9 +1189,8 @@ public static String rightPad( String str, int size, String delim )
* @return left padded String
* @throws NullPointerException if str or delim is null
*/
- public static String leftPad( String str, int size )
- {
- return leftPad( str, size, " " );
+ public static String leftPad(String str, int size) {
+ return leftPad(str, size, " ");
}
/**
@@ -1346,12 +1203,10 @@ public static String leftPad( String str, int size )
* @throws NullPointerException if str or delim is null
* @throws ArithmeticException if delim is the empty string
*/
- public static String leftPad( String str, int size, String delim )
- {
- size = ( size - str.length() ) / delim.length();
- if ( size > 0 )
- {
- str = repeat( delim, size ) + str;
+ public static String leftPad(String str, int size, String delim) {
+ size = (size - str.length()) / delim.length();
+ if (size > 0) {
+ str = repeat(delim, size) + str;
}
return str;
}
@@ -1367,9 +1222,8 @@ public static String leftPad( String str, int size, String delim )
* @param str the String to remove whitespace from
* @return the stripped String
*/
- public static String strip( String str )
- {
- return strip( str, null );
+ public static String strip(String str) {
+ return strip(str, null);
}
/**
@@ -1384,10 +1238,9 @@ public static String strip( String str )
* @param delim the String to remove at start and end
* @return the stripped String
*/
- public static String strip( String str, String delim )
- {
- str = stripStart( str, delim );
- return stripEnd( str, delim );
+ public static String strip(String str, String delim) {
+ str = stripStart(str, delim);
+ return stripEnd(str, delim);
}
/**
@@ -1398,9 +1251,8 @@ public static String strip( String str, String delim )
* @param strs the Strings to remove whitespace from
* @return the stripped Strings
*/
- public static String[] stripAll( String[] strs )
- {
- return stripAll( strs, null );
+ public static String[] stripAll(String[] strs) {
+ return stripAll(strs, null);
}
/**
@@ -1412,17 +1264,14 @@ public static String[] stripAll( String[] strs )
* @param delimiter the String to remove at start and end
* @return the stripped Strings
*/
- public static String[] stripAll( String[] strs, String delimiter )
- {
- if ( ( strs == null ) || ( strs.length == 0 ) )
- {
+ public static String[] stripAll(String[] strs, String delimiter) {
+ if ((strs == null) || (strs.length == 0)) {
return strs;
}
int sz = strs.length;
String[] newArr = new String[sz];
- for ( int i = 0; i < sz; i++ )
- {
- newArr[i] = strip( strs[i], delimiter );
+ for (int i = 0; i < sz; i++) {
+ newArr[i] = strip(strs[i], delimiter);
}
return newArr;
}
@@ -1439,29 +1288,22 @@ public static String[] stripAll( String[] strs, String delimiter )
* @param strip the String to remove
* @return the stripped String
*/
- public static String stripEnd( String str, String strip )
- {
- if ( str == null )
- {
+ public static String stripEnd(String str, String strip) {
+ if (str == null) {
return null;
}
int end = str.length();
- if ( strip == null )
- {
- while ( ( end != 0 ) && Character.isWhitespace( str.charAt( end - 1 ) ) )
- {
+ if (strip == null) {
+ while ((end != 0) && Character.isWhitespace(str.charAt(end - 1))) {
end--;
}
- }
- else
- {
- while ( ( end != 0 ) && ( strip.indexOf( str.charAt( end - 1 ) ) != -1 ) )
- {
+ } else {
+ while ((end != 0) && (strip.indexOf(str.charAt(end - 1)) != -1)) {
end--;
}
}
- return str.substring( 0, end );
+ return str.substring(0, end);
}
/**
@@ -1476,10 +1318,8 @@ public static String stripEnd( String str, String strip )
* @param strip the String to remove
* @return the stripped String
*/
- public static String stripStart( String str, String strip )
- {
- if ( str == null )
- {
+ public static String stripStart(String str, String strip) {
+ if (str == null) {
return null;
}
@@ -1487,21 +1327,16 @@ public static String stripStart( String str, String strip )
int sz = str.length();
- if ( strip == null )
- {
- while ( ( start != sz ) && Character.isWhitespace( str.charAt( start ) ) )
- {
+ if (strip == null) {
+ while ((start != sz) && Character.isWhitespace(str.charAt(start))) {
start++;
}
- }
- else
- {
- while ( ( start != sz ) && ( strip.indexOf( str.charAt( start ) ) != -1 ) )
- {
+ } else {
+ while ((start != sz) && (strip.indexOf(str.charAt(start)) != -1)) {
start++;
}
}
- return str.substring( start );
+ return str.substring(start);
}
// Case conversion
@@ -1515,10 +1350,8 @@ public static String stripStart( String str, String strip )
* @param str the String to uppercase
* @return the upper cased String
*/
- public static String upperCase( String str )
- {
- if ( str == null )
- {
+ public static String upperCase(String str) {
+ if (str == null) {
return null;
}
return str.toUpperCase();
@@ -1532,10 +1365,8 @@ public static String upperCase( String str )
* @param str the string to lowercase
* @return the lower cased String
*/
- public static String lowerCase( String str )
- {
- if ( str == null )
- {
+ public static String lowerCase(String str) {
+ if (str == null) {
return null;
}
return str.toLowerCase();
@@ -1552,20 +1383,16 @@ public static String lowerCase( String str )
* @param str the String to uncapitalise
* @return uncapitalised String
*/
- public static String uncapitalise( String str )
- {
- if ( str == null )
- {
+ public static String uncapitalise(String str) {
+ if (str == null) {
return null;
- }
- else if ( str.length() == 0 )
- {
+ } else if (str.length() == 0) {
return "";
- }
- else
- {
- return new StringBuilder( str.length() ).append( Character.toLowerCase( str.charAt( 0 ) ) ).append( str, 1,
- str.length() ).toString();
+ } else {
+ return new StringBuilder(str.length())
+ .append(Character.toLowerCase(str.charAt(0)))
+ .append(str, 1, str.length())
+ .toString();
}
}
@@ -1580,20 +1407,16 @@ else if ( str.length() == 0 )
* @param str the String to capitalise
* @return capitalised String
*/
- public static String capitalise( String str )
- {
- if ( str == null )
- {
+ public static String capitalise(String str) {
+ if (str == null) {
return null;
- }
- else if ( str.length() == 0 )
- {
+ } else if (str.length() == 0) {
return "";
- }
- else
- {
- return new StringBuilder( str.length() ).append( Character.toTitleCase( str.charAt( 0 ) ) ).append( str, 1,
- str.length() ).toString();
+ } else {
+ return new StringBuilder(str.length())
+ .append(Character.toTitleCase(str.charAt(0)))
+ .append(str, 1, str.length())
+ .toString();
}
}
@@ -1611,47 +1434,34 @@ else if ( str.length() == 0 )
* @param str the String to swap the case of
* @return the modified String
*/
- public static String swapCase( String str )
- {
- if ( str == null )
- {
+ public static String swapCase(String str) {
+ if (str == null) {
return null;
}
int sz = str.length();
- StringBuilder buffer = new StringBuilder( sz );
+ StringBuilder buffer = new StringBuilder(sz);
boolean whitespace = false;
char ch;
char tmp;
- for ( int i = 0; i < sz; i++ )
- {
- ch = str.charAt( i );
- if ( Character.isUpperCase( ch ) )
- {
- tmp = Character.toLowerCase( ch );
- }
- else if ( Character.isTitleCase( ch ) )
- {
- tmp = Character.toLowerCase( ch );
- }
- else if ( Character.isLowerCase( ch ) )
- {
- if ( whitespace )
- {
- tmp = Character.toTitleCase( ch );
- }
- else
- {
- tmp = Character.toUpperCase( ch );
+ for (int i = 0; i < sz; i++) {
+ ch = str.charAt(i);
+ if (Character.isUpperCase(ch)) {
+ tmp = Character.toLowerCase(ch);
+ } else if (Character.isTitleCase(ch)) {
+ tmp = Character.toLowerCase(ch);
+ } else if (Character.isLowerCase(ch)) {
+ if (whitespace) {
+ tmp = Character.toTitleCase(ch);
+ } else {
+ tmp = Character.toUpperCase(ch);
}
- }
- else
- {
+ } else {
tmp = ch;
}
- buffer.append( tmp );
- whitespace = Character.isWhitespace( ch );
+ buffer.append(tmp);
+ whitespace = Character.isWhitespace(ch);
}
return buffer.toString();
}
@@ -1670,31 +1480,23 @@ else if ( Character.isLowerCase( ch ) )
* @param str the String to capitalise
* @return capitalised String
*/
- public static String capitaliseAllWords( String str )
- {
- if ( str == null )
- {
+ public static String capitaliseAllWords(String str) {
+ if (str == null) {
return null;
}
int sz = str.length();
- StringBuilder buffer = new StringBuilder( sz );
+ StringBuilder buffer = new StringBuilder(sz);
boolean space = true;
- for ( int i = 0; i < sz; i++ )
- {
- char ch = str.charAt( i );
- if ( Character.isWhitespace( ch ) )
- {
- buffer.append( ch );
+ for (int i = 0; i < sz; i++) {
+ char ch = str.charAt(i);
+ if (Character.isWhitespace(ch)) {
+ buffer.append(ch);
space = true;
- }
- else if ( space )
- {
- buffer.append( Character.toTitleCase( ch ) );
+ } else if (space) {
+ buffer.append(Character.toTitleCase(ch));
space = false;
- }
- else
- {
- buffer.append( ch );
+ } else {
+ buffer.append(ch);
}
}
return buffer.toString();
@@ -1714,31 +1516,23 @@ else if ( space )
* @param str the string to uncapitalise
* @return uncapitalised string
*/
- public static String uncapitaliseAllWords( String str )
- {
- if ( str == null )
- {
+ public static String uncapitaliseAllWords(String str) {
+ if (str == null) {
return null;
}
int sz = str.length();
- StringBuilder buffer = new StringBuilder( sz );
+ StringBuilder buffer = new StringBuilder(sz);
boolean space = true;
- for ( int i = 0; i < sz; i++ )
- {
- char ch = str.charAt( i );
- if ( Character.isWhitespace( ch ) )
- {
- buffer.append( ch );
+ for (int i = 0; i < sz; i++) {
+ char ch = str.charAt(i);
+ if (Character.isWhitespace(ch)) {
+ buffer.append(ch);
space = true;
- }
- else if ( space )
- {
- buffer.append( Character.toLowerCase( ch ) );
+ } else if (space) {
+ buffer.append(Character.toLowerCase(ch));
space = false;
- }
- else
- {
- buffer.append( ch );
+ } else {
+ buffer.append(ch);
}
}
return buffer.toString();
@@ -1760,9 +1554,8 @@ else if ( space )
* @return the String that was nested, or null
* @throws NullPointerException if tag is null
*/
- public static String getNestedString( String str, String tag )
- {
- return getNestedString( str, tag, tag );
+ public static String getNestedString(String str, String tag) {
+ return getNestedString(str, tag, tag);
}
/**
@@ -1776,19 +1569,15 @@ public static String getNestedString( String str, String tag )
* @return the String that was nested, or null
* @throws NullPointerException if open or close is null
*/
- public static String getNestedString( String str, String open, String close )
- {
- if ( str == null )
- {
+ public static String getNestedString(String str, String open, String close) {
+ if (str == null) {
return null;
}
- int start = str.indexOf( open );
- if ( start != -1 )
- {
- int end = str.indexOf( close, start + open.length() );
- if ( end != -1 )
- {
- return str.substring( start + open.length(), end );
+ int start = str.indexOf(open);
+ if (start != -1) {
+ int end = str.indexOf(close, start + open.length());
+ if (end != -1) {
+ return str.substring(start + open.length(), end);
}
}
return null;
@@ -1807,20 +1596,16 @@ public static String getNestedString( String str, String open, String close )
* @return the number of occurrences, 0 if the String is null
* @throws NullPointerException if sub is null
*/
- public static int countMatches( String str, String sub )
- {
- if ( sub.equals( "" ) )
- {
+ public static int countMatches(String str, String sub) {
+ if (sub.equals("")) {
return 0;
}
- if ( str == null )
- {
+ if (str == null) {
return 0;
}
int count = 0;
int idx = 0;
- while ( ( idx = str.indexOf( sub, idx ) ) != -1 )
- {
+ while ((idx = str.indexOf(sub, idx)) != -1) {
count++;
idx += sub.length();
}
@@ -1841,17 +1626,13 @@ public static int countMatches( String str, String sub )
* @param str the String to check
* @return true
if only contains letters, and is non-null
*/
- public static boolean isAlpha( String str )
- {
- if ( str == null )
- {
+ public static boolean isAlpha(String str) {
+ if (str == null) {
return false;
}
int sz = str.length();
- for ( int i = 0; i < sz; i++ )
- {
- if ( Character.isLetter( str.charAt( i ) ) == false )
- {
+ for (int i = 0; i < sz; i++) {
+ if (Character.isLetter(str.charAt(i)) == false) {
return false;
}
}
@@ -1869,17 +1650,13 @@ public static boolean isAlpha( String str )
* @param str the String to check
* @return true
if only contains whitespace, and is non-null
*/
- public static boolean isWhitespace( String str )
- {
- if ( str == null )
- {
+ public static boolean isWhitespace(String str) {
+ if (str == null) {
return false;
}
int sz = str.length();
- for ( int i = 0; i < sz; i++ )
- {
- if ( ( Character.isWhitespace( str.charAt( i ) ) == false ) )
- {
+ for (int i = 0; i < sz; i++) {
+ if ((Character.isWhitespace(str.charAt(i)) == false)) {
return false;
}
}
@@ -1897,17 +1674,13 @@ public static boolean isWhitespace( String str )
* @param str the String to check
* @return true
if only contains letters and space, and is non-null
*/
- public static boolean isAlphaSpace( String str )
- {
- if ( str == null )
- {
+ public static boolean isAlphaSpace(String str) {
+ if (str == null) {
return false;
}
int sz = str.length();
- for ( int i = 0; i < sz; i++ )
- {
- if ( ( Character.isLetter( str.charAt( i ) ) == false ) && ( str.charAt( i ) != ' ' ) )
- {
+ for (int i = 0; i < sz; i++) {
+ if ((Character.isLetter(str.charAt(i)) == false) && (str.charAt(i) != ' ')) {
return false;
}
}
@@ -1925,17 +1698,13 @@ public static boolean isAlphaSpace( String str )
* @param str the String to check
* @return true
if only contains letters or digits, and is non-null
*/
- public static boolean isAlphanumeric( String str )
- {
- if ( str == null )
- {
+ public static boolean isAlphanumeric(String str) {
+ if (str == null) {
return false;
}
int sz = str.length();
- for ( int i = 0; i < sz; i++ )
- {
- if ( Character.isLetterOrDigit( str.charAt( i ) ) == false )
- {
+ for (int i = 0; i < sz; i++) {
+ if (Character.isLetterOrDigit(str.charAt(i)) == false) {
return false;
}
}
@@ -1953,17 +1722,13 @@ public static boolean isAlphanumeric( String str )
* @param str the String to check
* @return true
if only contains letters, digits or space, and is non-null
*/
- public static boolean isAlphanumericSpace( String str )
- {
- if ( str == null )
- {
+ public static boolean isAlphanumericSpace(String str) {
+ if (str == null) {
return false;
}
int sz = str.length();
- for ( int i = 0; i < sz; i++ )
- {
- if ( ( Character.isLetterOrDigit( str.charAt( i ) ) == false ) && ( str.charAt( i ) != ' ' ) )
- {
+ for (int i = 0; i < sz; i++) {
+ if ((Character.isLetterOrDigit(str.charAt(i)) == false) && (str.charAt(i) != ' ')) {
return false;
}
}
@@ -1981,17 +1746,13 @@ public static boolean isAlphanumericSpace( String str )
* @param str the String to check
* @return true
if only contains digits, and is non-null
*/
- public static boolean isNumeric( String str )
- {
- if ( str == null )
- {
+ public static boolean isNumeric(String str) {
+ if (str == null) {
return false;
}
int sz = str.length();
- for ( int i = 0; i < sz; i++ )
- {
- if ( Character.isDigit( str.charAt( i ) ) == false )
- {
+ for (int i = 0; i < sz; i++) {
+ if (Character.isDigit(str.charAt(i)) == false) {
return false;
}
}
@@ -2009,17 +1770,13 @@ public static boolean isNumeric( String str )
* @param str the String to check
* @return true
if only contains digits or space, and is non-null
*/
- public static boolean isNumericSpace( String str )
- {
- if ( str == null )
- {
+ public static boolean isNumericSpace(String str) {
+ if (str == null) {
return false;
}
int sz = str.length();
- for ( int i = 0; i < sz; i++ )
- {
- if ( ( Character.isDigit( str.charAt( i ) ) == false ) && ( str.charAt( i ) != ' ' ) )
- {
+ for (int i = 0; i < sz; i++) {
+ if ((Character.isDigit(str.charAt(i)) == false) && (str.charAt(i) != ' ')) {
return false;
}
}
@@ -2040,9 +1797,8 @@ public static boolean isNumericSpace( String str )
* @see Objects#toString(Object, String)
*/
@Deprecated
- public static String defaultString( Object obj )
- {
- return defaultString( obj, "" );
+ public static String defaultString(Object obj) {
+ return defaultString(obj, "");
}
/**
@@ -2057,9 +1813,8 @@ public static String defaultString( Object obj )
* @see Objects#toString(Object, String)
*/
@Deprecated
- public static String defaultString( Object obj, String defaultString )
- {
- return Objects.toString( obj, defaultString );
+ public static String defaultString(Object obj, String defaultString) {
+ return Objects.toString(obj, defaultString);
}
// Reversing
@@ -2076,13 +1831,11 @@ public static String defaultString( Object obj, String defaultString )
* @param str the String to reverse
* @return the reversed String
*/
- public static String reverse( String str )
- {
- if ( str == null )
- {
+ public static String reverse(String str) {
+ if (str == null) {
return null;
}
- return new StringBuilder( str ).reverse().toString();
+ return new StringBuilder(str).reverse().toString();
}
/**
@@ -2098,13 +1851,12 @@ public static String reverse( String str )
* @param delimiter the delimiter to use
* @return the reversed String
*/
- public static String reverseDelimitedString( String str, String delimiter )
- {
+ public static String reverseDelimitedString(String str, String delimiter) {
// could implement manually, but simple way is to reuse other,
// probably slower, methods.
- String[] strs = split( str, delimiter );
- reverseArray( strs );
- return join( strs, delimiter );
+ String[] strs = split(str, delimiter);
+ reverseArray(strs);
+ return join(strs, delimiter);
}
/**
@@ -2117,14 +1869,12 @@ public static String reverseDelimitedString( String str, String delimiter )
*
* @param array the array to reverse
*/
- private static void reverseArray( Object[] array )
- {
+ private static void reverseArray(Object[] array) {
int i = 0;
int j = array.length - 1;
Object tmp;
- while ( j > i )
- {
+ while (j > i) {
tmp = array[j];
array[j] = array[i];
array[i] = tmp;
@@ -2147,9 +1897,8 @@ private static void reverseArray( Object[] array )
* @param s string
* @param maxWidth maximum length of result string
**/
- public static String abbreviate( String s, int maxWidth )
- {
- return abbreviate( s, 0, maxWidth );
+ public static String abbreviate(String s, int maxWidth) {
+ return abbreviate(s, 0, maxWidth);
}
/**
@@ -2162,37 +1911,29 @@ public static String abbreviate( String s, int maxWidth )
* @param offset left edge of source string
* @param maxWidth maximum length of result string
**/
- public static String abbreviate( String s, int offset, int maxWidth )
- {
- if ( maxWidth < 4 )
- {
- throw new IllegalArgumentException( "Minimum abbreviation width is 4" );
- }
- if ( s.length() <= maxWidth )
- {
+ public static String abbreviate(String s, int offset, int maxWidth) {
+ if (maxWidth < 4) {
+ throw new IllegalArgumentException("Minimum abbreviation width is 4");
+ }
+ if (s.length() <= maxWidth) {
return s;
}
- if ( offset > s.length() )
- {
+ if (offset > s.length()) {
offset = s.length();
}
- if ( ( s.length() - offset ) < ( maxWidth - 3 ) )
- {
- offset = s.length() - ( maxWidth - 3 );
+ if ((s.length() - offset) < (maxWidth - 3)) {
+ offset = s.length() - (maxWidth - 3);
}
- if ( offset <= 4 )
- {
- return s.substring( 0, maxWidth - 3 ) + "...";
+ if (offset <= 4) {
+ return s.substring(0, maxWidth - 3) + "...";
}
- if ( maxWidth < 7 )
- {
- throw new IllegalArgumentException( "Minimum abbreviation width with offset is 7" );
+ if (maxWidth < 7) {
+ throw new IllegalArgumentException("Minimum abbreviation width with offset is 7");
}
- if ( ( offset + ( maxWidth - 3 ) ) < s.length() )
- {
- return "..." + abbreviate( s.substring( offset ), maxWidth - 3 );
+ if ((offset + (maxWidth - 3)) < s.length()) {
+ return "..." + abbreviate(s.substring(offset), maxWidth - 3);
}
- return "..." + s.substring( s.length() - ( maxWidth - 3 ) );
+ return "..." + s.substring(s.length() - (maxWidth - 3));
}
// Difference
@@ -2207,14 +1948,12 @@ public static String abbreviate( String s, int offset, int maxWidth )
* @param s2 string
* @return the portion of s2 where it differs from s1; returns the empty string ("") if they are equal
**/
- public static String difference( String s1, String s2 )
- {
- int at = differenceAt( s1, s2 );
- if ( at == -1 )
- {
+ public static String difference(String s1, String s2) {
+ int at = differenceAt(s1, s2);
+ if (at == -1) {
return "";
}
- return s2.substring( at );
+ return s2.substring(at);
}
/**
@@ -2226,103 +1965,88 @@ public static String difference( String s1, String s2 )
* @param s2 string
* @return the index where s2 and s1 begin to differ; -1 if they are equal
**/
- public static int differenceAt( String s1, String s2 )
- {
+ public static int differenceAt(String s1, String s2) {
int i;
- for ( i = 0; ( i < s1.length() ) && ( i < s2.length() ); ++i )
- {
- if ( s1.charAt( i ) != s2.charAt( i ) )
- {
+ for (i = 0; (i < s1.length()) && (i < s2.length()); ++i) {
+ if (s1.charAt(i) != s2.charAt(i)) {
break;
}
}
- if ( ( i < s2.length() ) || ( i < s1.length() ) )
- {
+ if ((i < s2.length()) || (i < s1.length())) {
return i;
}
return -1;
}
- public static String interpolate( String text, Map, ?> namespace )
- {
+ public static String interpolate(String text, Map, ?> namespace) {
Iterator> keys = namespace.keySet().iterator();
- while ( keys.hasNext() )
- {
+ while (keys.hasNext()) {
String key = keys.next().toString();
- Object obj = namespace.get( key );
+ Object obj = namespace.get(key);
- if ( obj == null )
- {
- throw new NullPointerException( "The value of the key '" + key + "' is null." );
+ if (obj == null) {
+ throw new NullPointerException("The value of the key '" + key + "' is null.");
}
String value = obj.toString();
- text = replace( text, "${" + key + "}", value );
+ text = replace(text, "${" + key + "}", value);
- if ( !key.contains( " " ) )
- {
- text = replace( text, "$" + key, value );
+ if (!key.contains(" ")) {
+ text = replace(text, "$" + key, value);
}
}
return text;
}
- public static String removeAndHump( String data, String replaceThis )
- {
+ public static String removeAndHump(String data, String replaceThis) {
String temp;
StringBuilder out = new StringBuilder();
temp = data;
- StringTokenizer st = new StringTokenizer( temp, replaceThis );
+ StringTokenizer st = new StringTokenizer(temp, replaceThis);
- while ( st.hasMoreTokens() )
- {
+ while (st.hasMoreTokens()) {
String element = (String) st.nextElement();
- out.append( capitalizeFirstLetter( element ) );
+ out.append(capitalizeFirstLetter(element));
}
return out.toString();
}
- public static String capitalizeFirstLetter( String data )
- {
- char firstLetter = Character.toTitleCase( data.substring( 0, 1 ).charAt( 0 ) );
+ public static String capitalizeFirstLetter(String data) {
+ char firstLetter = Character.toTitleCase(data.substring(0, 1).charAt(0));
- String restLetters = data.substring( 1 );
+ String restLetters = data.substring(1);
return firstLetter + restLetters;
}
- public static String lowercaseFirstLetter( String data )
- {
- char firstLetter = Character.toLowerCase( data.substring( 0, 1 ).charAt( 0 ) );
+ public static String lowercaseFirstLetter(String data) {
+ char firstLetter = Character.toLowerCase(data.substring(0, 1).charAt(0));
- String restLetters = data.substring( 1 );
+ String restLetters = data.substring(1);
return firstLetter + restLetters;
}
- public static String addAndDeHump( String view )
- {
+ public static String addAndDeHump(String view) {
StringBuilder sb = new StringBuilder();
- for ( int i = 0; i < view.length(); i++ )
- {
- if ( ( i != 0 ) && Character.isUpperCase( view.charAt( i ) ) )
- {
- sb.append( '-' );
+ for (int i = 0; i < view.length(); i++) {
+ if ((i != 0) && Character.isUpperCase(view.charAt(i))) {
+ sb.append('-');
}
- sb.append( view.charAt( i ) );
+ sb.append(view.charAt(i));
}
- return sb.toString().trim().toLowerCase( Locale.ENGLISH );
+ return sb.toString().trim().toLowerCase(Locale.ENGLISH);
}
/**
@@ -2344,9 +2068,8 @@ public static String addAndDeHump( String view )
* @since 1.5.1
* @see #quoteAndEscape(String, char, char[], char[], char, boolean)
*/
- public static String quoteAndEscape( String source, char quoteChar )
- {
- return quoteAndEscape( source, quoteChar, new char[] { quoteChar }, new char[] { ' ' }, '\\', false );
+ public static String quoteAndEscape(String source, char quoteChar) {
+ return quoteAndEscape(source, quoteChar, new char[] {quoteChar}, new char[] {' '}, '\\', false);
}
/**
@@ -2361,9 +2084,8 @@ public static String quoteAndEscape( String source, char quoteChar )
* @since 1.5.1
* @see #quoteAndEscape(String, char, char[], char[], char, boolean)
*/
- public static String quoteAndEscape( String source, char quoteChar, char[] quotingTriggers )
- {
- return quoteAndEscape( source, quoteChar, new char[] { quoteChar }, quotingTriggers, '\\', false );
+ public static String quoteAndEscape(String source, char quoteChar, char[] quotingTriggers) {
+ return quoteAndEscape(source, quoteChar, new char[] {quoteChar}, quotingTriggers, '\\', false);
}
/**
@@ -2376,10 +2098,9 @@ public static String quoteAndEscape( String source, char quoteChar, char[] quoti
* @since 1.5.1
* @see #quoteAndEscape(String, char, char[], char[], char, boolean)
*/
- public static String quoteAndEscape( String source, char quoteChar, final char[] escapedChars, char escapeChar,
- boolean force )
- {
- return quoteAndEscape( source, quoteChar, escapedChars, new char[] { ' ' }, escapeChar, force );
+ public static String quoteAndEscape(
+ String source, char quoteChar, final char[] escapedChars, char escapeChar, boolean force) {
+ return quoteAndEscape(source, quoteChar, escapedChars, new char[] {' '}, escapeChar, force);
}
/**
@@ -2392,10 +2113,14 @@ public static String quoteAndEscape( String source, char quoteChar, final char[]
* @return the String quoted and escaped
* @since 1.5.1
*/
- public static String quoteAndEscape( String source, char quoteChar, final char[] escapedChars,
- final char[] quotingTriggers, char escapeChar, boolean force )
- {
- return quoteAndEscape( source, quoteChar, escapedChars, quotingTriggers, escapeChar + "%s", force );
+ public static String quoteAndEscape(
+ String source,
+ char quoteChar,
+ final char[] escapedChars,
+ final char[] quotingTriggers,
+ char escapeChar,
+ boolean force) {
+ return quoteAndEscape(source, quoteChar, escapedChars, quotingTriggers, escapeChar + "%s", force);
}
/**
@@ -2408,45 +2133,40 @@ public static String quoteAndEscape( String source, char quoteChar, final char[]
* @return the String quoted and escaped
* @since 3.0.4
*/
- public static String quoteAndEscape( String source, char quoteChar, final char[] escapedChars,
- final char[] quotingTriggers, String escapePattern, boolean force )
- {
- if ( source == null )
- {
+ public static String quoteAndEscape(
+ String source,
+ char quoteChar,
+ final char[] escapedChars,
+ final char[] quotingTriggers,
+ String escapePattern,
+ boolean force) {
+ if (source == null) {
return null;
}
- if ( !force && source.startsWith( Character.toString( quoteChar ) )
- && source.endsWith( Character.toString( quoteChar ) ) )
- {
+ if (!force
+ && source.startsWith(Character.toString(quoteChar))
+ && source.endsWith(Character.toString(quoteChar))) {
return source;
}
- String escaped = escape( source, escapedChars, escapePattern );
+ String escaped = escape(source, escapedChars, escapePattern);
boolean quote = false;
- if ( force )
- {
+ if (force) {
quote = true;
- }
- else if ( !escaped.equals( source ) )
- {
+ } else if (!escaped.equals(source)) {
quote = true;
- }
- else
- {
- for ( char quotingTrigger : quotingTriggers )
- {
- if ( escaped.indexOf( quotingTrigger ) > -1 )
- {
+ } else {
+ for (char quotingTrigger : quotingTriggers) {
+ if (escaped.indexOf(quotingTrigger) > -1) {
quote = true;
break;
}
}
}
- if ( quote )
- {
+ if (quote) {
return quoteChar + escaped + quoteChar;
}
@@ -2460,9 +2180,8 @@ else if ( !escaped.equals( source ) )
* @return the String escaped
* @since 1.5.1
*/
- public static String escape( String source, final char[] escapedChars, char escapeChar )
- {
- return escape( source, escapedChars, escapeChar + "%s" );
+ public static String escape(String source, final char[] escapedChars, char escapeChar) {
+ return escape(source, escapedChars, escapeChar + "%s");
}
/**
@@ -2472,31 +2191,25 @@ public static String escape( String source, final char[] escapedChars, char esca
* @return the String escaped
* @since 3.0.4
*/
- public static String escape( String source, final char[] escapedChars, String escapePattern )
- {
- if ( source == null )
- {
+ public static String escape(String source, final char[] escapedChars, String escapePattern) {
+ if (source == null) {
return null;
}
char[] eqc = new char[escapedChars.length];
- System.arraycopy( escapedChars, 0, eqc, 0, escapedChars.length );
- Arrays.sort( eqc );
+ System.arraycopy(escapedChars, 0, eqc, 0, escapedChars.length);
+ Arrays.sort(eqc);
- StringBuilder buffer = new StringBuilder( source.length() );
+ StringBuilder buffer = new StringBuilder(source.length());
- for ( int i = 0; i < source.length(); i++ )
- {
- final char c = source.charAt( i );
- int result = Arrays.binarySearch( eqc, c );
+ for (int i = 0; i < source.length(); i++) {
+ final char c = source.charAt(i);
+ int result = Arrays.binarySearch(eqc, c);
- if ( result > -1 )
- {
- buffer.append( String.format( escapePattern, c ) );
- }
- else
- {
- buffer.append( c );
+ if (result > -1) {
+ buffer.append(String.format(escapePattern, c));
+ } else {
+ buffer.append(c);
}
}
@@ -2510,18 +2223,15 @@ public static String escape( String source, final char[] escapedChars, String es
* @return a string with unique whitespace.
* @since 1.5.7
*/
- public static String removeDuplicateWhitespace( String s )
- {
+ public static String removeDuplicateWhitespace(String s) {
StringBuilder result = new StringBuilder();
int length = s.length();
boolean isPreviousWhiteSpace = false;
- for ( int i = 0; i < length; i++ )
- {
- char c = s.charAt( i );
- boolean thisCharWhiteSpace = Character.isWhitespace( c );
- if ( !( isPreviousWhiteSpace && thisCharWhiteSpace ) )
- {
- result.append( c );
+ for (int i = 0; i < length; i++) {
+ char c = s.charAt(i);
+ boolean thisCharWhiteSpace = Character.isWhitespace(c);
+ if (!(isPreviousWhiteSpace && thisCharWhiteSpace)) {
+ result.append(c);
}
isPreviousWhiteSpace = thisCharWhiteSpace;
}
@@ -2536,9 +2246,8 @@ public static String removeDuplicateWhitespace( String s )
* @see #unifyLineSeparators(String, String)
* @since 1.5.7
*/
- public static String unifyLineSeparators( String s )
- {
- return unifyLineSeparators( s, System.getProperty( "line.separator" ) );
+ public static String unifyLineSeparators(String s) {
+ return unifyLineSeparators(s, System.getProperty("line.separator"));
}
/**
@@ -2550,44 +2259,33 @@ public static String unifyLineSeparators( String s )
* @throws IllegalArgumentException if ls is not '\n', '\r' and '\r\n' characters.
* @since 1.5.7
*/
- public static String unifyLineSeparators( String s, String ls )
- {
- if ( s == null )
- {
+ public static String unifyLineSeparators(String s, String ls) {
+ if (s == null) {
return null;
}
- if ( ls == null )
- {
- ls = System.getProperty( "line.separator" );
+ if (ls == null) {
+ ls = System.getProperty("line.separator");
}
- if ( !( ls.equals( "\n" ) || ls.equals( "\r" ) || ls.equals( "\r\n" ) ) )
- {
- throw new IllegalArgumentException( "Requested line separator is invalid." );
+ if (!(ls.equals("\n") || ls.equals("\r") || ls.equals("\r\n"))) {
+ throw new IllegalArgumentException("Requested line separator is invalid.");
}
int length = s.length();
- StringBuilder buffer = new StringBuilder( length );
- for ( int i = 0; i < length; i++ )
- {
- if ( s.charAt( i ) == '\r' )
- {
- if ( ( i + 1 ) < length && s.charAt( i + 1 ) == '\n' )
- {
+ StringBuilder buffer = new StringBuilder(length);
+ for (int i = 0; i < length; i++) {
+ if (s.charAt(i) == '\r') {
+ if ((i + 1) < length && s.charAt(i + 1) == '\n') {
i++;
}
- buffer.append( ls );
- }
- else if ( s.charAt( i ) == '\n' )
- {
- buffer.append( ls );
- }
- else
- {
- buffer.append( s.charAt( i ) );
+ buffer.append(ls);
+ } else if (s.charAt(i) == '\n') {
+ buffer.append(ls);
+ } else {
+ buffer.append(s.charAt(i));
}
}
@@ -2615,13 +2313,11 @@ else if ( s.charAt( i ) == '\n' )
* @return true if the String contains the search character, false if not or null
string input
* @since 1.5.7
*/
- public static boolean contains( String str, char searchChar )
- {
- if ( isEmpty( str ) )
- {
+ public static boolean contains(String str, char searchChar) {
+ if (isEmpty(str)) {
return false;
}
- return str.indexOf( searchChar ) >= 0;
+ return str.indexOf(searchChar) >= 0;
}
/**
@@ -2647,12 +2343,10 @@ public static boolean contains( String str, char searchChar )
* @return true if the String contains the search String, false if not or null
string input
* @since 1.5.7
*/
- public static boolean contains( String str, String searchStr )
- {
- if ( str == null || searchStr == null )
- {
+ public static boolean contains(String str, String searchStr) {
+ if (str == null || searchStr == null) {
return false;
}
- return str.contains( searchStr );
+ return str.contains(searchStr);
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/SweeperPool.java b/src/main/java/org/codehaus/plexus/util/SweeperPool.java
index 0a2a97a4..2070b9b8 100644
--- a/src/main/java/org/codehaus/plexus/util/SweeperPool.java
+++ b/src/main/java/org/codehaus/plexus/util/SweeperPool.java
@@ -25,8 +25,7 @@
* @author Bert van Brakel
*
*/
-public class SweeperPool
-{
+public class SweeperPool {
/***/
private static final boolean DEBUG = false;
@@ -66,41 +65,34 @@ public class SweeperPool
* @param intialCapacity the intial capacity
* Any value less than 0 is automatically converted to 0
*/
- public SweeperPool( int maxSize, int minSize, int intialCapacity, int sweepInterval, int triggerSize )
- {
+ public SweeperPool(int maxSize, int minSize, int intialCapacity, int sweepInterval, int triggerSize) {
super();
- this.maxSize = saneConvert( maxSize );
- this.minSize = saneConvert( minSize );
- this.triggerSize = saneConvert( triggerSize );
- pooledObjects = new ArrayList( intialCapacity );
+ this.maxSize = saneConvert(maxSize);
+ this.minSize = saneConvert(minSize);
+ this.triggerSize = saneConvert(triggerSize);
+ pooledObjects = new ArrayList(intialCapacity);
// only run a sweeper if sweep interval is positive
- if ( sweepInterval > 0 )
- {
- sweeper = new Sweeper( this, sweepInterval );
+ if (sweepInterval > 0) {
+ sweeper = new Sweeper(this, sweepInterval);
sweeper.start();
}
}
- private int saneConvert( int value )
- {
- return Math.max( value, 0 );
+ private int saneConvert(int value) {
+ return Math.max(value, 0);
}
/**
* Return the pooled object
* @return first available object from the pool
*/
- public synchronized Object get()
- {
- if ( ( pooledObjects.size() == 0 ) || shuttingDown )
- {
+ public synchronized Object get() {
+ if ((pooledObjects.size() == 0) || shuttingDown) {
return null;
- }
- else
- {
- Object obj = pooledObjects.remove( 0 );
- objectRetrieved( obj );
+ } else {
+ Object obj = pooledObjects.remove(0);
+ objectRetrieved(obj);
// used.add(obj);
return obj;
@@ -113,20 +105,16 @@ public synchronized Object get()
* @param obj the object to pool. Can be null.
* @return true if the object was added to the pool, false if it was disposed or null
*/
- public synchronized boolean put( Object obj )
- {
- objectAdded( obj );
+ public synchronized boolean put(Object obj) {
+ objectAdded(obj);
- if ( ( obj != null ) && ( pooledObjects.size() < maxSize ) && ( shuttingDown == false ) )
- {
- pooledObjects.add( obj );
+ if ((obj != null) && (pooledObjects.size() < maxSize) && (shuttingDown == false)) {
+ pooledObjects.add(obj);
return true;
- }
- else if ( obj != null )
- {
+ } else if (obj != null) {
// no longer need the object, so dispose it
- objectDisposed( obj );
+ objectDisposed(obj);
}
return false;
@@ -137,41 +125,33 @@ else if ( obj != null )
*
* @return the number of pooled objects
*/
- public synchronized int getSize()
- {
+ public synchronized int getSize() {
return pooledObjects.size();
}
/**
* Dispose of this pool. Stops the sweeper and disposes each object in the pool
*/
- public void dispose()
- {
+ public void dispose() {
shuttingDown = true;
- if ( sweeper != null )
- {
+ if (sweeper != null) {
sweeper.stop();
- try
- {
+ try {
sweeper.join();
- }
- catch ( InterruptedException e )
- {
- System.err.println( "Unexpected exception occurred: " );
+ } catch (InterruptedException e) {
+ System.err.println("Unexpected exception occurred: ");
e.printStackTrace();
}
}
- synchronized ( this )
- {
+ synchronized (this) {
// use an array here as objects may still be being put back in the pool
// and we don't want to throw a ConcurrentModificationException
Object[] objects = pooledObjects.toArray();
- for ( Object object : objects )
- {
- objectDisposed( object );
+ for (Object object : objects) {
+ objectDisposed(object);
}
pooledObjects.clear();
@@ -183,16 +163,13 @@ public void dispose()
*
* @return true if the pool has been disposed, false otherwise
*/
- boolean isDisposed()
- {
- if ( !shuttingDown )
- {
+ boolean isDisposed() {
+ if (!shuttingDown) {
return false;
}
// A null sweeper means one was never started.
- if ( sweeper == null )
- {
+ if (sweeper == null) {
return true;
}
@@ -202,14 +179,11 @@ boolean isDisposed()
/**
* Trim the pool down to min size
*/
- public synchronized void trim()
- {
- if ( ( ( triggerSize > 0 ) && ( pooledObjects.size() >= triggerSize ) )
- || ( ( maxSize > 0 ) && ( pooledObjects.size() >= maxSize ) ) )
- {
- while ( pooledObjects.size() > minSize )
- {
- objectDisposed( pooledObjects.remove( 0 ) );
+ public synchronized void trim() {
+ if (((triggerSize > 0) && (pooledObjects.size() >= triggerSize))
+ || ((maxSize > 0) && (pooledObjects.size() >= maxSize))) {
+ while (pooledObjects.size() > minSize) {
+ objectDisposed(pooledObjects.remove(0));
}
}
}
@@ -220,18 +194,14 @@ public synchronized void trim()
*
* @param obj the Object
*/
- public void objectDisposed( Object obj )
- {
- }
+ public void objectDisposed(Object obj) {}
/**
* Override this to be notified of object addition. Called before object is to be added.
*
* @param obj the Object
*/
- public void objectAdded( Object obj )
- {
- }
+ public void objectAdded(Object obj) {}
/**
* Override this to be notified of object retrieval. Called after object removed from the pool, but before returned
@@ -239,18 +209,14 @@ public void objectAdded( Object obj )
*
* @param obj the Object
*/
- public void objectRetrieved( Object obj )
- {
- }
+ public void objectRetrieved(Object obj) {}
/**
* Periodically at sweepInterval
goes through and tests if the pool should be trimmed.
*
* @author bert
*/
- private static class Sweeper
- implements Runnable
- {
+ private static class Sweeper implements Runnable {
private final transient SweeperPool pool;
private transient boolean service = false;
@@ -262,8 +228,7 @@ private static class Sweeper
/**
*
*/
- public Sweeper( SweeperPool pool, int sweepInterval )
- {
+ public Sweeper(SweeperPool pool, int sweepInterval) {
super();
this.sweepInterval = sweepInterval;
this.pool = pool;
@@ -275,72 +240,56 @@ public Sweeper( SweeperPool pool, int sweepInterval )
* @see java.lang.Runnable#run()
*/
@Override
- public void run()
- {
- debug( "started" );
-
- if ( sweepInterval > 0 )
- {
- synchronized ( this )
- {
- while ( service )
- {
- try
- {
+ public void run() {
+ debug("started");
+
+ if (sweepInterval > 0) {
+ synchronized (this) {
+ while (service) {
+ try {
// wait specified number of seconds
// before running next sweep
- wait( sweepInterval * 1000 );
- }
- catch ( InterruptedException e )
- {
+ wait(sweepInterval * 1000);
+ } catch (InterruptedException e) {
}
runSweep();
}
}
}
- debug( "stopped" );
+ debug("stopped");
}
- public void start()
- {
- if ( !service )
- {
+ public void start() {
+ if (!service) {
service = true;
- t = new Thread( this );
- t.setName( "Sweeper" );
+ t = new Thread(this);
+ t.setName("Sweeper");
t.start();
}
}
- public synchronized void stop()
- {
+ public synchronized void stop() {
service = false;
notifyAll();
}
- void join()
- throws InterruptedException
- {
+ void join() throws InterruptedException {
t.join();
}
- boolean hasStopped()
- {
+ boolean hasStopped() {
return !service && !t.isAlive();
}
- private final void debug( String msg )
- {
- if ( DEBUG )
- {
- System.err.println( this + ":" + msg );
+ private final void debug(String msg) {
+ if (DEBUG) {
+ System.err.println(this + ":" + msg);
}
}
- private void runSweep()
- {
- debug( "runningSweep. time=" + System.currentTimeMillis() );
+ private void runSweep() {
+ debug("runningSweep. time=" + System.currentTimeMillis());
pool.trim();
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/TypeFormat.java b/src/main/java/org/codehaus/plexus/util/TypeFormat.java
index f950003b..e4fc64b7 100644
--- a/src/main/java/org/codehaus/plexus/util/TypeFormat.java
+++ b/src/main/java/org/codehaus/plexus/util/TypeFormat.java
@@ -16,7 +16,7 @@
*
* For class instances, formatting is typically performed using specialized java.text.Format
* (Locale
sensitive) and/or using conventional methods (class sensitive). For example:
- *
+ *
*
* public class Foo {
* public static Foo valueOf(CharSequence chars) {...} // Parses.
@@ -33,21 +33,20 @@
* @author Jean-Marie Dautelle
* @version 4.6, June 22, 2003
*/
-public final class TypeFormat
-{
+public final class TypeFormat {
/**
* Holds the characters used to represent numbers.
*/
- private final static char[] DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e',
- 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
+ private static final char[] DIGITS = {
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
+ 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
+ };
/**
* Default constructor (forbids derivation).
*/
- private TypeFormat()
- {
- }
+ private TypeFormat() {}
/**
* Searches for a particular sequence within a character sequence (general purpose parsing function).
@@ -58,38 +57,29 @@ private TypeFormat()
* @return the index in the range [fromIndex, chars.length()-pattern.length()]
or -1
if
* the character sequence is not found.
*/
- public static int indexOf( CharSequence pattern, CharSequence chars, int fromIndex )
- {
+ public static int indexOf(CharSequence pattern, CharSequence chars, int fromIndex) {
int patternLength = pattern.length();
- fromIndex = Math.max( 0, fromIndex );
- if ( patternLength != 0 )
- { // At least one character to search for.
- char firstChar = pattern.charAt( 0 );
+ fromIndex = Math.max(0, fromIndex);
+ if (patternLength != 0) { // At least one character to search for.
+ char firstChar = pattern.charAt(0);
int last = chars.length() - patternLength;
- for ( int i = fromIndex; i <= last; i++ )
- {
- if ( chars.charAt( i ) == firstChar )
- {
+ for (int i = fromIndex; i <= last; i++) {
+ if (chars.charAt(i) == firstChar) {
boolean match = true;
- for ( int j = 1; j < patternLength; j++ )
- {
- if ( chars.charAt( i + j ) != pattern.charAt( j ) )
- {
+ for (int j = 1; j < patternLength; j++) {
+ if (chars.charAt(i + j) != pattern.charAt(j)) {
match = false;
break;
}
}
- if ( match )
- {
+ if (match) {
return i;
}
}
}
return -1;
- }
- else
- {
- return Math.min( 0, fromIndex );
+ } else {
+ return Math.min(0, fromIndex);
}
}
@@ -99,12 +89,12 @@ public static int indexOf( CharSequence pattern, CharSequence chars, int fromInd
* @param chars the character sequence to parse.
* @return the corresponding boolean
.
*/
- public static boolean parseBoolean( CharSequence chars )
- {
- return ( chars.length() == 4 ) && ( chars.charAt( 0 ) == 't' || chars.charAt( 0 ) == 'T' )
- && ( chars.charAt( 1 ) == 'r' || chars.charAt( 1 ) == 'R' )
- && ( chars.charAt( 2 ) == 'u' || chars.charAt( 2 ) == 'U' )
- && ( chars.charAt( 3 ) == 'e' || chars.charAt( 3 ) == 'E' );
+ public static boolean parseBoolean(CharSequence chars) {
+ return (chars.length() == 4)
+ && (chars.charAt(0) == 't' || chars.charAt(0) == 'T')
+ && (chars.charAt(1) == 'r' || chars.charAt(1) == 'R')
+ && (chars.charAt(2) == 'u' || chars.charAt(2) == 'U')
+ && (chars.charAt(3) == 'e' || chars.charAt(3) == 'E');
}
/**
@@ -115,9 +105,8 @@ public static boolean parseBoolean( CharSequence chars )
* @throws NumberFormatException if the specified character sequence does not contain a parsable short
.
* @see #parseShort(CharSequence, int)
*/
- public static short parseShort( CharSequence chars )
- {
- return parseShort( chars, 10 );
+ public static short parseShort(CharSequence chars) {
+ return parseShort(chars, 10);
}
/**
@@ -130,36 +119,29 @@ public static short parseShort( CharSequence chars )
* @return the corresponding short
.
* @throws NumberFormatException if the specified character sequence does not contain a parsable short
.
*/
- public static short parseShort( CharSequence chars, int radix )
- {
- try
- {
- boolean isNegative = ( chars.charAt( 0 ) == '-' ) ? true : false;
+ public static short parseShort(CharSequence chars, int radix) {
+ try {
+ boolean isNegative = (chars.charAt(0) == '-') ? true : false;
int result = 0;
- int limit = ( isNegative ) ? Short.MIN_VALUE : -Short.MAX_VALUE;
+ int limit = (isNegative) ? Short.MIN_VALUE : -Short.MAX_VALUE;
int multmin = limit / radix;
int length = chars.length();
- int i = ( isNegative || ( chars.charAt( 0 ) == '+' ) ) ? 1 : 0;
- while ( true )
- {
- int digit = Character.digit( chars.charAt( i ), radix );
+ int i = (isNegative || (chars.charAt(0) == '+')) ? 1 : 0;
+ while (true) {
+ int digit = Character.digit(chars.charAt(i), radix);
int tmp = result * radix;
- if ( ( digit < 0 ) || ( result < multmin ) || ( tmp < limit + digit ) )
- { // Overflow.
- throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
+ if ((digit < 0) || (result < multmin) || (tmp < limit + digit)) { // Overflow.
+ throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
}
// Accumulates negatively.
result = tmp - digit;
- if ( ++i >= length )
- {
+ if (++i >= length) {
break;
}
}
- return (short) ( isNegative ? result : -result );
- }
- catch ( IndexOutOfBoundsException e )
- {
- throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
+ return (short) (isNegative ? result : -result);
+ } catch (IndexOutOfBoundsException e) {
+ throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
}
}
@@ -171,9 +153,8 @@ public static short parseShort( CharSequence chars, int radix )
* @throws NumberFormatException if the specified character sequence does not contain a parsable int
.
* @see #parseInt(CharSequence, int)
*/
- public static int parseInt( CharSequence chars )
- {
- return parseInt( chars, 10 );
+ public static int parseInt(CharSequence chars) {
+ return parseInt(chars, 10);
}
/**
@@ -186,36 +167,29 @@ public static int parseInt( CharSequence chars )
* @return the corresponding int
.
* @throws NumberFormatException if the specified character sequence does not contain a parsable int
.
*/
- public static int parseInt( CharSequence chars, int radix )
- {
- try
- {
- boolean isNegative = ( chars.charAt( 0 ) == '-' ) ? true : false;
+ public static int parseInt(CharSequence chars, int radix) {
+ try {
+ boolean isNegative = (chars.charAt(0) == '-') ? true : false;
int result = 0;
- int limit = ( isNegative ) ? Integer.MIN_VALUE : -Integer.MAX_VALUE;
+ int limit = (isNegative) ? Integer.MIN_VALUE : -Integer.MAX_VALUE;
int multmin = limit / radix;
int length = chars.length();
- int i = ( isNegative || ( chars.charAt( 0 ) == '+' ) ) ? 1 : 0;
- while ( true )
- {
- int digit = Character.digit( chars.charAt( i ), radix );
+ int i = (isNegative || (chars.charAt(0) == '+')) ? 1 : 0;
+ while (true) {
+ int digit = Character.digit(chars.charAt(i), radix);
int tmp = result * radix;
- if ( ( digit < 0 ) || ( result < multmin ) || ( tmp < limit + digit ) )
- { // Overflow.
- throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
+ if ((digit < 0) || (result < multmin) || (tmp < limit + digit)) { // Overflow.
+ throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
}
// Accumulates negatively to avoid surprises near MAX_VALUE
result = tmp - digit;
- if ( ++i >= length )
- {
+ if (++i >= length) {
break;
}
}
return isNegative ? result : -result;
- }
- catch ( IndexOutOfBoundsException e )
- {
- throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
+ } catch (IndexOutOfBoundsException e) {
+ throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
}
}
@@ -227,9 +201,8 @@ public static int parseInt( CharSequence chars, int radix )
* @throws NumberFormatException if the specified character sequence does not contain a parsable long
.
* @see #parseLong(CharSequence, int)
*/
- public static long parseLong( CharSequence chars )
- {
- return parseLong( chars, 10 );
+ public static long parseLong(CharSequence chars) {
+ return parseLong(chars, 10);
}
/**
@@ -242,36 +215,29 @@ public static long parseLong( CharSequence chars )
* @return the corresponding long
.
* @throws NumberFormatException if the specified character sequence does not contain a parsable long
.
*/
- public static long parseLong( CharSequence chars, int radix )
- {
- try
- {
- boolean isNegative = ( chars.charAt( 0 ) == '-' ) ? true : false;
+ public static long parseLong(CharSequence chars, int radix) {
+ try {
+ boolean isNegative = (chars.charAt(0) == '-') ? true : false;
long result = 0;
- long limit = ( isNegative ) ? Long.MIN_VALUE : -Long.MAX_VALUE;
+ long limit = (isNegative) ? Long.MIN_VALUE : -Long.MAX_VALUE;
long multmin = limit / radix;
int length = chars.length();
- int i = ( isNegative || ( chars.charAt( 0 ) == '+' ) ) ? 1 : 0;
- while ( true )
- {
- int digit = Character.digit( chars.charAt( i ), radix );
+ int i = (isNegative || (chars.charAt(0) == '+')) ? 1 : 0;
+ while (true) {
+ int digit = Character.digit(chars.charAt(i), radix);
long tmp = result * radix;
- if ( ( digit < 0 ) || ( result < multmin ) || ( tmp < limit + digit ) )
- { // Overflow.
- throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
+ if ((digit < 0) || (result < multmin) || (tmp < limit + digit)) { // Overflow.
+ throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
}
// Accumulates negatively to avoid surprises near MAX_VALUE
result = tmp - digit;
- if ( ++i >= length )
- {
+ if (++i >= length) {
break;
}
}
return isNegative ? result : -result;
- }
- catch ( IndexOutOfBoundsException e )
- {
- throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
+ } catch (IndexOutOfBoundsException e) {
+ throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
}
}
@@ -282,16 +248,12 @@ public static long parseLong( CharSequence chars, int radix )
* @return the float number represented by the specified character sequence.
* @throws NumberFormatException if the character sequence does not contain a parsable float
.
*/
- public static float parseFloat( CharSequence chars )
- {
- double d = parseDouble( chars );
- if ( ( d >= Float.MIN_VALUE ) && ( d <= Float.MAX_VALUE ) )
- {
+ public static float parseFloat(CharSequence chars) {
+ double d = parseDouble(chars);
+ if ((d >= Float.MIN_VALUE) && (d <= Float.MAX_VALUE)) {
return (float) d;
- }
- else
- {
- throw new NumberFormatException( "Float overflow for input characters: \"" + chars.toString() + "\"" );
+ } else {
+ throw new NumberFormatException("Float overflow for input characters: \"" + chars.toString() + "\"");
}
}
@@ -302,87 +264,63 @@ public static float parseFloat( CharSequence chars )
* @return the double number represented by this character sequence.
* @throws NumberFormatException if the character sequence does not contain a parsable double
.
*/
- public static double parseDouble( CharSequence chars )
- throws NumberFormatException
- {
- try
- {
+ public static double parseDouble(CharSequence chars) throws NumberFormatException {
+ try {
int length = chars.length();
double result = 0.0;
int exp = 0;
- boolean isNegative = ( chars.charAt( 0 ) == '-' ) ? true : false;
- int i = ( isNegative || ( chars.charAt( 0 ) == '+' ) ) ? 1 : 0;
+ boolean isNegative = (chars.charAt(0) == '-') ? true : false;
+ int i = (isNegative || (chars.charAt(0) == '+')) ? 1 : 0;
// Checks special cases NaN or Infinity.
- if ( ( chars.charAt( i ) == 'N' ) || ( chars.charAt( i ) == 'I' ) )
- {
- if ( chars.toString().equals( "NaN" ) )
- {
+ if ((chars.charAt(i) == 'N') || (chars.charAt(i) == 'I')) {
+ if (chars.toString().equals("NaN")) {
return Double.NaN;
- }
- else if ( chars.subSequence( i, length ).toString().equals( "Infinity" ) )
- {
+ } else if (chars.subSequence(i, length).toString().equals("Infinity")) {
return isNegative ? Double.NEGATIVE_INFINITY : Double.POSITIVE_INFINITY;
}
}
// Reads decimal number.
boolean fraction = false;
- while ( true )
- {
- char c = chars.charAt( i );
- if ( ( c == '.' ) && ( !fraction ) )
- {
+ while (true) {
+ char c = chars.charAt(i);
+ if ((c == '.') && (!fraction)) {
fraction = true;
- }
- else if ( ( c == 'e' ) || ( c == 'E' ) )
- {
+ } else if ((c == 'e') || (c == 'E')) {
break;
- }
- else if ( ( c >= '0' ) && ( c <= '9' ) )
- {
- result = result * 10 + ( c - '0' );
- if ( fraction )
- {
+ } else if ((c >= '0') && (c <= '9')) {
+ result = result * 10 + (c - '0');
+ if (fraction) {
exp--;
}
+ } else {
+ throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
}
- else
- {
- throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
- }
- if ( ++i >= length )
- {
+ if (++i >= length) {
break;
}
}
result = isNegative ? -result : result;
// Reads exponent (if any).
- if ( i < length )
- {
+ if (i < length) {
i++;
- boolean negE = ( chars.charAt( i ) == '-' ) ? true : false;
- i = ( negE || ( chars.charAt( i ) == '+' ) ) ? i + 1 : i;
+ boolean negE = (chars.charAt(i) == '-') ? true : false;
+ i = (negE || (chars.charAt(i) == '+')) ? i + 1 : i;
int valE = 0;
- while ( true )
- {
- char c = chars.charAt( i );
- if ( ( c >= '0' ) && ( c <= '9' ) )
- {
- valE = valE * 10 + ( c - '0' );
- if ( valE > 10000000 )
- { // Hard-limit to avoid overflow.
+ while (true) {
+ char c = chars.charAt(i);
+ if ((c >= '0') && (c <= '9')) {
+ valE = valE * 10 + (c - '0');
+ if (valE > 10000000) { // Hard-limit to avoid overflow.
valE = 10000000;
}
+ } else {
+ throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
}
- else
- {
- throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
- }
- if ( ++i >= length )
- {
+ if (++i >= length) {
break;
}
}
@@ -390,12 +328,10 @@ else if ( ( c >= '0' ) && ( c <= '9' ) )
}
// Returns product decimal number with exponent.
- return multE( result, exp );
+ return multE(result, exp);
- }
- catch ( IndexOutOfBoundsException e )
- {
- throw new NumberFormatException( "For input characters: \"" + chars.toString() + "\"" );
+ } catch (IndexOutOfBoundsException e) {
+ throw new NumberFormatException("For input characters: \"" + chars.toString() + "\"");
}
}
@@ -408,9 +344,8 @@ else if ( ( c >= '0' ) && ( c <= '9' ) )
* @return the specified StringBuffer
object.
* @see #parseBoolean
*/
- public static StringBuffer format( boolean b, StringBuffer sb )
- {
- return b ? sb.append( "true" ) : sb.append( "false" );
+ public static StringBuffer format(boolean b, StringBuffer sb) {
+ return b ? sb.append("true") : sb.append("false");
}
/**
@@ -427,9 +362,8 @@ public static StringBuffer format( boolean b, StringBuffer sb )
* @return the specified StringBuffer
object.
* @see #parseShort
*/
- public static StringBuffer format( short s, StringBuffer sb )
- {
- return format( (int) s, sb ); // Forwards to int formatting (fast).
+ public static StringBuffer format(short s, StringBuffer sb) {
+ return format((int) s, sb); // Forwards to int formatting (fast).
}
/**
@@ -442,9 +376,8 @@ public static StringBuffer format( short s, StringBuffer sb )
* @return the specified StringBuffer
object.
* @see #parseShort(CharSequence, int) throws IllegalArgumentException if radix is not in [2 .. 36] range.
*/
- public static StringBuffer format( short s, int radix, StringBuffer sb )
- {
- return format( (int) s, radix, sb ); // Forwards to int formatting (fast).
+ public static StringBuffer format(short s, int radix, StringBuffer sb) {
+ return format((int) s, radix, sb); // Forwards to int formatting (fast).
}
/**
@@ -461,42 +394,33 @@ public static StringBuffer format( short s, int radix, StringBuffer sb )
* @return the specified StringBuffer
object.
* @see #parseInt
*/
- public static StringBuffer format( int i, StringBuffer sb )
- {
- if ( i <= 0 )
- {
- if ( i == Integer.MIN_VALUE )
- { // Negation would overflow.
- return sb.append( "-2147483648" ); // 11 char max.
- }
- else if ( i == 0 )
- {
- return sb.append( '0' );
+ public static StringBuffer format(int i, StringBuffer sb) {
+ if (i <= 0) {
+ if (i == Integer.MIN_VALUE) { // Negation would overflow.
+ return sb.append("-2147483648"); // 11 char max.
+ } else if (i == 0) {
+ return sb.append('0');
}
i = -i;
- sb.append( '-' );
+ sb.append('-');
}
int j = 1;
- for ( ; ( j < 10 ) && ( i >= INT_POW_10[j] ); j++ )
- {
- }
+ for (; (j < 10) && (i >= INT_POW_10[j]); j++) {}
// POW_10[j] > i >= POW_10[j-1]
- for ( j--; j >= 0; j-- )
- {
+ for (j--; j >= 0; j--) {
int pow10 = INT_POW_10[j];
int digit = i / pow10;
i -= digit * pow10;
- sb.append( DIGITS[digit] );
+ sb.append(DIGITS[digit]);
}
return sb;
}
private static final int[] INT_POW_10 = new int[10];
- static
- {
+
+ static {
int pow = 1;
- for ( int i = 0; i < 10; i++ )
- {
+ for (int i = 0; i < 10; i++) {
INT_POW_10[i] = pow;
pow *= 10;
}
@@ -512,38 +436,27 @@ else if ( i == 0 )
* @return the specified StringBuffer
object.
* @see #parseInt(CharSequence, int) throws IllegalArgumentException if radix is not in [2 .. 36] range.
*/
- public static StringBuffer format( int i, int radix, StringBuffer sb )
- {
- if ( radix == 10 )
- {
- return format( i, sb ); // Faster version.
- }
- else if ( radix < 2 || radix > 36 )
- {
- throw new IllegalArgumentException( "radix: " + radix );
- }
- if ( i < 0 )
- {
- sb.append( '-' );
- }
- else
- {
+ public static StringBuffer format(int i, int radix, StringBuffer sb) {
+ if (radix == 10) {
+ return format(i, sb); // Faster version.
+ } else if (radix < 2 || radix > 36) {
+ throw new IllegalArgumentException("radix: " + radix);
+ }
+ if (i < 0) {
+ sb.append('-');
+ } else {
i = -i;
}
- format2( i, radix, sb );
+ format2(i, radix, sb);
return sb;
}
- private static void format2( int i, int radix, StringBuffer sb )
- {
- if ( i <= -radix )
- {
- format2( i / radix, radix, sb );
- sb.append( DIGITS[-( i % radix )] );
- }
- else
- {
- sb.append( DIGITS[-i] );
+ private static void format2(int i, int radix, StringBuffer sb) {
+ if (i <= -radix) {
+ format2(i / radix, radix, sb);
+ sb.append(DIGITS[-(i % radix)]);
+ } else {
+ sb.append(DIGITS[-i]);
}
}
@@ -561,42 +474,33 @@ private static void format2( int i, int radix, StringBuffer sb )
* @return the specified StringBuffer
object.
* @see #parseLong
*/
- public static StringBuffer format( long l, StringBuffer sb )
- {
- if ( l <= 0 )
- {
- if ( l == Long.MIN_VALUE )
- { // Negation would overflow.
- return sb.append( "-9223372036854775808" ); // 20 characters max.
- }
- else if ( l == 0 )
- {
- return sb.append( '0' );
+ public static StringBuffer format(long l, StringBuffer sb) {
+ if (l <= 0) {
+ if (l == Long.MIN_VALUE) { // Negation would overflow.
+ return sb.append("-9223372036854775808"); // 20 characters max.
+ } else if (l == 0) {
+ return sb.append('0');
}
l = -l;
- sb.append( '-' );
+ sb.append('-');
}
int j = 1;
- for ( ; ( j < 19 ) && ( l >= LONG_POW_10[j] ); j++ )
- {
- }
+ for (; (j < 19) && (l >= LONG_POW_10[j]); j++) {}
// POW_10[j] > l >= POW_10[j-1]
- for ( j--; j >= 0; j-- )
- {
+ for (j--; j >= 0; j--) {
long pow10 = LONG_POW_10[j];
- int digit = (int) ( l / pow10 );
+ int digit = (int) (l / pow10);
l -= digit * pow10;
- sb.append( DIGITS[digit] );
+ sb.append(DIGITS[digit]);
}
return sb;
}
private static final long[] LONG_POW_10 = new long[19];
- static
- {
+
+ static {
long pow = 1;
- for ( int i = 0; i < 19; i++ )
- {
+ for (int i = 0; i < 19; i++) {
LONG_POW_10[i] = pow;
pow *= 10;
}
@@ -612,38 +516,27 @@ else if ( l == 0 )
* @return the specified StringBuffer
object.
* @see #parseLong(CharSequence, int) throws IllegalArgumentException if radix is not in [2 .. 36] range.
*/
- public static StringBuffer format( long l, int radix, StringBuffer sb )
- {
- if ( radix == 10 )
- {
- return format( l, sb ); // Faster version.
- }
- else if ( radix < 2 || radix > 36 )
- {
- throw new IllegalArgumentException( "radix: " + radix );
- }
- if ( l < 0 )
- {
- sb.append( '-' );
- }
- else
- {
+ public static StringBuffer format(long l, int radix, StringBuffer sb) {
+ if (radix == 10) {
+ return format(l, sb); // Faster version.
+ } else if (radix < 2 || radix > 36) {
+ throw new IllegalArgumentException("radix: " + radix);
+ }
+ if (l < 0) {
+ sb.append('-');
+ } else {
l = -l;
}
- format2( l, radix, sb );
+ format2(l, radix, sb);
return sb;
}
- private static void format2( long l, int radix, StringBuffer sb )
- {
- if ( l <= -radix )
- {
- format2( l / radix, radix, sb );
- sb.append( DIGITS[(int) -( l % radix )] );
- }
- else
- {
- sb.append( DIGITS[(int) -l] );
+ private static void format2(long l, int radix, StringBuffer sb) {
+ if (l <= -radix) {
+ format2(l / radix, radix, sb);
+ sb.append(DIGITS[(int) -(l % radix)]);
+ } else {
+ sb.append(DIGITS[(int) -l]);
}
}
@@ -656,9 +549,8 @@ private static void format2( long l, int radix, StringBuffer sb )
* @return format(f, 0.0f, sb)
* @see #format(float, float, StringBuffer)
*/
- public static StringBuffer format( float f, StringBuffer sb )
- {
- return format( f, 0.0f, sb );
+ public static StringBuffer format(float f, StringBuffer sb) {
+ return format(f, 0.0f, sb);
}
/**
@@ -680,31 +572,22 @@ public static StringBuffer format( float f, StringBuffer sb )
* @return the specified StringBuffer
object.
* @throws IllegalArgumentException if the specified precision is negative or would result in too many digits (19+).
*/
- public static StringBuffer format( float f, float precision, StringBuffer sb )
- {
+ public static StringBuffer format(float f, float precision, StringBuffer sb) {
// Adjusts precision.
boolean precisionOnLastDigit;
- if ( precision > 0.0f )
- {
+ if (precision > 0.0f) {
precisionOnLastDigit = true;
- }
- else if ( precision == 0.0f )
- {
- if ( f != 0.0f )
- {
+ } else if (precision == 0.0f) {
+ if (f != 0.0f) {
precisionOnLastDigit = false;
- precision = Math.max( Math.abs( f * FLOAT_RELATIVE_ERROR ), Float.MIN_VALUE );
+ precision = Math.max(Math.abs(f * FLOAT_RELATIVE_ERROR), Float.MIN_VALUE);
+ } else {
+ return sb.append("0.0"); // Exact zero.
}
- else
- {
- return sb.append( "0.0" ); // Exact zero.
- }
- }
- else
- {
- throw new IllegalArgumentException( "precision: Negative values not allowed" );
+ } else {
+ throw new IllegalArgumentException("precision: Negative values not allowed");
}
- return format( f, precision, precisionOnLastDigit, sb );
+ return format(f, precision, precisionOnLastDigit, sb);
}
/**
@@ -723,9 +606,8 @@ else if ( precision == 0.0f )
* @return format(d, 0.0, sb)
* @see #format(double, double, StringBuffer)
*/
- public static StringBuffer format( double d, StringBuffer sb )
- {
- return format( d, 0.0, sb );
+ public static StringBuffer format(double d, StringBuffer sb) {
+ return format(d, 0.0, sb);
}
/**
@@ -738,16 +620,12 @@ public static StringBuffer format( double d, StringBuffer sb )
* @return the specified StringBuffer
object.
* @throws IllegalArgumentException if the number of digits is not in range [1..19]
.
*/
- public static StringBuffer format( double d, int digits, StringBuffer sb )
- {
- if ( ( digits >= 1 ) && ( digits <= 19 ) )
- {
- double precision = Math.abs( d / DOUBLE_POW_10[digits - 1] );
- return format( d, precision, sb );
- }
- else
- {
- throw new java.lang.IllegalArgumentException( "digits: " + digits + " is not in range [1 .. 19]" );
+ public static StringBuffer format(double d, int digits, StringBuffer sb) {
+ if ((digits >= 1) && (digits <= 19)) {
+ double precision = Math.abs(d / DOUBLE_POW_10[digits - 1]);
+ return format(d, precision, sb);
+ } else {
+ throw new java.lang.IllegalArgumentException("digits: " + digits + " is not in range [1 .. 19]");
}
}
@@ -770,30 +648,21 @@ public static StringBuffer format( double d, int digits, StringBuffer sb )
* @return the specified StringBuffer
object.
* @throws IllegalArgumentException if the specified precision is negative or would result in too many digits (19+).
*/
- public static StringBuffer format( double d, double precision, StringBuffer sb )
- {
+ public static StringBuffer format(double d, double precision, StringBuffer sb) {
// Adjusts precision.
boolean precisionOnLastDigit = false;
- if ( precision > 0.0 )
- {
+ if (precision > 0.0) {
precisionOnLastDigit = true;
- }
- else if ( precision == 0.0 )
- {
- if ( d != 0.0 )
- {
- precision = Math.max( Math.abs( d * DOUBLE_RELATIVE_ERROR ), Double.MIN_VALUE );
- }
- else
- {
- return sb.append( "0.0" ); // Exact zero.
+ } else if (precision == 0.0) {
+ if (d != 0.0) {
+ precision = Math.max(Math.abs(d * DOUBLE_RELATIVE_ERROR), Double.MIN_VALUE);
+ } else {
+ return sb.append("0.0"); // Exact zero.
}
+ } else if (precision < 0.0) { // Not NaN
+ throw new IllegalArgumentException("precision: Negative values not allowed");
}
- else if ( precision < 0.0 )
- { // Not NaN
- throw new IllegalArgumentException( "precision: Negative values not allowed" );
- }
- return format( d, precision, precisionOnLastDigit, sb );
+ return format(d, precision, precisionOnLastDigit, sb);
}
/**
@@ -806,96 +675,77 @@ else if ( precision < 0.0 )
* @param sb the StringBuffer
to append.
* @return the specified StringBuffer
object.
*/
- private static StringBuffer format( double d, double precision, boolean precisionOnLastDigit, StringBuffer sb )
- {
+ private static StringBuffer format(double d, double precision, boolean precisionOnLastDigit, StringBuffer sb) {
// Special cases.
- if ( Double.isNaN( d ) )
- {
- return sb.append( "NaN" );
- }
- else if ( Double.isInfinite( d ) )
- {
- return ( d >= 0 ) ? sb.append( "Infinity" ) : sb.append( "-Infinity" );
+ if (Double.isNaN(d)) {
+ return sb.append("NaN");
+ } else if (Double.isInfinite(d)) {
+ return (d >= 0) ? sb.append("Infinity") : sb.append("-Infinity");
}
- if ( d < 0 )
- {
+ if (d < 0) {
d = -d;
- sb.append( '-' );
+ sb.append('-');
}
// Formats decimal part.
- int rank = (int) Math.floor( Math.log( precision ) / LOG_10 );
- double digitValue = multE( d, -rank );
- if ( digitValue >= Long.MAX_VALUE )
- {
- throw new IllegalArgumentException( "Specified precision would result in too many digits" );
+ int rank = (int) Math.floor(Math.log(precision) / LOG_10);
+ double digitValue = multE(d, -rank);
+ if (digitValue >= Long.MAX_VALUE) {
+ throw new IllegalArgumentException("Specified precision would result in too many digits");
}
int digitStart = sb.length();
- format( Math.round( digitValue ), sb );
+ format(Math.round(digitValue), sb);
int digitLength = sb.length() - digitStart;
int dotPos = digitLength + rank;
boolean useScientificNotation = false;
// Inserts dot ('.')
- if ( ( dotPos <= -LEADING_ZEROS.length ) || ( dotPos > digitLength ) )
- {
+ if ((dotPos <= -LEADING_ZEROS.length) || (dotPos > digitLength)) {
// Scientific notation has to be used ("x.xxxEyy").
- sb.insert( digitStart + 1, '.' );
+ sb.insert(digitStart + 1, '.');
useScientificNotation = true;
- }
- else if ( dotPos > 0 )
- {
+ } else if (dotPos > 0) {
// Dot within the string ("xxxx.xxxxx").
- sb.insert( digitStart + dotPos, '.' );
- }
- else
- {
+ sb.insert(digitStart + dotPos, '.');
+ } else {
// Leading zeros ("0.xxxxx").
- sb.insert( digitStart, LEADING_ZEROS[-dotPos] );
+ sb.insert(digitStart, LEADING_ZEROS[-dotPos]);
}
// Removes trailing zeros.
- if ( !precisionOnLastDigit )
- {
+ if (!precisionOnLastDigit) {
int newLength = sb.length();
- do
- {
+ do {
newLength--;
- }
- while ( sb.charAt( newLength ) == '0' );
- sb.setLength( newLength + 1 );
+ } while (sb.charAt(newLength) == '0');
+ sb.setLength(newLength + 1);
}
// Avoids trailing '.'
- if ( sb.charAt( sb.length() - 1 ) == '.' )
- {
- if ( precisionOnLastDigit )
- {
- sb.setLength( sb.length() - 1 ); // Prefers "xxx" to "xxx."
- }
- else
- {
- sb.append( '0' ); // Prefer "xxx.0" to "xxx."
+ if (sb.charAt(sb.length() - 1) == '.') {
+ if (precisionOnLastDigit) {
+ sb.setLength(sb.length() - 1); // Prefers "xxx" to "xxx."
+ } else {
+ sb.append('0'); // Prefer "xxx.0" to "xxx."
}
}
// Writes exponent.
- if ( useScientificNotation )
- {
- sb.append( 'E' );
- format( dotPos - 1, sb );
+ if (useScientificNotation) {
+ sb.append('E');
+ format(dotPos - 1, sb);
}
return sb;
}
- private static final double LOG_10 = Math.log( 10 );
+ private static final double LOG_10 = Math.log(10);
- private static final float FLOAT_RELATIVE_ERROR = (float) Math.pow( 2, -24 );
+ private static final float FLOAT_RELATIVE_ERROR = (float) Math.pow(2, -24);
- private static final double DOUBLE_RELATIVE_ERROR = Math.pow( 2, -53 );
+ private static final double DOUBLE_RELATIVE_ERROR = Math.pow(2, -53);
- private static String[] LEADING_ZEROS = { "0.", "0.0", "0.00" };
+ private static String[] LEADING_ZEROS = {"0.", "0.0", "0.00"};
/**
* Returns the product of the specified value with 10
raised at the specified power exponent.
@@ -904,33 +754,23 @@ else if ( dotPos > 0 )
* @param E the exponent.
* @return value * 10^E
*/
- private static final double multE( double value, int E )
- {
- if ( E >= 0 )
- {
- if ( E <= 308 )
- {
+ private static final double multE(double value, int E) {
+ if (E >= 0) {
+ if (E <= 308) {
// Max: 1.7976931348623157E+308
return value * DOUBLE_POW_10[E];
- }
- else
- {
+ } else {
value *= 1E21; // Exact multiplicand.
- E = Math.min( 308, E - 21 );
+ E = Math.min(308, E - 21);
return value * DOUBLE_POW_10[E];
}
- }
- else
- {
- if ( E >= -308 )
- {
+ } else {
+ if (E >= -308) {
return value / DOUBLE_POW_10[-E];
- }
- else
- {
+ } else {
// Min: 4.9E-324
value /= 1E21; // Exact divisor.
- E = Math.max( -308, E + 21 );
+ E = Math.max(-308, E + 21);
return value / DOUBLE_POW_10[-E];
}
}
@@ -939,30 +779,25 @@ private static final double multE( double value, int E )
// Note: Approximation for exponents > 21. This may introduce round-off
// errors (e.g. 1E23 represented as "9.999999999999999E22").
private static final double[] DOUBLE_POW_10 = new double[] {
-
1E000, 1E001, 1E002, 1E003, 1E004, 1E005, 1E006, 1E007, 1E008, 1E009, 1E010, 1E011, 1E012, 1E013, 1E014, 1E015,
1E016, 1E017, 1E018, 1E019, 1E020, 1E021, 1E022, 1E023, 1E024, 1E025, 1E026, 1E027, 1E028, 1E029, 1E030, 1E031,
1E032, 1E033, 1E034, 1E035, 1E036, 1E037, 1E038, 1E039, 1E040, 1E041, 1E042, 1E043, 1E044, 1E045, 1E046, 1E047,
1E048, 1E049, 1E050, 1E051, 1E052, 1E053, 1E054, 1E055, 1E056, 1E057, 1E058, 1E059, 1E060, 1E061, 1E062, 1E063,
1E064, 1E065, 1E066, 1E067, 1E068, 1E069, 1E070, 1E071, 1E072, 1E073, 1E074, 1E075, 1E076, 1E077, 1E078, 1E079,
1E080, 1E081, 1E082, 1E083, 1E084, 1E085, 1E086, 1E087, 1E088, 1E089, 1E090, 1E091, 1E092, 1E093, 1E094, 1E095,
- 1E096, 1E097, 1E098, 1E099,
-
- 1E100, 1E101, 1E102, 1E103, 1E104, 1E105, 1E106, 1E107, 1E108, 1E109, 1E110, 1E111, 1E112, 1E113, 1E114, 1E115,
- 1E116, 1E117, 1E118, 1E119, 1E120, 1E121, 1E122, 1E123, 1E124, 1E125, 1E126, 1E127, 1E128, 1E129, 1E130, 1E131,
- 1E132, 1E133, 1E134, 1E135, 1E136, 1E137, 1E138, 1E139, 1E140, 1E141, 1E142, 1E143, 1E144, 1E145, 1E146, 1E147,
- 1E148, 1E149, 1E150, 1E151, 1E152, 1E153, 1E154, 1E155, 1E156, 1E157, 1E158, 1E159, 1E160, 1E161, 1E162, 1E163,
- 1E164, 1E165, 1E166, 1E167, 1E168, 1E169, 1E170, 1E171, 1E172, 1E173, 1E174, 1E175, 1E176, 1E177, 1E178, 1E179,
- 1E180, 1E181, 1E182, 1E183, 1E184, 1E185, 1E186, 1E187, 1E188, 1E189, 1E190, 1E191, 1E192, 1E193, 1E194, 1E195,
- 1E196, 1E197, 1E198, 1E199,
-
- 1E200, 1E201, 1E202, 1E203, 1E204, 1E205, 1E206, 1E207, 1E208, 1E209, 1E210, 1E211, 1E212, 1E213, 1E214, 1E215,
- 1E216, 1E217, 1E218, 1E219, 1E220, 1E221, 1E222, 1E223, 1E224, 1E225, 1E226, 1E227, 1E228, 1E229, 1E230, 1E231,
- 1E232, 1E233, 1E234, 1E235, 1E236, 1E237, 1E238, 1E239, 1E240, 1E241, 1E242, 1E243, 1E244, 1E245, 1E246, 1E247,
- 1E248, 1E249, 1E250, 1E251, 1E252, 1E253, 1E254, 1E255, 1E256, 1E257, 1E258, 1E259, 1E260, 1E261, 1E262, 1E263,
- 1E264, 1E265, 1E266, 1E267, 1E268, 1E269, 1E270, 1E271, 1E272, 1E273, 1E274, 1E275, 1E276, 1E277, 1E278, 1E279,
- 1E280, 1E281, 1E282, 1E283, 1E284, 1E285, 1E286, 1E287, 1E288, 1E289, 1E290, 1E291, 1E292, 1E293, 1E294, 1E295,
- 1E296, 1E297, 1E298, 1E299,
-
- 1E300, 1E301, 1E302, 1E303, 1E304, 1E305, 1E306, 1E307, 1E308 };
-}
\ No newline at end of file
+ 1E096, 1E097, 1E098, 1E099, 1E100, 1E101, 1E102, 1E103, 1E104, 1E105, 1E106, 1E107, 1E108, 1E109, 1E110, 1E111,
+ 1E112, 1E113, 1E114, 1E115, 1E116, 1E117, 1E118, 1E119, 1E120, 1E121, 1E122, 1E123, 1E124, 1E125, 1E126, 1E127,
+ 1E128, 1E129, 1E130, 1E131, 1E132, 1E133, 1E134, 1E135, 1E136, 1E137, 1E138, 1E139, 1E140, 1E141, 1E142, 1E143,
+ 1E144, 1E145, 1E146, 1E147, 1E148, 1E149, 1E150, 1E151, 1E152, 1E153, 1E154, 1E155, 1E156, 1E157, 1E158, 1E159,
+ 1E160, 1E161, 1E162, 1E163, 1E164, 1E165, 1E166, 1E167, 1E168, 1E169, 1E170, 1E171, 1E172, 1E173, 1E174, 1E175,
+ 1E176, 1E177, 1E178, 1E179, 1E180, 1E181, 1E182, 1E183, 1E184, 1E185, 1E186, 1E187, 1E188, 1E189, 1E190, 1E191,
+ 1E192, 1E193, 1E194, 1E195, 1E196, 1E197, 1E198, 1E199, 1E200, 1E201, 1E202, 1E203, 1E204, 1E205, 1E206, 1E207,
+ 1E208, 1E209, 1E210, 1E211, 1E212, 1E213, 1E214, 1E215, 1E216, 1E217, 1E218, 1E219, 1E220, 1E221, 1E222, 1E223,
+ 1E224, 1E225, 1E226, 1E227, 1E228, 1E229, 1E230, 1E231, 1E232, 1E233, 1E234, 1E235, 1E236, 1E237, 1E238, 1E239,
+ 1E240, 1E241, 1E242, 1E243, 1E244, 1E245, 1E246, 1E247, 1E248, 1E249, 1E250, 1E251, 1E252, 1E253, 1E254, 1E255,
+ 1E256, 1E257, 1E258, 1E259, 1E260, 1E261, 1E262, 1E263, 1E264, 1E265, 1E266, 1E267, 1E268, 1E269, 1E270, 1E271,
+ 1E272, 1E273, 1E274, 1E275, 1E276, 1E277, 1E278, 1E279, 1E280, 1E281, 1E282, 1E283, 1E284, 1E285, 1E286, 1E287,
+ 1E288, 1E289, 1E290, 1E291, 1E292, 1E293, 1E294, 1E295, 1E296, 1E297, 1E298, 1E299, 1E300, 1E301, 1E302, 1E303,
+ 1E304, 1E305, 1E306, 1E307, 1E308
+ };
+}
diff --git a/src/main/java/org/codehaus/plexus/util/WriterFactory.java b/src/main/java/org/codehaus/plexus/util/WriterFactory.java
index bd592e38..09d8ca64 100644
--- a/src/main/java/org/codehaus/plexus/util/WriterFactory.java
+++ b/src/main/java/org/codehaus/plexus/util/WriterFactory.java
@@ -16,8 +16,6 @@
* limitations under the License.
*/
-import org.codehaus.plexus.util.xml.XmlStreamWriter;
-
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
@@ -27,6 +25,8 @@
import java.nio.charset.Charset;
import java.nio.file.Files;
+import org.codehaus.plexus.util.xml.XmlStreamWriter;
+
/**
* Utility to create Writers, with explicit encoding choice: platform default, XML, or specified.
*
@@ -40,12 +40,11 @@
* @since 1.4.4
*/
@Deprecated
-public class WriterFactory
-{
+public class WriterFactory {
/**
* ISO Latin Alphabet #1, also known as ISO-LATIN-1. Every implementation of the Java platform is required to
* support this character encoding.
- *
+ *
* @see Charset
*/
public static final String ISO_8859_1 = "ISO-8859-1";
@@ -53,7 +52,7 @@ public class WriterFactory
/**
* Seven-bit ASCII, also known as ISO646-US, also known as the Basic Latin block of the Unicode character set. Every
* implementation of the Java platform is required to support this character encoding.
- *
+ *
* @see Charset
*/
public static final String US_ASCII = "US-ASCII";
@@ -62,7 +61,7 @@ public class WriterFactory
* Sixteen-bit Unicode Transformation Format, byte order specified by a mandatory initial byte-order mark (either
* order accepted on input, big-endian used on output). Every implementation of the Java platform is required to
* support this character encoding.
- *
+ *
* @see Charset
*/
public static final String UTF_16 = "UTF-16";
@@ -70,7 +69,7 @@ public class WriterFactory
/**
* Sixteen-bit Unicode Transformation Format, big-endian byte order. Every implementation of the Java platform is
* required to support this character encoding.
- *
+ *
* @see Charset
*/
public static final String UTF_16BE = "UTF-16BE";
@@ -78,7 +77,7 @@ public class WriterFactory
/**
* Sixteen-bit Unicode Transformation Format, little-endian byte order. Every implementation of the Java platform is
* required to support this character encoding.
- *
+ *
* @see Charset
*/
public static final String UTF_16LE = "UTF-16LE";
@@ -86,7 +85,7 @@ public class WriterFactory
/**
* Eight-bit Unicode Transformation Format. Every implementation of the Java platform is required to support this
* character encoding.
- *
+ *
* @see Charset
*/
public static final String UTF_8 = "UTF-8";
@@ -94,7 +93,7 @@ public class WriterFactory
/**
* The file.encoding
System Property.
*/
- public static final String FILE_ENCODING = System.getProperty( "file.encoding" );
+ public static final String FILE_ENCODING = System.getProperty("file.encoding");
/**
* Create a new Writer with XML encoding detection rules.
@@ -104,10 +103,8 @@ public class WriterFactory
* @throws IOException if any.
* @see XmlStreamWriter
*/
- public static XmlStreamWriter newXmlWriter( OutputStream out )
- throws IOException
- {
- return new XmlStreamWriter( out );
+ public static XmlStreamWriter newXmlWriter(OutputStream out) throws IOException {
+ return new XmlStreamWriter(out);
}
/**
@@ -118,10 +115,8 @@ public static XmlStreamWriter newXmlWriter( OutputStream out )
* @throws IOException if any.
* @see XmlStreamWriter
*/
- public static XmlStreamWriter newXmlWriter(File file )
- throws IOException
- {
- return new XmlStreamWriter( file );
+ public static XmlStreamWriter newXmlWriter(File file) throws IOException {
+ return new XmlStreamWriter(file);
}
/**
@@ -131,9 +126,8 @@ public static XmlStreamWriter newXmlWriter(File file )
* @return a writer instance for the output stream using the default platform charset.
* @see Charset#defaultCharset()
*/
- public static Writer newPlatformWriter( OutputStream out )
- {
- return new OutputStreamWriter( out );
+ public static Writer newPlatformWriter(OutputStream out) {
+ return new OutputStreamWriter(out);
}
/**
@@ -144,10 +138,8 @@ public static Writer newPlatformWriter( OutputStream out )
* @throws IOException if any.
* @see Charset#defaultCharset()
*/
- public static Writer newPlatformWriter( File file )
- throws IOException
- {
- return Files.newBufferedWriter( file.toPath() );
+ public static Writer newPlatformWriter(File file) throws IOException {
+ return Files.newBufferedWriter(file.toPath());
}
/**
@@ -159,10 +151,8 @@ public static Writer newPlatformWriter( File file )
* @throws UnsupportedEncodingException if any.
* @see Supported encodings
*/
- public static Writer newWriter( OutputStream out, String encoding )
- throws UnsupportedEncodingException
- {
- return new OutputStreamWriter( out, encoding );
+ public static Writer newWriter(OutputStream out, String encoding) throws UnsupportedEncodingException {
+ return new OutputStreamWriter(out, encoding);
}
/**
@@ -174,9 +164,7 @@ public static Writer newWriter( OutputStream out, String encoding )
* @throws IOException if any.
* @see Supported encodings
*/
- public static Writer newWriter( File file, String encoding )
- throws IOException
- {
- return newWriter( Files.newOutputStream( file.toPath() ), encoding );
+ public static Writer newWriter(File file, String encoding) throws IOException {
+ return newWriter(Files.newOutputStream(file.toPath()), encoding);
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/AbstractStreamHandler.java b/src/main/java/org/codehaus/plexus/util/cli/AbstractStreamHandler.java
index 2ad16366..64b9deba 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/AbstractStreamHandler.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/AbstractStreamHandler.java
@@ -19,40 +19,30 @@
/**
* @author Kristian Rosenvold
*/
-public class AbstractStreamHandler
- extends Thread
-{
+public class AbstractStreamHandler extends Thread {
private boolean done;
private volatile boolean disabled;
- public boolean isDone()
- {
+ public boolean isDone() {
return done;
}
- public synchronized void waitUntilDone()
- throws InterruptedException
- {
- while ( !isDone() )
- {
+ public synchronized void waitUntilDone() throws InterruptedException {
+ while (!isDone()) {
wait();
}
}
- protected boolean isDisabled()
- {
+ protected boolean isDisabled() {
return disabled;
}
- public void disable()
- {
+ public void disable() {
disabled = true;
}
- public void setDone()
- {
+ public void setDone() {
done = true;
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/Arg.java b/src/main/java/org/codehaus/plexus/util/cli/Arg.java
index 75886ef9..4650288c 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/Arg.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/Arg.java
@@ -18,13 +18,12 @@
import java.io.File;
-public interface Arg
-{
- void setValue( String value );
+public interface Arg {
+ void setValue(String value);
- void setLine( String line );
+ void setLine(String line);
- void setFile( File value );
+ void setFile(File value);
String[] getParts();
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/CommandLineCallable.java b/src/main/java/org/codehaus/plexus/util/cli/CommandLineCallable.java
index 0a861a75..f80a8bc1 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/CommandLineCallable.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/CommandLineCallable.java
@@ -20,13 +20,10 @@
/**
* Callable wrapper that exposes the proper exception type to the client.
- *
+ *
* @author Kristian Rosenvold
*/
-public interface CommandLineCallable
- extends Callable
-{
+public interface CommandLineCallable extends Callable {
@Override
- Integer call()
- throws CommandLineException;
+ Integer call() throws CommandLineException;
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/CommandLineException.java b/src/main/java/org/codehaus/plexus/util/cli/CommandLineException.java
index 9d0a439e..a6bf993c 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/CommandLineException.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/CommandLineException.java
@@ -20,16 +20,12 @@
* @author Trygve Laugstøl
*
*/
-public class CommandLineException
- extends Exception
-{
- public CommandLineException( String message )
- {
- super( message );
+public class CommandLineException extends Exception {
+ public CommandLineException(String message) {
+ super(message);
}
- public CommandLineException( String message, Throwable cause )
- {
- super( message, cause );
+ public CommandLineException(String message, Throwable cause) {
+ super(message, cause);
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/CommandLineTimeOutException.java b/src/main/java/org/codehaus/plexus/util/cli/CommandLineTimeOutException.java
index 9d90c674..fcfdf3c1 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/CommandLineTimeOutException.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/CommandLineTimeOutException.java
@@ -24,18 +24,13 @@
* @since 1.5.9
*
*/
-public class CommandLineTimeOutException
- extends CommandLineException
-{
+public class CommandLineTimeOutException extends CommandLineException {
- public CommandLineTimeOutException( String message )
- {
- super( message );
+ public CommandLineTimeOutException(String message) {
+ super(message);
}
- public CommandLineTimeOutException( String message, Throwable cause )
- {
- super( message, cause );
+ public CommandLineTimeOutException(String message, Throwable cause) {
+ super(message, cause);
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/CommandLineUtils.java b/src/main/java/org/codehaus/plexus/util/cli/CommandLineUtils.java
index 0e168c04..81b053b9 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/CommandLineUtils.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/CommandLineUtils.java
@@ -16,7 +16,6 @@
* limitations under the License.
*/
-import java.io.IOException;
import java.io.InputStream;
import java.util.Locale;
import java.util.Map;
@@ -31,33 +30,27 @@
* @author Trygve Laugstøl
*
*/
-public abstract class CommandLineUtils
-{
+public abstract class CommandLineUtils {
/**
* A {@code StreamConsumer} providing consumed lines as a {@code String}.
*
* @see #getOutput()
*/
- public static class StringStreamConsumer
- implements StreamConsumer
- {
+ public static class StringStreamConsumer implements StreamConsumer {
private StringBuffer string = new StringBuffer();
- private String ls = System.getProperty( "line.separator" );
+ private String ls = System.getProperty("line.separator");
@Override
- public void consumeLine( String line )
- {
- string.append( line ).append( ls );
+ public void consumeLine(String line) {
+ string.append(line).append(ls);
}
- public String getOutput()
- {
+ public String getOutput() {
return string.toString();
}
-
}
/**
@@ -70,24 +63,21 @@ public String getOutput()
*/
private static final long NANOS_PER_SECOND = 1000000000L;
- public static int executeCommandLine( Commandline cl, StreamConsumer systemOut, StreamConsumer systemErr )
- throws CommandLineException
- {
- return executeCommandLine( cl, null, systemOut, systemErr, 0 );
+ public static int executeCommandLine(Commandline cl, StreamConsumer systemOut, StreamConsumer systemErr)
+ throws CommandLineException {
+ return executeCommandLine(cl, null, systemOut, systemErr, 0);
}
- public static int executeCommandLine( Commandline cl, StreamConsumer systemOut, StreamConsumer systemErr,
- int timeoutInSeconds )
- throws CommandLineException
- {
- return executeCommandLine( cl, null, systemOut, systemErr, timeoutInSeconds );
+ public static int executeCommandLine(
+ Commandline cl, StreamConsumer systemOut, StreamConsumer systemErr, int timeoutInSeconds)
+ throws CommandLineException {
+ return executeCommandLine(cl, null, systemOut, systemErr, timeoutInSeconds);
}
- public static int executeCommandLine( Commandline cl, InputStream systemIn, StreamConsumer systemOut,
- StreamConsumer systemErr )
- throws CommandLineException
- {
- return executeCommandLine( cl, systemIn, systemOut, systemErr, 0 );
+ public static int executeCommandLine(
+ Commandline cl, InputStream systemIn, StreamConsumer systemOut, StreamConsumer systemErr)
+ throws CommandLineException {
+ return executeCommandLine(cl, systemIn, systemOut, systemErr, 0);
}
/**
@@ -99,12 +89,15 @@ public static int executeCommandLine( Commandline cl, InputStream systemIn, Stre
* @return A return value, see {@link Process#exitValue()}
* @throws CommandLineException or CommandLineTimeOutException if time out occurs
*/
- public static int executeCommandLine( Commandline cl, InputStream systemIn, StreamConsumer systemOut,
- StreamConsumer systemErr, int timeoutInSeconds )
- throws CommandLineException
- {
+ public static int executeCommandLine(
+ Commandline cl,
+ InputStream systemIn,
+ StreamConsumer systemOut,
+ StreamConsumer systemErr,
+ int timeoutInSeconds)
+ throws CommandLineException {
final CommandLineCallable future =
- executeCommandLineAsCallable( cl, systemIn, systemOut, systemErr, timeoutInSeconds );
+ executeCommandLineAsCallable(cl, systemIn, systemOut, systemErr, timeoutInSeconds);
return future.call();
}
@@ -121,83 +114,70 @@ public static int executeCommandLine( Commandline cl, InputStream systemIn, Stre
* internal state before after the completion of the call statements
* @throws CommandLineException or CommandLineTimeOutException if time out occurs
*/
- public static CommandLineCallable executeCommandLineAsCallable( final Commandline cl, final InputStream systemIn,
- final StreamConsumer systemOut,
- final StreamConsumer systemErr,
- final int timeoutInSeconds )
- throws CommandLineException
- {
- if ( cl == null )
- {
- throw new IllegalArgumentException( "cl cannot be null." );
+ public static CommandLineCallable executeCommandLineAsCallable(
+ final Commandline cl,
+ final InputStream systemIn,
+ final StreamConsumer systemOut,
+ final StreamConsumer systemErr,
+ final int timeoutInSeconds)
+ throws CommandLineException {
+ if (cl == null) {
+ throw new IllegalArgumentException("cl cannot be null.");
}
final Process p = cl.execute();
- final Thread processHook = new Thread()
- {
+ final Thread processHook = new Thread() {
{
- this.setName( "CommandLineUtils process shutdown hook" );
- this.setContextClassLoader( null );
+ this.setName("CommandLineUtils process shutdown hook");
+ this.setContextClassLoader(null);
}
@Override
- public void run()
- {
+ public void run() {
p.destroy();
}
-
};
- ShutdownHookUtils.addShutDownHook( processHook );
+ ShutdownHookUtils.addShutDownHook(processHook);
- return new CommandLineCallable()
- {
+ return new CommandLineCallable() {
@Override
- public Integer call()
- throws CommandLineException
- {
+ public Integer call() throws CommandLineException {
StreamFeeder inputFeeder = null;
StreamPumper outputPumper = null;
StreamPumper errorPumper = null;
boolean success = false;
- try
- {
- if ( systemIn != null )
- {
- inputFeeder = new StreamFeeder( systemIn, p.getOutputStream() );
+ try {
+ if (systemIn != null) {
+ inputFeeder = new StreamFeeder(systemIn, p.getOutputStream());
inputFeeder.start();
}
- outputPumper = new StreamPumper( p.getInputStream(), systemOut );
+ outputPumper = new StreamPumper(p.getInputStream(), systemOut);
outputPumper.start();
- errorPumper = new StreamPumper( p.getErrorStream(), systemErr );
+ errorPumper = new StreamPumper(p.getErrorStream(), systemErr);
errorPumper.start();
int returnValue;
- if ( timeoutInSeconds <= 0 )
- {
+ if (timeoutInSeconds <= 0) {
returnValue = p.waitFor();
- }
- else
- {
+ } else {
final long now = System.nanoTime();
final long timeout = now + NANOS_PER_SECOND * timeoutInSeconds;
- while ( isAlive( p ) && ( System.nanoTime() < timeout ) )
- {
+ while (isAlive(p) && (System.nanoTime() < timeout)) {
// The timeout is specified in seconds. Therefore we must not sleep longer than one second
// but we should sleep as long as possible to reduce the number of iterations performed.
- Thread.sleep( MILLIS_PER_SECOND - 1L );
+ Thread.sleep(MILLIS_PER_SECOND - 1L);
}
- if ( isAlive( p ) )
- {
- throw new InterruptedException( String.format( "Process timed out after %d seconds.",
- timeoutInSeconds ) );
+ if (isAlive(p)) {
+ throw new InterruptedException(
+ String.format("Process timed out after %d seconds.", timeoutInSeconds));
}
returnValue = p.exitValue();
@@ -224,96 +204,72 @@ public Integer call()
// errorPumper.waitUntilDone();
// }
// }
- if ( inputFeeder != null )
- {
+ if (inputFeeder != null) {
inputFeeder.waitUntilDone();
}
outputPumper.waitUntilDone();
errorPumper.waitUntilDone();
- if ( inputFeeder != null )
- {
+ if (inputFeeder != null) {
inputFeeder.close();
- handleException( inputFeeder, "stdin" );
+ handleException(inputFeeder, "stdin");
}
outputPumper.close();
- handleException( outputPumper, "stdout" );
+ handleException(outputPumper, "stdout");
errorPumper.close();
- handleException( errorPumper, "stderr" );
+ handleException(errorPumper, "stderr");
success = true;
return returnValue;
- }
- catch ( InterruptedException ex )
- {
- throw new CommandLineTimeOutException( "Error while executing external command, process killed.",
- ex );
+ } catch (InterruptedException ex) {
+ throw new CommandLineTimeOutException(
+ "Error while executing external command, process killed.", ex);
- }
- finally
- {
- if ( inputFeeder != null )
- {
+ } finally {
+ if (inputFeeder != null) {
inputFeeder.disable();
}
- if ( outputPumper != null )
- {
+ if (outputPumper != null) {
outputPumper.disable();
}
- if ( errorPumper != null )
- {
+ if (errorPumper != null) {
errorPumper.disable();
}
- try
- {
- ShutdownHookUtils.removeShutdownHook( processHook );
+ try {
+ ShutdownHookUtils.removeShutdownHook(processHook);
processHook.run();
- }
- finally
- {
- try
- {
- if ( inputFeeder != null )
- {
+ } finally {
+ try {
+ if (inputFeeder != null) {
inputFeeder.close();
- if ( success )
- {
+ if (success) {
success = false;
- handleException( inputFeeder, "stdin" );
+ handleException(inputFeeder, "stdin");
success = true; // Only reached when no exception has been thrown.
}
}
- }
- finally
- {
- try
- {
- if ( outputPumper != null )
- {
+ } finally {
+ try {
+ if (outputPumper != null) {
outputPumper.close();
- if ( success )
- {
+ if (success) {
success = false;
- handleException( outputPumper, "stdout" );
+ handleException(outputPumper, "stdout");
success = true; // Only reached when no exception has been thrown.
}
}
- }
- finally
- {
- if ( errorPumper != null )
- {
+ } finally {
+ if (errorPumper != null) {
errorPumper.close();
- if ( success )
- {
- handleException( errorPumper, "stderr" );
+ if (success) {
+ handleException(errorPumper, "stderr");
}
}
}
@@ -321,29 +277,22 @@ public Integer call()
}
}
}
-
};
}
- private static void handleException( final StreamPumper streamPumper, final String streamName )
- throws CommandLineException
- {
- if ( streamPumper.getException() != null )
- {
- throw new CommandLineException( String.format( "Failure processing %s.", streamName ),
- streamPumper.getException() );
-
+ private static void handleException(final StreamPumper streamPumper, final String streamName)
+ throws CommandLineException {
+ if (streamPumper.getException() != null) {
+ throw new CommandLineException(
+ String.format("Failure processing %s.", streamName), streamPumper.getException());
}
}
- private static void handleException( final StreamFeeder streamFeeder, final String streamName )
- throws CommandLineException
- {
- if ( streamFeeder.getException() != null )
- {
- throw new CommandLineException( String.format( "Failure processing %s.", streamName ),
- streamFeeder.getException() );
-
+ private static void handleException(final StreamFeeder streamFeeder, final String streamName)
+ throws CommandLineException {
+ if (streamFeeder.getException() != null) {
+ throw new CommandLineException(
+ String.format("Failure processing %s.", streamName), streamFeeder.getException());
}
}
@@ -357,9 +306,8 @@ private static void handleException( final StreamFeeder streamFeeder, final Stri
* @see System#getenv() System.getenv() API, new in JDK 5.0, to get the same result since 2.0.2 System#getenv()
* will be used if available in the current running jvm.
*/
- public static Properties getSystemEnvVars()
- {
- return getSystemEnvVars( !Os.isFamily( Os.FAMILY_WINDOWS ) );
+ public static Properties getSystemEnvVars() {
+ return getSystemEnvVars(!Os.isFamily(Os.FAMILY_WINDOWS));
}
/**
@@ -371,45 +319,34 @@ public static Properties getSystemEnvVars()
* @see System#getenv() System.getenv() API, new in JDK 5.0, to get the same result since 2.0.2 System#getenv()
* will be used if available in the current running jvm.
*/
- public static Properties getSystemEnvVars( boolean caseSensitive )
- {
+ public static Properties getSystemEnvVars(boolean caseSensitive) {
Properties envVars = new Properties();
Map envs = System.getenv();
- for ( String key : envs.keySet() )
- {
- String value = envs.get( key );
- if ( !caseSensitive )
- {
- key = key.toUpperCase( Locale.ENGLISH );
+ for (String key : envs.keySet()) {
+ String value = envs.get(key);
+ if (!caseSensitive) {
+ key = key.toUpperCase(Locale.ENGLISH);
}
- envVars.put( key, value );
+ envVars.put(key, value);
}
return envVars;
}
- public static boolean isAlive( Process p )
- {
- if ( p == null )
- {
+ public static boolean isAlive(Process p) {
+ if (p == null) {
return false;
}
- try
- {
+ try {
p.exitValue();
return false;
- }
- catch ( IllegalThreadStateException e )
- {
+ } catch (IllegalThreadStateException e) {
return true;
}
}
- public static String[] translateCommandline( String toProcess )
- throws Exception
- {
- if ( ( toProcess == null ) || ( toProcess.length() == 0 ) )
- {
+ public static String[] translateCommandline(String toProcess) throws Exception {
+ if ((toProcess == null) || (toProcess.length() == 0)) {
return new String[0];
}
@@ -419,72 +356,54 @@ public static String[] translateCommandline( String toProcess )
final int inQuote = 1;
final int inDoubleQuote = 2;
int state = normal;
- StringTokenizer tok = new StringTokenizer( toProcess, "\"\' ", true );
+ StringTokenizer tok = new StringTokenizer(toProcess, "\"\' ", true);
Vector v = new Vector();
StringBuilder current = new StringBuilder();
- while ( tok.hasMoreTokens() )
- {
+ while (tok.hasMoreTokens()) {
String nextTok = tok.nextToken();
- switch ( state )
- {
+ switch (state) {
case inQuote:
- if ( "\'".equals( nextTok ) )
- {
+ if ("\'".equals(nextTok)) {
state = normal;
- }
- else
- {
- current.append( nextTok );
+ } else {
+ current.append(nextTok);
}
break;
case inDoubleQuote:
- if ( "\"".equals( nextTok ) )
- {
+ if ("\"".equals(nextTok)) {
state = normal;
- }
- else
- {
- current.append( nextTok );
+ } else {
+ current.append(nextTok);
}
break;
default:
- if ( "\'".equals( nextTok ) )
- {
+ if ("\'".equals(nextTok)) {
state = inQuote;
- }
- else if ( "\"".equals( nextTok ) )
- {
+ } else if ("\"".equals(nextTok)) {
state = inDoubleQuote;
- }
- else if ( " ".equals( nextTok ) )
- {
- if ( current.length() != 0 )
- {
- v.addElement( current.toString() );
- current.setLength( 0 );
+ } else if (" ".equals(nextTok)) {
+ if (current.length() != 0) {
+ v.addElement(current.toString());
+ current.setLength(0);
}
- }
- else
- {
- current.append( nextTok );
+ } else {
+ current.append(nextTok);
}
break;
}
}
- if ( current.length() != 0 )
- {
- v.addElement( current.toString() );
+ if (current.length() != 0) {
+ v.addElement(current.toString());
}
- if ( ( state == inQuote ) || ( state == inDoubleQuote ) )
- {
- throw new CommandLineException( "unbalanced quotes in " + toProcess );
+ if ((state == inQuote) || (state == inDoubleQuote)) {
+ throw new CommandLineException("unbalanced quotes in " + toProcess);
}
String[] args = new String[v.size()];
- v.copyInto( args );
+ v.copyInto(args);
return args;
}
@@ -504,11 +423,9 @@ else if ( " ".equals( nextTok ) )
* {@link StringUtils#quoteAndEscape(String, char)} instead.
*/
@Deprecated
- @SuppressWarnings( { "JavaDoc", "deprecation" } )
- public static String quote( String argument )
- throws CommandLineException
- {
- return quote( argument, false, false, true );
+ @SuppressWarnings({"JavaDoc", "deprecation"})
+ public static String quote(String argument) throws CommandLineException {
+ return quote(argument, false, false, true);
}
/**
@@ -528,11 +445,9 @@ public static String quote( String argument )
* {@link StringUtils#quoteAndEscape(String, char)} instead.
*/
@Deprecated
- @SuppressWarnings( { "JavaDoc", "UnusedDeclaration", "deprecation" } )
- public static String quote( String argument, boolean wrapExistingQuotes )
- throws CommandLineException
- {
- return quote( argument, false, false, wrapExistingQuotes );
+ @SuppressWarnings({"JavaDoc", "UnusedDeclaration", "deprecation"})
+ public static String quote(String argument, boolean wrapExistingQuotes) throws CommandLineException {
+ return quote(argument, false, false, wrapExistingQuotes);
}
/**
@@ -547,48 +462,30 @@ public static String quote( String argument, boolean wrapExistingQuotes )
* {@link StringUtils#quoteAndEscape(String, char)} instead.
*/
@Deprecated
- @SuppressWarnings( { "JavaDoc" } )
- public static String quote( String argument, boolean escapeSingleQuotes, boolean escapeDoubleQuotes,
- boolean wrapExistingQuotes )
- throws CommandLineException
- {
- if ( argument.contains( "\"" ) )
- {
- if ( argument.contains( "\'" ) )
- {
- throw new CommandLineException( "Can't handle single and double quotes in same argument" );
- }
- else
- {
- if ( escapeSingleQuotes )
- {
+ @SuppressWarnings({"JavaDoc"})
+ public static String quote(
+ String argument, boolean escapeSingleQuotes, boolean escapeDoubleQuotes, boolean wrapExistingQuotes)
+ throws CommandLineException {
+ if (argument.contains("\"")) {
+ if (argument.contains("\'")) {
+ throw new CommandLineException("Can't handle single and double quotes in same argument");
+ } else {
+ if (escapeSingleQuotes) {
return "\\\'" + argument + "\\\'";
- }
- else if ( wrapExistingQuotes )
- {
+ } else if (wrapExistingQuotes) {
return '\'' + argument + '\'';
}
}
- }
- else if ( argument.contains( "\'" ) )
- {
- if ( escapeDoubleQuotes )
- {
+ } else if (argument.contains("\'")) {
+ if (escapeDoubleQuotes) {
return "\\\"" + argument + "\\\"";
- }
- else if ( wrapExistingQuotes )
- {
+ } else if (wrapExistingQuotes) {
return '\"' + argument + '\"';
}
- }
- else if ( argument.contains( " " ) )
- {
- if ( escapeDoubleQuotes )
- {
+ } else if (argument.contains(" ")) {
+ if (escapeDoubleQuotes) {
return "\\\"" + argument + "\\\"";
- }
- else
- {
+ } else {
return '\"' + argument + '\"';
}
}
@@ -596,32 +493,24 @@ else if ( argument.contains( " " ) )
return argument;
}
- public static String toString( String[] line )
- {
+ public static String toString(String[] line) {
// empty path return empty string
- if ( ( line == null ) || ( line.length == 0 ) )
- {
+ if ((line == null) || (line.length == 0)) {
return "";
}
// path containing one or more elements
final StringBuilder result = new StringBuilder();
- for ( int i = 0; i < line.length; i++ )
- {
- if ( i > 0 )
- {
- result.append( ' ' );
+ for (int i = 0; i < line.length; i++) {
+ if (i > 0) {
+ result.append(' ');
}
- try
- {
- result.append( StringUtils.quoteAndEscape( line[i], '\"' ) );
- }
- catch ( Exception e )
- {
- System.err.println( "Error quoting argument: " + e.getMessage() );
+ try {
+ result.append(StringUtils.quoteAndEscape(line[i], '\"'));
+ } catch (Exception e) {
+ System.err.println("Error quoting argument: " + e.getMessage());
}
}
return result.toString();
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/Commandline.java b/src/main/java/org/codehaus/plexus/util/cli/Commandline.java
index c06147a9..db145c50 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/Commandline.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/Commandline.java
@@ -57,13 +57,6 @@
* ====================================================================
*/
-import org.codehaus.plexus.util.Os;
-import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.cli.shell.BourneShell;
-import org.codehaus.plexus.util.cli.shell.CmdShell;
-import org.codehaus.plexus.util.cli.shell.CommandShell;
-import org.codehaus.plexus.util.cli.shell.Shell;
-
import java.io.File;
import java.io.IOException;
import java.util.Collections;
@@ -72,12 +65,19 @@
import java.util.Properties;
import java.util.Vector;
+import org.codehaus.plexus.util.Os;
+import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.cli.shell.BourneShell;
+import org.codehaus.plexus.util.cli.shell.CmdShell;
+import org.codehaus.plexus.util.cli.shell.CommandShell;
+import org.codehaus.plexus.util.cli.shell.Shell;
+
/**
* Commandline objects help handling command lines specifying processes to execute.
- *
+ *
* The class can be used to define a command line as nested elements or as a helper to define a command line by an
* application.
- *
+ *
*
* <someelement>
* <acommandline executable="/executable/to/run">
@@ -87,16 +87,14 @@
* </acommandline>
* </someelement>
*
- *
+ *
* The element someelement
must provide a method createAcommandline
which returns an instance
* of this class.
*
* @author thomas.haas@softwired-inc.com
* @author Stefan Bodewig
*/
-public class Commandline
- implements Cloneable
-{
+public class Commandline implements Cloneable {
/**
* @deprecated Use {@link org.codehaus.plexus.util.Os} class instead.
*/
@@ -113,7 +111,7 @@ public class Commandline
// protected Vector envVars = new Vector();
// synchronized added to preserve synchronize of Vector class
- protected Map envVars = Collections.synchronizedMap( new LinkedHashMap() );
+ protected Map envVars = Collections.synchronizedMap(new LinkedHashMap());
private long pid = -1;
@@ -139,25 +137,19 @@ public class Commandline
* @param toProcess sh to process
* @param shell Shell to use
*/
- public Commandline( String toProcess, Shell shell )
- {
+ public Commandline(String toProcess, Shell shell) {
this.shell = shell;
String[] tmp = new String[0];
- try
- {
- tmp = CommandLineUtils.translateCommandline( toProcess );
- }
- catch ( Exception e )
- {
- System.err.println( "Error translating Commandline." );
- }
- if ( ( tmp != null ) && ( tmp.length > 0 ) )
- {
- setExecutable( tmp[0] );
- for ( int i = 1; i < tmp.length; i++ )
- {
- createArgument().setValue( tmp[i] );
+ try {
+ tmp = CommandLineUtils.translateCommandline(toProcess);
+ } catch (Exception e) {
+ System.err.println("Error translating Commandline.");
+ }
+ if ((tmp != null) && (tmp.length > 0)) {
+ setExecutable(tmp[0]);
+ for (int i = 1; i < tmp.length; i++) {
+ createArgument().setValue(tmp[i]);
}
}
}
@@ -167,8 +159,7 @@ public Commandline( String toProcess, Shell shell )
* generating code for remote execution.
* @param shell the Shell
*/
- public Commandline( Shell shell )
- {
+ public Commandline(Shell shell) {
this.shell = shell;
}
@@ -177,24 +168,18 @@ public Commandline( Shell shell )
*
* @param toProcess the process
*/
- public Commandline( String toProcess )
- {
+ public Commandline(String toProcess) {
setDefaultShell();
String[] tmp = new String[0];
- try
- {
- tmp = CommandLineUtils.translateCommandline( toProcess );
- }
- catch ( Exception e )
- {
- System.err.println( "Error translating Commandline." );
- }
- if ( ( tmp != null ) && ( tmp.length > 0 ) )
- {
- setExecutable( tmp[0] );
- for ( int i = 1; i < tmp.length; i++ )
- {
- createArgument().setValue( tmp[i] );
+ try {
+ tmp = CommandLineUtils.translateCommandline(toProcess);
+ } catch (Exception e) {
+ System.err.println("Error translating Commandline.");
+ }
+ if ((tmp != null) && (tmp.length > 0)) {
+ setExecutable(tmp[0]);
+ for (int i = 1; i < tmp.length; i++) {
+ createArgument().setValue(tmp[i]);
}
}
}
@@ -202,23 +187,19 @@ public Commandline( String toProcess )
/**
* Create a new command line object.
*/
- public Commandline()
- {
+ public Commandline() {
setDefaultShell();
}
- public long getPid()
- {
- if ( pid == -1 )
- {
- pid = Long.parseLong( String.valueOf( System.currentTimeMillis() ) );
+ public long getPid() {
+ if (pid == -1) {
+ pid = Long.parseLong(String.valueOf(System.currentTimeMillis()));
}
return pid;
}
- public void setPid( long pid )
- {
+ public void setPid(long pid) {
this.pid = pid;
}
@@ -228,31 +209,26 @@ public void setPid( long pid )
// This class is there to support the srcfile and targetfile
// elements of <execon> and <transform> - don't know
// whether there might be additional use cases.
--SB
- public class Marker
- {
+ public class Marker {
private int position;
private int realPos = -1;
- Marker( int position )
- {
+ Marker(int position) {
this.position = position;
}
/**
* @return the number of arguments that preceded this marker.
- *
+ *
* The name of the executable - if set - is counted as the very first argument.
*/
- public int getPosition()
- {
- if ( realPos == -1 )
- {
- realPos = ( getLiteralExecutable() == null ? 0 : 1 );
- for ( int i = 0; i < position; i++ )
- {
- Arg arg = arguments.elementAt( i );
+ public int getPosition() {
+ if (realPos == -1) {
+ realPos = (getLiteralExecutable() == null ? 0 : 1);
+ for (int i = 0; i < position; i++) {
+ Arg arg = arguments.elementAt(i);
realPos += arg.getParts().length;
}
}
@@ -265,29 +241,22 @@ public int getPosition()
* Sets the shell or command-line interpreter for the detected operating system, and the shell arguments.
*
*/
- private void setDefaultShell()
- {
+ private void setDefaultShell() {
// If this is windows set the shell to command.com or cmd.exe with correct arguments.
- if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
- {
- if ( Os.isFamily( Os.FAMILY_WIN9X ) )
- {
- setShell( new CommandShell() );
- }
- else
- {
- setShell( new CmdShell() );
+ if (Os.isFamily(Os.FAMILY_WINDOWS)) {
+ if (Os.isFamily(Os.FAMILY_WIN9X)) {
+ setShell(new CommandShell());
+ } else {
+ setShell(new CmdShell());
}
- }
- else
- {
- setShell( new BourneShell() );
+ } else {
+ setShell(new BourneShell());
}
}
/**
* Creates an argument object.
- *
+ *
* Each commandline object has at most one instance of the argument class. This method calls
* this.createArgument(false)
.
*
@@ -296,14 +265,13 @@ private void setDefaultShell()
* @deprecated Use {@link Commandline#createArg()} instead
*/
@Deprecated
- public Argument createArgument()
- {
- return this.createArgument( false );
+ public Argument createArgument() {
+ return this.createArgument(false);
}
/**
* Creates an argument object and adds it to our list of args.
- *
+ *
* Each commandline object has at most one instance of the argument class.
*
* @param insertAtStart if true, the argument is inserted at the beginning of the list of args, otherwise it is
@@ -312,52 +280,43 @@ public Argument createArgument()
* @return Argument the argument Object
*/
@Deprecated
- public Argument createArgument( boolean insertAtStart )
- {
+ public Argument createArgument(boolean insertAtStart) {
Argument argument = new Argument();
- if ( insertAtStart )
- {
- arguments.insertElementAt( argument, 0 );
- }
- else
- {
- arguments.addElement( argument );
+ if (insertAtStart) {
+ arguments.insertElementAt(argument, 0);
+ } else {
+ arguments.addElement(argument);
}
return argument;
}
/**
* Creates an argument object.
- *
+ *
* Each commandline object has at most one instance of the argument class. This method calls
* this.createArgument(false)
.
*
* @return the argument object.
* @see #createArgument(boolean)
*/
- public Arg createArg()
- {
- return this.createArg( false );
+ public Arg createArg() {
+ return this.createArg(false);
}
/**
* @return Creates an argument object and adds it to our list of args.
- *
+ *
* Each commandline object has at most one instance of the argument class.
*
* @param insertAtStart if true, the argument is inserted at the beginning of the list of args, otherwise it is
* appended.
*/
- public Arg createArg( boolean insertAtStart )
- {
+ public Arg createArg(boolean insertAtStart) {
Arg argument = new Argument();
- if ( insertAtStart )
- {
- arguments.insertElementAt( argument, 0 );
- }
- else
- {
- arguments.addElement( argument );
+ if (insertAtStart) {
+ arguments.insertElementAt(argument, 0);
+ } else {
+ arguments.addElement(argument);
}
return argument;
}
@@ -366,9 +325,8 @@ public Arg createArg( boolean insertAtStart )
* @param argument the argument
* @see #addArg(Arg,boolean)
*/
- public void addArg( Arg argument )
- {
- this.addArg( argument, false );
+ public void addArg(Arg argument) {
+ this.addArg(argument, false);
}
/**
@@ -377,15 +335,11 @@ public void addArg( Arg argument )
* @param insertAtStart if true, the argument is inserted at the beginning of the list of args, otherwise it is
* appended.
*/
- public void addArg( Arg argument, boolean insertAtStart )
- {
- if ( insertAtStart )
- {
- arguments.insertElementAt( argument, 0 );
- }
- else
- {
- arguments.addElement( argument );
+ public void addArg(Arg argument, boolean insertAtStart) {
+ if (insertAtStart) {
+ arguments.insertElementAt(argument, 0);
+ } else {
+ arguments.addElement(argument);
}
}
@@ -393,17 +347,15 @@ public void addArg( Arg argument, boolean insertAtStart )
* Sets the executable to run.
* @param executable the executable
*/
- public void setExecutable( String executable )
- {
- shell.setExecutable( executable );
+ public void setExecutable(String executable) {
+ shell.setExecutable(executable);
this.executable = executable;
}
/**
* @return Executable to be run, as a literal string (no shell quoting/munging)
*/
- public String getLiteralExecutable()
- {
+ public String getLiteralExecutable() {
return executable;
}
@@ -413,23 +365,19 @@ public String getLiteralExecutable()
*
* @return Executable to be run, quoted for shell interpretation
*/
- public String getExecutable()
- {
+ public String getExecutable() {
String exec = shell.getExecutable();
- if ( exec == null )
- {
+ if (exec == null) {
exec = executable;
}
return exec;
}
- public void addArguments( String[] line )
- {
- for ( String aLine : line )
- {
- createArgument().setValue( aLine );
+ public void addArguments(String[] line) {
+ for (String aLine : line) {
+ createArgument().setValue(aLine);
}
}
@@ -438,27 +386,22 @@ public void addArguments( String[] line )
* @param name name
* @param value value
*/
- public void addEnvironment( String name, String value )
- {
+ public void addEnvironment(String name, String value) {
// envVars.add( name + "=" + value );
- envVars.put( name, value );
+ envVars.put(name, value);
}
/**
* Add system environment variables
* @throws Exception if error
*/
- public void addSystemEnvironment()
- throws Exception
- {
+ public void addSystemEnvironment() throws Exception {
Properties systemEnvVars = CommandLineUtils.getSystemEnvVars();
- for ( Object o : systemEnvVars.keySet() )
- {
+ for (Object o : systemEnvVars.keySet()) {
String key = (String) o;
- if ( !envVars.containsKey( key ) )
- {
- addEnvironment( key, systemEnvVars.getProperty( key ) );
+ if (!envVars.containsKey(key)) {
+ addEnvironment(key, systemEnvVars.getProperty(key));
}
}
}
@@ -467,23 +410,17 @@ public void addSystemEnvironment()
* @return String[] Return the list of environment variables
* @throws CommandLineException if error
*/
- public String[] getEnvironmentVariables()
- throws CommandLineException
- {
- try
- {
+ public String[] getEnvironmentVariables() throws CommandLineException {
+ try {
addSystemEnvironment();
- }
- catch ( Exception e )
- {
- throw new CommandLineException( "Error setting up environmental variables", e );
+ } catch (Exception e) {
+ throw new CommandLineException("Error setting up environmental variables", e);
}
String[] environmentVars = new String[envVars.size()];
int i = 0;
- for ( Object o : envVars.keySet() )
- {
+ for (Object o : envVars.keySet()) {
String name = (String) o;
- String value = envVars.get( name );
+ String value = envVars.get(name);
environmentVars[i] = name + "=" + value;
i++;
}
@@ -494,10 +431,8 @@ public String[] getEnvironmentVariables()
* @return Returns the executable and all defined arguments.
* For Windows Family, {@link Commandline#getShellCommandline()} is returned
*/
- public String[] getCommandline()
- {
- if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
- {
+ public String[] getCommandline() {
+ if (Os.isFamily(Os.FAMILY_WINDOWS)) {
return getShellCommandline();
}
@@ -508,87 +443,76 @@ public String[] getCommandline()
* Returns the executable and all defined arguments.
* @return the command line as array not escaped neither quoted
*/
- public String[] getRawCommandline()
- {
+ public String[] getRawCommandline() {
final String[] args = getArguments();
String executable = getLiteralExecutable();
- if ( executable == null )
- {
+ if (executable == null) {
return args;
}
final String[] result = new String[args.length + 1];
result[0] = executable;
- System.arraycopy( args, 0, result, 1, args.length );
+ System.arraycopy(args, 0, result, 1, args.length);
return result;
}
- /**
+ /**
* Returns the shell, executable and all defined arguments. Shell usage is only desirable when generating code for
* remote execution.
* @return the command line as array
*/
- public String[] getShellCommandline()
- {
+ public String[] getShellCommandline() {
// TODO: Provided only for backward compat. with <= 1.4
verifyShellState();
- return getShell().getShellCommandLine( getArguments() ).toArray( new String[0] );
+ return getShell().getShellCommandLine(getArguments()).toArray(new String[0]);
}
/**
* @return Returns all arguments defined by addLine
, addValue
or the argument object.
*/
- public String[] getArguments()
- {
- Vector result = new Vector<>( arguments.size() * 2 );
- for ( int i = 0; i < arguments.size(); i++ )
- {
- Arg arg = arguments.elementAt( i );
+ public String[] getArguments() {
+ Vector result = new Vector<>(arguments.size() * 2);
+ for (int i = 0; i < arguments.size(); i++) {
+ Arg arg = arguments.elementAt(i);
String[] s = arg.getParts();
- if ( s != null )
- {
- for ( String value : s )
- {
- result.addElement( value );
+ if (s != null) {
+ for (String value : s) {
+ result.addElement(value);
}
}
}
String[] res = new String[result.size()];
- result.copyInto( res );
+ result.copyInto(res);
return res;
}
@Override
- public String toString()
- {
- return StringUtils.join( getShellCommandline(), " " );
+ public String toString() {
+ return StringUtils.join(getShellCommandline(), " ");
}
- public int size()
- {
+ public int size() {
return getCommandline().length;
}
@Override
- public Object clone()
- {
- Commandline c = new Commandline( (Shell) shell.clone() );
+ public Object clone() {
+ Commandline c = new Commandline((Shell) shell.clone());
c.executable = executable;
c.workingDir = workingDir;
- c.addArguments( getArguments() );
+ c.addArguments(getArguments());
return c;
}
/**
* Clear out the whole command line.
*/
- public void clear()
- {
+ public void clear() {
executable = null;
workingDir = null;
- shell.setExecutable( null );
+ shell.setExecutable(null);
shell.clearArguments();
arguments.removeAllElements();
}
@@ -596,8 +520,7 @@ public void clear()
/**
* Clear out the arguments but leave the executable in place for another operation.
*/
- public void clearArgs()
- {
+ public void clearArgs() {
arguments.removeAllElements();
}
@@ -608,37 +531,32 @@ public void clearArgs()
*
* @return Return a marker.
*/
- public Marker createMarker()
- {
- return new Marker( arguments.size() );
+ public Marker createMarker() {
+ return new Marker(arguments.size());
}
/**
* Sets execution directory.
* @param path the working directory as String
*/
- public void setWorkingDirectory( String path )
- {
- shell.setWorkingDirectory( path );
- workingDir = new File( path );
+ public void setWorkingDirectory(String path) {
+ shell.setWorkingDirectory(path);
+ workingDir = new File(path);
}
/**
* Sets execution directory.
* @param workingDirectory the File used as working directory
*/
- public void setWorkingDirectory( File workingDirectory )
- {
- shell.setWorkingDirectory( workingDirectory );
+ public void setWorkingDirectory(File workingDirectory) {
+ shell.setWorkingDirectory(workingDirectory);
workingDir = workingDirectory;
}
- public File getWorkingDirectory()
- {
+ public File getWorkingDirectory() {
File workDir = shell.getWorkingDirectory();
- if ( workDir == null )
- {
+ if (workDir == null) {
workDir = workingDir;
}
@@ -650,9 +568,7 @@ public File getWorkingDirectory()
* @return the Process
* @throws CommandLineException if error
*/
- public Process execute()
- throws CommandLineException
- {
+ public Process execute() throws CommandLineException {
// TODO: Provided only for backward compat. with <= 1.4
verifyShellState();
@@ -664,31 +580,22 @@ public Process execute()
File workingDir = shell.getWorkingDirectory();
- try
- {
- if ( workingDir == null )
- {
- process = Runtime.getRuntime().exec( getCommandline(), environment, workingDir );
- }
- else
- {
- if ( !workingDir.exists() )
- {
- throw new CommandLineException( "Working directory \"" + workingDir.getPath()
- + "\" does not exist!" );
- }
- else if ( !workingDir.isDirectory() )
- {
- throw new CommandLineException( "Path \"" + workingDir.getPath()
- + "\" does not specify a directory." );
+ try {
+ if (workingDir == null) {
+ process = Runtime.getRuntime().exec(getCommandline(), environment, workingDir);
+ } else {
+ if (!workingDir.exists()) {
+ throw new CommandLineException(
+ "Working directory \"" + workingDir.getPath() + "\" does not exist!");
+ } else if (!workingDir.isDirectory()) {
+ throw new CommandLineException(
+ "Path \"" + workingDir.getPath() + "\" does not specify a directory.");
}
- process = Runtime.getRuntime().exec( getCommandline(), environment, workingDir );
+ process = Runtime.getRuntime().exec(getCommandline(), environment, workingDir);
}
- }
- catch ( IOException ex )
- {
- throw new CommandLineException( "Error while executing process.", ex );
+ } catch (IOException ex) {
+ throw new CommandLineException("Error while executing process.", ex);
}
return process;
@@ -698,22 +605,17 @@ else if ( !workingDir.isDirectory() )
* @deprecated Remove once backward compat with plexus-utils <= 1.4 is no longer a consideration
*/
@Deprecated
- private void verifyShellState()
- {
- if ( shell.getWorkingDirectory() == null )
- {
- shell.setWorkingDirectory( workingDir );
+ private void verifyShellState() {
+ if (shell.getWorkingDirectory() == null) {
+ shell.setWorkingDirectory(workingDir);
}
- if ( shell.getOriginalExecutable() == null )
- {
- shell.setExecutable( executable );
+ if (shell.getOriginalExecutable() == null) {
+ shell.setExecutable(executable);
}
}
- public Properties getSystemEnvVars()
- throws Exception
- {
+ public Properties getSystemEnvVars() throws Exception {
return CommandLineUtils.getSystemEnvVars();
}
@@ -724,20 +626,18 @@ public Properties getSystemEnvVars()
* @param shell Shell to use
* @since 1.2
*/
- public void setShell( Shell shell )
- {
+ public void setShell(Shell shell) {
this.shell = shell;
}
/**
* Get the shell to be used in this command line. Shell usage is only desirable when generating code for remote
* execution.
- *
+ *
* @since 1.2
* @return the Shell
*/
- public Shell getShell()
- {
+ public Shell getShell() {
return shell;
}
@@ -748,10 +648,8 @@ public Shell getShell()
* @deprecated Use {@link CommandLineUtils#translateCommandline(String)} instead.
*/
@Deprecated
- public static String[] translateCommandline( String toProcess )
- throws Exception
- {
- return CommandLineUtils.translateCommandline( toProcess );
+ public static String[] translateCommandline(String toProcess) throws Exception {
+ return CommandLineUtils.translateCommandline(toProcess);
}
/**
@@ -761,10 +659,8 @@ public static String[] translateCommandline( String toProcess )
* @deprecated Use {@link CommandLineUtils#quote(String)} instead.
*/
@Deprecated
- public static String quoteArgument( String argument )
- throws CommandLineException
- {
- return CommandLineUtils.quote( argument );
+ public static String quoteArgument(String argument) throws CommandLineException {
+ return CommandLineUtils.quote(argument);
}
/**
@@ -773,14 +669,11 @@ public static String quoteArgument( String argument )
* @return lines as single String
*/
@Deprecated
- public static String toString( String[] line )
- {
- return CommandLineUtils.toString( line );
+ public static String toString(String[] line) {
+ return CommandLineUtils.toString(line);
}
- public static class Argument
- implements Arg
- {
+ public static class Argument implements Arg {
private String[] parts;
/*
@@ -788,11 +681,9 @@ public static class Argument
* @see org.codehaus.plexus.util.cli.Argument#setValue(java.lang.String)
*/
@Override
- public void setValue( String value )
- {
- if ( value != null )
- {
- parts = new String[] { value };
+ public void setValue(String value) {
+ if (value != null) {
+ parts = new String[] {value};
}
}
@@ -801,19 +692,14 @@ public void setValue( String value )
* @see org.codehaus.plexus.util.cli.Argument#setLine(java.lang.String)
*/
@Override
- public void setLine( String line )
- {
- if ( line == null )
- {
+ public void setLine(String line) {
+ if (line == null) {
return;
}
- try
- {
- parts = CommandLineUtils.translateCommandline( line );
- }
- catch ( Exception e )
- {
- System.err.println( "Error translating Commandline." );
+ try {
+ parts = CommandLineUtils.translateCommandline(line);
+ } catch (Exception e) {
+ System.err.println("Error translating Commandline.");
}
}
@@ -822,9 +708,8 @@ public void setLine( String line )
* @see org.codehaus.plexus.util.cli.Argument#setFile(java.io.File)
*/
@Override
- public void setFile( File value )
- {
- parts = new String[] { value.getAbsolutePath() };
+ public void setFile(File value) {
+ parts = new String[] {value.getAbsolutePath()};
}
/*
@@ -832,8 +717,7 @@ public void setFile( File value )
* @see org.codehaus.plexus.util.cli.Argument#getParts()
*/
@Override
- public String[] getParts()
- {
+ public String[] getParts() {
return parts;
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/DefaultConsumer.java b/src/main/java/org/codehaus/plexus/util/cli/DefaultConsumer.java
index 802dfb02..3808db81 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/DefaultConsumer.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/DefaultConsumer.java
@@ -22,20 +22,14 @@
* @author Emmanuel Venisse
*
*/
-public class DefaultConsumer
- implements StreamConsumer
-{
+public class DefaultConsumer implements StreamConsumer {
@Override
- public void consumeLine( String line )
- throws IOException
- {
- System.out.println( line );
+ public void consumeLine(String line) throws IOException {
+ System.out.println(line);
- if ( System.out.checkError() )
- {
- throw new IOException( String.format( "Failure printing line '%s' to stdout.", line ) );
+ if (System.out.checkError()) {
+ throw new IOException(String.format("Failure printing line '%s' to stdout.", line));
}
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizer.java b/src/main/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizer.java
index 2db89002..565a87cf 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizer.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/EnhancedStringTokenizer.java
@@ -21,11 +21,10 @@
/**
* The java.util.StringTokenizer is horribly broken. Given the string 1,,,3,,4 (, delim) It will return 1,3,4 Which is
* clearly wrong - 1,EMPTY,EMPTY,3,EMPTY,4 is what it should return
- *
+ *
*
*/
-public final class EnhancedStringTokenizer
-{
+public final class EnhancedStringTokenizer {
private StringTokenizer cst = null;
String cdelim;
@@ -40,98 +39,73 @@ public final class EnhancedStringTokenizer
boolean delimLast = true;
- public EnhancedStringTokenizer( String str )
- {
- this( str, " \t\n\r\f", false );
+ public EnhancedStringTokenizer(String str) {
+ this(str, " \t\n\r\f", false);
}
- public EnhancedStringTokenizer( String str, String delim )
- {
- this( str, delim, false );
+ public EnhancedStringTokenizer(String str, String delim) {
+ this(str, delim, false);
}
- public EnhancedStringTokenizer( String str, String delim, boolean returnDelims )
- {
- cst = new StringTokenizer( str, delim, true );
+ public EnhancedStringTokenizer(String str, String delim, boolean returnDelims) {
+ cst = new StringTokenizer(str, delim, true);
cdelim = delim;
creturnDelims = returnDelims;
- cdelimSingleChar = ( delim.length() == 1 );
- cdelimChar = delim.charAt( 0 );
+ cdelimSingleChar = (delim.length() == 1);
+ cdelimChar = delim.charAt(0);
}
- public boolean hasMoreTokens()
- {
+ public boolean hasMoreTokens() {
return cst.hasMoreTokens();
}
- private String internalNextToken()
- {
- if ( lastToken != null )
- {
+ private String internalNextToken() {
+ if (lastToken != null) {
String last = lastToken;
lastToken = null;
return last;
}
String token = cst.nextToken();
- if ( isDelim( token ) )
- {
- if ( delimLast )
- {
+ if (isDelim(token)) {
+ if (delimLast) {
lastToken = token;
return "";
- }
- else
- {
+ } else {
delimLast = true;
return token;
}
- }
- else
- {
+ } else {
delimLast = false;
return token;
}
}
- public String nextToken()
- {
+ public String nextToken() {
String token = internalNextToken();
- if ( creturnDelims )
- {
+ if (creturnDelims) {
return token;
}
- if ( isDelim( token ) )
- {
+ if (isDelim(token)) {
return hasMoreTokens() ? internalNextToken() : "";
- }
- else
- {
+ } else {
return token;
}
}
- private boolean isDelim( String str )
- {
- if ( str.length() == 1 )
- {
- char ch = str.charAt( 0 );
- if ( cdelimSingleChar )
- {
- if ( cdelimChar == ch )
- {
+ private boolean isDelim(String str) {
+ if (str.length() == 1) {
+ char ch = str.charAt(0);
+ if (cdelimSingleChar) {
+ if (cdelimChar == ch) {
return true;
}
- }
- else
- {
- if ( cdelim.indexOf( ch ) >= 0 )
- {
+ } else {
+ if (cdelim.indexOf(ch) >= 0) {
return true;
}
}
}
return false;
-
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/ShutdownHookUtils.java b/src/main/java/org/codehaus/plexus/util/cli/ShutdownHookUtils.java
index 453b566e..bb967b42 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/ShutdownHookUtils.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/ShutdownHookUtils.java
@@ -24,36 +24,21 @@
*
* @author Kristian Rosenvold
*/
-class ShutdownHookUtils
-{
+class ShutdownHookUtils {
- public static void addShutDownHook( Thread hook )
- {
- try
- {
- Runtime.getRuntime().addShutdownHook( hook );
+ public static void addShutDownHook(Thread hook) {
+ try {
+ Runtime.getRuntime().addShutdownHook(hook);
+ } catch (IllegalStateException ignore) {
+ } catch (AccessControlException ignore) {
}
- catch ( IllegalStateException ignore )
- {
- }
- catch ( AccessControlException ignore )
- {
- }
-
}
- public static void removeShutdownHook( Thread hook )
- {
- try
- {
- Runtime.getRuntime().removeShutdownHook( hook );
- }
- catch ( IllegalStateException ignore )
- {
- }
- catch ( AccessControlException ignore )
- {
+ public static void removeShutdownHook(Thread hook) {
+ try {
+ Runtime.getRuntime().removeShutdownHook(hook);
+ } catch (IllegalStateException ignore) {
+ } catch (AccessControlException ignore) {
}
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/StreamConsumer.java b/src/main/java/org/codehaus/plexus/util/cli/StreamConsumer.java
index e01bda2c..7367ccdc 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/StreamConsumer.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/StreamConsumer.java
@@ -52,7 +52,6 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
********************************************************************************/
-
import java.io.IOException;
/**
@@ -64,14 +63,12 @@
* @author Paul Julius
*
*/
-public interface StreamConsumer
-{
+public interface StreamConsumer {
/**
* Called when the StreamPumper pumps a line from the Stream.
- *
+ *
* @param line The line to be consumed.
* @throws IOException if consuming {@code line} fails.
*/
- public void consumeLine( String line )
- throws IOException;
+ public void consumeLine(String line) throws IOException;
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/StreamFeeder.java b/src/main/java/org/codehaus/plexus/util/cli/StreamFeeder.java
index 270d7d8b..81289044 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/StreamFeeder.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/StreamFeeder.java
@@ -26,9 +26,7 @@
* @author Trygve Laugstøl
*
*/
-public class StreamFeeder
- extends AbstractStreamHandler
-{
+public class StreamFeeder extends AbstractStreamHandler {
private InputStream input;
@@ -42,33 +40,24 @@ public class StreamFeeder
* @param input Stream to read from
* @param output Stream to write to
*/
- public StreamFeeder( InputStream input, OutputStream output )
- {
+ public StreamFeeder(InputStream input, OutputStream output) {
super();
this.input = input;
this.output = output;
}
@Override
- public void run()
- {
- try
- {
+ public void run() {
+ try {
feed();
- }
- catch ( Throwable ex )
- {
- if ( exception == null )
- {
+ } catch (Throwable ex) {
+ if (exception == null) {
exception = ex;
}
- }
- finally
- {
+ } finally {
close();
- synchronized ( this )
- {
+ synchronized (this) {
setDone();
this.notifyAll();
@@ -76,20 +65,13 @@ public void run()
}
}
- public void close()
- {
- if ( input != null )
- {
- synchronized ( input )
- {
- try
- {
+ public void close() {
+ if (input != null) {
+ synchronized (input) {
+ try {
input.close();
- }
- catch ( IOException ex )
- {
- if ( exception == null )
- {
+ } catch (IOException ex) {
+ if (exception == null) {
exception = ex;
}
}
@@ -98,18 +80,12 @@ public void close()
}
}
- if ( output != null )
- {
- synchronized ( output )
- {
- try
- {
+ if (output != null) {
+ synchronized (output) {
+ try {
output.close();
- }
- catch ( IOException ex )
- {
- if ( exception == null )
- {
+ } catch (IOException ex) {
+ if (exception == null) {
exception = ex;
}
}
@@ -123,24 +99,18 @@ public void close()
* @since 3.1.0
* @return the Exception
*/
- public Throwable getException()
- {
+ public Throwable getException() {
return exception;
}
- private void feed()
- throws IOException
- {
+ private void feed() throws IOException {
boolean flush = false;
int data = input.read();
- while ( !isDone() && data != -1 )
- {
- synchronized ( output )
- {
- if ( !isDisabled() )
- {
- output.write( data );
+ while (!isDone() && data != -1) {
+ synchronized (output) {
+ if (!isDisabled()) {
+ output.write(data);
flush = true;
}
@@ -148,10 +118,8 @@ private void feed()
}
}
- if ( flush )
- {
+ if (flush) {
output.flush();
}
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/StreamPumper.java b/src/main/java/org/codehaus/plexus/util/cli/StreamPumper.java
index 12126e88..9c4865ff 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/StreamPumper.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/StreamPumper.java
@@ -84,9 +84,7 @@
*
* @since June 11, 2001
*/
-public class StreamPumper
- extends AbstractStreamHandler
-{
+public class StreamPumper extends AbstractStreamHandler {
private final BufferedReader in;
private final StreamConsumer consumer;
@@ -97,93 +95,68 @@ public class StreamPumper
private static final int SIZE = 1024;
- public StreamPumper( InputStream in )
- {
- this( in, (StreamConsumer) null );
+ public StreamPumper(InputStream in) {
+ this(in, (StreamConsumer) null);
}
- public StreamPumper( InputStream in, StreamConsumer consumer )
- {
- this( in, null, consumer );
+ public StreamPumper(InputStream in, StreamConsumer consumer) {
+ this(in, null, consumer);
}
- public StreamPumper( InputStream in, PrintWriter writer )
- {
- this( in, writer, null );
+ public StreamPumper(InputStream in, PrintWriter writer) {
+ this(in, writer, null);
}
- public StreamPumper( InputStream in, PrintWriter writer, StreamConsumer consumer )
- {
+ public StreamPumper(InputStream in, PrintWriter writer, StreamConsumer consumer) {
super();
- this.in = new BufferedReader( new InputStreamReader( in ), SIZE );
+ this.in = new BufferedReader(new InputStreamReader(in), SIZE);
this.out = writer;
this.consumer = consumer;
}
@Override
- public void run()
- {
+ public void run() {
boolean outError = out != null ? out.checkError() : false;
- try
- {
- for ( String line = in.readLine(); line != null; line = in.readLine() )
- {
- try
- {
- if ( exception == null && consumer != null && !isDisabled() )
- {
- consumer.consumeLine( line );
+ try {
+ for (String line = in.readLine(); line != null; line = in.readLine()) {
+ try {
+ if (exception == null && consumer != null && !isDisabled()) {
+ consumer.consumeLine(line);
}
- }
- catch ( Exception t )
- {
+ } catch (Exception t) {
exception = t;
}
- if ( out != null && !outError )
- {
- out.println( line );
+ if (out != null && !outError) {
+ out.println(line);
out.flush();
- if ( out.checkError() )
- {
+ if (out.checkError()) {
outError = true;
- try
- {
+ try {
// Thrown to fill in stack trace elements.
- throw new IOException( String.format( "Failure printing line '%s'.", line ) );
- }
- catch ( final IOException e )
- {
+ throw new IOException(String.format("Failure printing line '%s'.", line));
+ } catch (final IOException e) {
exception = e;
}
}
}
}
- }
- catch ( IOException e )
- {
+ } catch (IOException e) {
exception = e;
- }
- finally
- {
- try
- {
+ } finally {
+ try {
in.close();
- }
- catch ( final IOException e2 )
- {
- if ( exception == null )
- {
+ } catch (final IOException e2) {
+ if (exception == null) {
exception = e2;
}
}
- synchronized ( this )
- {
+ synchronized (this) {
setDone();
this.notifyAll();
@@ -191,50 +164,37 @@ public void run()
}
}
- public void flush()
- {
- if ( out != null )
- {
+ public void flush() {
+ if (out != null) {
out.flush();
- if ( out.checkError() && exception == null )
- {
- try
- {
+ if (out.checkError() && exception == null) {
+ try {
// Thrown to fill in stack trace elements.
- throw new IOException( "Failure flushing output." );
- }
- catch ( final IOException e )
- {
+ throw new IOException("Failure flushing output.");
+ } catch (final IOException e) {
exception = e;
}
}
}
}
- public void close()
- {
- if ( out != null )
- {
+ public void close() {
+ if (out != null) {
out.close();
- if ( out.checkError() && exception == null )
- {
- try
- {
+ if (out.checkError() && exception == null) {
+ try {
// Thrown to fill in stack trace elements.
- throw new IOException( "Failure closing output." );
- }
- catch ( final IOException e )
- {
+ throw new IOException("Failure closing output.");
+ } catch (final IOException e) {
exception = e;
}
}
}
}
- public Exception getException()
- {
+ public Exception getException() {
return exception;
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/WriterStreamConsumer.java b/src/main/java/org/codehaus/plexus/util/cli/WriterStreamConsumer.java
index ed24136e..b8e6cc2e 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/WriterStreamConsumer.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/WriterStreamConsumer.java
@@ -23,20 +23,16 @@
* @author Jason van Zyl
*
*/
-public class WriterStreamConsumer
- implements StreamConsumer
-{
+public class WriterStreamConsumer implements StreamConsumer {
private PrintWriter writer;
- public WriterStreamConsumer( Writer writer )
- {
- this.writer = new PrintWriter( writer );
+ public WriterStreamConsumer(Writer writer) {
+ this.writer = new PrintWriter(writer);
}
@Override
- public void consumeLine( String line )
- {
- writer.println( line );
+ public void consumeLine(String line) {
+ writer.println(line);
writer.flush();
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/shell/BourneShell.java b/src/main/java/org/codehaus/plexus/util/cli/shell/BourneShell.java
index 089bc6fd..912a431b 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/shell/BourneShell.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/shell/BourneShell.java
@@ -16,83 +16,71 @@
* limitations under the License.
*/
-import org.codehaus.plexus.util.Os;
-
import java.util.ArrayList;
import java.util.List;
+import org.codehaus.plexus.util.Os;
+
/**
* @author Jason van Zyl
*
*/
-public class BourneShell
- extends Shell
-{
+public class BourneShell extends Shell {
- public BourneShell()
- {
- this( false );
+ public BourneShell() {
+ this(false);
}
- public BourneShell( boolean isLoginShell )
- {
- setUnconditionalQuoting( true );
- setShellCommand( "/bin/sh" );
- setArgumentQuoteDelimiter( '\'' );
- setExecutableQuoteDelimiter( '\'' );
- setSingleQuotedArgumentEscaped( true );
- setSingleQuotedExecutableEscaped( false );
- setQuotedExecutableEnabled( true );
- setArgumentEscapePattern( "'\\%s'" );
-
- if ( isLoginShell )
- {
- addShellArg( "-l" );
+ public BourneShell(boolean isLoginShell) {
+ setUnconditionalQuoting(true);
+ setShellCommand("/bin/sh");
+ setArgumentQuoteDelimiter('\'');
+ setExecutableQuoteDelimiter('\'');
+ setSingleQuotedArgumentEscaped(true);
+ setSingleQuotedExecutableEscaped(false);
+ setQuotedExecutableEnabled(true);
+ setArgumentEscapePattern("'\\%s'");
+
+ if (isLoginShell) {
+ addShellArg("-l");
}
}
/** {@inheritDoc} */
@Override
- public String getExecutable()
- {
- if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
- {
+ public String getExecutable() {
+ if (Os.isFamily(Os.FAMILY_WINDOWS)) {
return super.getExecutable();
}
- return quoteOneItem( super.getOriginalExecutable(), true );
+ return quoteOneItem(super.getOriginalExecutable(), true);
}
@Override
- public List getShellArgsList()
- {
+ public List getShellArgsList() {
List shellArgs = new ArrayList();
List existingShellArgs = super.getShellArgsList();
- if ( ( existingShellArgs != null ) && !existingShellArgs.isEmpty() )
- {
- shellArgs.addAll( existingShellArgs );
+ if ((existingShellArgs != null) && !existingShellArgs.isEmpty()) {
+ shellArgs.addAll(existingShellArgs);
}
- shellArgs.add( "-c" );
+ shellArgs.add("-c");
return shellArgs;
}
@Override
- public String[] getShellArgs()
- {
+ public String[] getShellArgs() {
String[] shellArgs = super.getShellArgs();
- if ( shellArgs == null )
- {
+ if (shellArgs == null) {
shellArgs = new String[0];
}
- if ( ( shellArgs.length > 0 ) && !shellArgs[shellArgs.length - 1].equals( "-c" ) )
- {
+ if ((shellArgs.length > 0) && !shellArgs[shellArgs.length - 1].equals("-c")) {
String[] newArgs = new String[shellArgs.length + 1];
- System.arraycopy( shellArgs, 0, newArgs, 0, shellArgs.length );
+ System.arraycopy(shellArgs, 0, newArgs, 0, shellArgs.length);
newArgs[shellArgs.length] = "-c";
shellArgs = newArgs;
@@ -102,19 +90,17 @@ public String[] getShellArgs()
}
@Override
- protected String getExecutionPreamble()
- {
- if ( getWorkingDirectoryAsString() == null )
- {
+ protected String getExecutionPreamble() {
+ if (getWorkingDirectoryAsString() == null) {
return null;
}
String dir = getWorkingDirectoryAsString();
StringBuilder sb = new StringBuilder();
- sb.append( "cd " );
+ sb.append("cd ");
- sb.append( quoteOneItem( dir, false ) );
- sb.append( " && " );
+ sb.append(quoteOneItem(dir, false));
+ sb.append(" && ");
return sb.toString();
}
@@ -139,17 +125,15 @@ protected String getExecutionPreamble()
* @return the path unified correctly for the Bourne shell.
*/
@Override
- protected String quoteOneItem( String path, boolean isExecutable )
- {
- if ( path == null )
- {
+ protected String quoteOneItem(String path, boolean isExecutable) {
+ if (path == null) {
return null;
}
StringBuilder sb = new StringBuilder();
- sb.append( "'" );
- sb.append( path.replace( "'", "'\"'\"'" ) );
- sb.append( "'" );
+ sb.append("'");
+ sb.append(path.replace("'", "'\"'\"'"));
+ sb.append("'");
return sb.toString();
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/shell/CmdShell.java b/src/main/java/org/codehaus/plexus/util/cli/shell/CmdShell.java
index aa0af43a..47cc5154 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/shell/CmdShell.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/shell/CmdShell.java
@@ -28,14 +28,11 @@
* @since 1.2
*
*/
-public class CmdShell
- extends Shell
-{
- public CmdShell()
- {
- setShellCommand( "cmd.exe" );
- setQuotedExecutableEnabled( true );
- setShellArgs( new String[] { "/X", "/C" } );
+public class CmdShell extends Shell {
+ public CmdShell() {
+ setShellCommand("cmd.exe");
+ setQuotedExecutableEnabled(true);
+ setShellArgs(new String[] {"/X", "/C"});
}
/**
@@ -77,13 +74,12 @@ public CmdShell()
*
*/
@Override
- public List getCommandLine( String executable, String[] arguments )
- {
+ public List getCommandLine(String executable, String[] arguments) {
StringBuilder sb = new StringBuilder();
- sb.append( "\"" );
- sb.append( super.getCommandLine( executable, arguments ).get( 0 ) );
- sb.append( "\"" );
+ sb.append("\"");
+ sb.append(super.getCommandLine(executable, arguments).get(0));
+ sb.append("\"");
- return Arrays.asList( new String[] { sb.toString() } );
+ return Arrays.asList(new String[] {sb.toString()});
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/shell/CommandShell.java b/src/main/java/org/codehaus/plexus/util/cli/shell/CommandShell.java
index 4aa4c2af..947045f9 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/shell/CommandShell.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/shell/CommandShell.java
@@ -25,13 +25,9 @@
* @since 1.2
*
*/
-public class CommandShell
- extends Shell
-{
- public CommandShell()
- {
- setShellCommand( "command.com" );
- setShellArgs( new String[] { "/C" } );
+public class CommandShell extends Shell {
+ public CommandShell() {
+ setShellCommand("command.com");
+ setShellArgs(new String[] {"/C"});
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/cli/shell/Shell.java b/src/main/java/org/codehaus/plexus/util/cli/shell/Shell.java
index c3c911dd..03a6065c 100644
--- a/src/main/java/org/codehaus/plexus/util/cli/shell/Shell.java
+++ b/src/main/java/org/codehaus/plexus/util/cli/shell/Shell.java
@@ -16,13 +16,13 @@
* limitations under the License.
*/
-import org.codehaus.plexus.util.StringUtils;
-
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import org.codehaus.plexus.util.StringUtils;
+
/**
* Class that abstracts the Shell functionality, with subclasses for shells that behave particularly, like
*
@@ -34,10 +34,8 @@
* @since 1.2
*
*/
-public class Shell
- implements Cloneable
-{
- private static final char[] DEFAULT_QUOTING_TRIGGER_CHARS = { ' ' };
+public class Shell implements Cloneable {
+ private static final char[] DEFAULT_QUOTING_TRIGGER_CHARS = {' '};
private String shellCommand;
@@ -72,8 +70,7 @@ public class Shell
*
* @param unconditionallyQuote see name
*/
- public void setUnconditionalQuoting( boolean unconditionallyQuote )
- {
+ public void setUnconditionalQuoting(boolean unconditionallyQuote) {
this.unconditionallyQuote = unconditionallyQuote;
}
@@ -82,8 +79,7 @@ public void setUnconditionalQuoting( boolean unconditionallyQuote )
*
* @param shellCommand see name
*/
- public void setShellCommand( String shellCommand )
- {
+ public void setShellCommand(String shellCommand) {
this.shellCommand = shellCommand;
}
@@ -92,8 +88,7 @@ public void setShellCommand( String shellCommand )
*
* @return the command
*/
- public String getShellCommand()
- {
+ public String getShellCommand() {
return shellCommand;
}
@@ -102,24 +97,19 @@ public String getShellCommand()
*
* @param shellArgs see name
*/
- public void setShellArgs( String[] shellArgs )
- {
+ public void setShellArgs(String[] shellArgs) {
this.shellArgs.clear();
- this.shellArgs.addAll( Arrays.asList( shellArgs ) );
+ this.shellArgs.addAll(Arrays.asList(shellArgs));
}
/**
* @return the shell arguments
*/
- public String[] getShellArgs()
- {
- if ( ( shellArgs == null ) || shellArgs.isEmpty() )
- {
+ public String[] getShellArgs() {
+ if ((shellArgs == null) || shellArgs.isEmpty()) {
return null;
- }
- else
- {
- return shellArgs.toArray( new String[0] );
+ } else {
+ return shellArgs.toArray(new String[0]);
}
}
@@ -130,139 +120,115 @@ public String[] getShellArgs()
* @param arguments arguments for the executable, not the shell
* @return List with one String object with executable and arguments quoted as needed
*/
- public List getCommandLine( String executable, String[] arguments )
- {
- return getRawCommandLine( executable, arguments );
+ public List getCommandLine(String executable, String[] arguments) {
+ return getRawCommandLine(executable, arguments);
}
- protected String quoteOneItem( String inputString, boolean isExecutable )
- {
- char[] escapeChars = getEscapeChars( isSingleQuotedExecutableEscaped(), isDoubleQuotedExecutableEscaped() );
- return StringUtils.quoteAndEscape( inputString,
- isExecutable ? getExecutableQuoteDelimiter() : getArgumentQuoteDelimiter(),
- escapeChars, getQuotingTriggerChars(), '\\', unconditionallyQuote );
+ protected String quoteOneItem(String inputString, boolean isExecutable) {
+ char[] escapeChars = getEscapeChars(isSingleQuotedExecutableEscaped(), isDoubleQuotedExecutableEscaped());
+ return StringUtils.quoteAndEscape(
+ inputString,
+ isExecutable ? getExecutableQuoteDelimiter() : getArgumentQuoteDelimiter(),
+ escapeChars,
+ getQuotingTriggerChars(),
+ '\\',
+ unconditionallyQuote);
}
- protected List getRawCommandLine( String executable, String[] arguments )
- {
+ protected List getRawCommandLine(String executable, String[] arguments) {
List commandLine = new ArrayList();
StringBuilder sb = new StringBuilder();
- if ( executable != null )
- {
+ if (executable != null) {
String preamble = getExecutionPreamble();
- if ( preamble != null )
- {
- sb.append( preamble );
+ if (preamble != null) {
+ sb.append(preamble);
}
- if ( isQuotedExecutableEnabled() )
- {
- sb.append( quoteOneItem( getOriginalExecutable(), true ) );
- }
- else
- {
- sb.append( getExecutable() );
+ if (isQuotedExecutableEnabled()) {
+ sb.append(quoteOneItem(getOriginalExecutable(), true));
+ } else {
+ sb.append(getExecutable());
}
}
- for ( String argument : arguments )
- {
- if ( sb.length() > 0 )
- {
- sb.append( " " );
+ for (String argument : arguments) {
+ if (sb.length() > 0) {
+ sb.append(" ");
}
- if ( isQuotedArgumentsEnabled() )
- {
- sb.append( quoteOneItem( argument, false ) );
- }
- else
- {
- sb.append( argument );
+ if (isQuotedArgumentsEnabled()) {
+ sb.append(quoteOneItem(argument, false));
+ } else {
+ sb.append(argument);
}
}
- commandLine.add( sb.toString() );
+ commandLine.add(sb.toString());
return commandLine;
}
- protected char[] getQuotingTriggerChars()
- {
+ protected char[] getQuotingTriggerChars() {
return DEFAULT_QUOTING_TRIGGER_CHARS;
}
- protected String getExecutionPreamble()
- {
+ protected String getExecutionPreamble() {
return null;
}
- protected char[] getEscapeChars( boolean includeSingleQuote, boolean includeDoubleQuote )
- {
- StringBuilder buf = new StringBuilder( 2 );
- if ( includeSingleQuote )
- {
- buf.append( '\'' );
+ protected char[] getEscapeChars(boolean includeSingleQuote, boolean includeDoubleQuote) {
+ StringBuilder buf = new StringBuilder(2);
+ if (includeSingleQuote) {
+ buf.append('\'');
}
- if ( includeDoubleQuote )
- {
- buf.append( '\"' );
+ if (includeDoubleQuote) {
+ buf.append('\"');
}
char[] result = new char[buf.length()];
- buf.getChars( 0, buf.length(), result, 0 );
+ buf.getChars(0, buf.length(), result, 0);
return result;
}
- protected boolean isDoubleQuotedArgumentEscaped()
- {
+ protected boolean isDoubleQuotedArgumentEscaped() {
return doubleQuotedArgumentEscaped;
}
- protected boolean isSingleQuotedArgumentEscaped()
- {
+ protected boolean isSingleQuotedArgumentEscaped() {
return singleQuotedArgumentEscaped;
}
- protected boolean isDoubleQuotedExecutableEscaped()
- {
+ protected boolean isDoubleQuotedExecutableEscaped() {
return doubleQuotedExecutableEscaped;
}
- protected boolean isSingleQuotedExecutableEscaped()
- {
+ protected boolean isSingleQuotedExecutableEscaped() {
return singleQuotedExecutableEscaped;
}
- protected void setArgumentQuoteDelimiter( char argQuoteDelimiter )
- {
+ protected void setArgumentQuoteDelimiter(char argQuoteDelimiter) {
this.argQuoteDelimiter = argQuoteDelimiter;
}
- protected char getArgumentQuoteDelimiter()
- {
+ protected char getArgumentQuoteDelimiter() {
return argQuoteDelimiter;
}
- protected void setExecutableQuoteDelimiter( char exeQuoteDelimiter )
- {
+ protected void setExecutableQuoteDelimiter(char exeQuoteDelimiter) {
this.exeQuoteDelimiter = exeQuoteDelimiter;
}
- protected char getExecutableQuoteDelimiter()
- {
+ protected char getExecutableQuoteDelimiter() {
return exeQuoteDelimiter;
}
- protected void setArgumentEscapePattern( String argumentEscapePattern )
- {
+ protected void setArgumentEscapePattern(String argumentEscapePattern) {
this.argumentEscapePattern = argumentEscapePattern;
}
- protected String getArgumentEscapePattern()
- {
+ protected String getArgumentEscapePattern() {
return argumentEscapePattern;
}
@@ -274,54 +240,44 @@ protected String getArgumentEscapePattern()
* @return List of String objects, whose array version is suitable to be used as argument of
* Runtime.getRuntime().exec()
*/
- public List getShellCommandLine( String[] arguments )
- {
+ public List getShellCommandLine(String[] arguments) {
List commandLine = new ArrayList();
- if ( getShellCommand() != null )
- {
- commandLine.add( getShellCommand() );
+ if (getShellCommand() != null) {
+ commandLine.add(getShellCommand());
}
- if ( getShellArgs() != null )
- {
- commandLine.addAll( getShellArgsList() );
+ if (getShellArgs() != null) {
+ commandLine.addAll(getShellArgsList());
}
- commandLine.addAll( getCommandLine( getOriginalExecutable(), arguments ) );
+ commandLine.addAll(getCommandLine(getOriginalExecutable(), arguments));
return commandLine;
-
}
- public List getShellArgsList()
- {
+ public List getShellArgsList() {
return shellArgs;
}
- public void addShellArg( String arg )
- {
- shellArgs.add( arg );
+ public void addShellArg(String arg) {
+ shellArgs.add(arg);
}
- public void setQuotedArgumentsEnabled( boolean quotedArgumentsEnabled )
- {
+ public void setQuotedArgumentsEnabled(boolean quotedArgumentsEnabled) {
this.quotedArgumentsEnabled = quotedArgumentsEnabled;
}
- public boolean isQuotedArgumentsEnabled()
- {
+ public boolean isQuotedArgumentsEnabled() {
return quotedArgumentsEnabled;
}
- public void setQuotedExecutableEnabled( boolean quotedExecutableEnabled )
- {
+ public void setQuotedExecutableEnabled(boolean quotedExecutableEnabled) {
this.quotedExecutableEnabled = quotedExecutableEnabled;
}
- public boolean isQuotedExecutableEnabled()
- {
+ public boolean isQuotedExecutableEnabled() {
return quotedExecutableEnabled;
}
@@ -329,27 +285,22 @@ public boolean isQuotedExecutableEnabled()
*
* @param executable Sets the executable to run.
*/
- public void setExecutable( String executable )
- {
- if ( ( executable == null ) || ( executable.length() == 0 ) )
- {
+ public void setExecutable(String executable) {
+ if ((executable == null) || (executable.length() == 0)) {
return;
}
- this.executable = executable.replace( '/', File.separatorChar ).replace( '\\', File.separatorChar );
+ this.executable = executable.replace('/', File.separatorChar).replace('\\', File.separatorChar);
}
- public String getExecutable()
- {
+ public String getExecutable() {
return executable;
}
/**
* @param path Sets execution directory.
*/
- public void setWorkingDirectory( String path )
- {
- if ( path != null )
- {
+ public void setWorkingDirectory(String path) {
+ if (path != null) {
workingDir = path;
}
}
@@ -357,66 +308,54 @@ public void setWorkingDirectory( String path )
/**
* @param workingDir Sets execution directory.
*/
- public void setWorkingDirectory( File workingDir )
- {
- if ( workingDir != null )
- {
+ public void setWorkingDirectory(File workingDir) {
+ if (workingDir != null) {
this.workingDir = workingDir.getAbsolutePath();
}
}
- public File getWorkingDirectory()
- {
- return workingDir == null ? null : new File( workingDir );
+ public File getWorkingDirectory() {
+ return workingDir == null ? null : new File(workingDir);
}
- public String getWorkingDirectoryAsString()
- {
+ public String getWorkingDirectoryAsString() {
return workingDir;
}
- public void clearArguments()
- {
+ public void clearArguments() {
shellArgs.clear();
}
@Override
- public Object clone()
- {
+ public Object clone() {
Shell shell = new Shell();
- shell.setExecutable( getExecutable() );
- shell.setWorkingDirectory( getWorkingDirectory() );
- shell.setShellArgs( getShellArgs() );
+ shell.setExecutable(getExecutable());
+ shell.setWorkingDirectory(getWorkingDirectory());
+ shell.setShellArgs(getShellArgs());
return shell;
}
- public String getOriginalExecutable()
- {
+ public String getOriginalExecutable() {
return executable;
}
- public List getOriginalCommandLine( String executable, String[] arguments )
- {
- return getRawCommandLine( executable, arguments );
+ public List getOriginalCommandLine(String executable, String[] arguments) {
+ return getRawCommandLine(executable, arguments);
}
- protected void setDoubleQuotedArgumentEscaped( boolean doubleQuotedArgumentEscaped )
- {
+ protected void setDoubleQuotedArgumentEscaped(boolean doubleQuotedArgumentEscaped) {
this.doubleQuotedArgumentEscaped = doubleQuotedArgumentEscaped;
}
- protected void setDoubleQuotedExecutableEscaped( boolean doubleQuotedExecutableEscaped )
- {
+ protected void setDoubleQuotedExecutableEscaped(boolean doubleQuotedExecutableEscaped) {
this.doubleQuotedExecutableEscaped = doubleQuotedExecutableEscaped;
}
- protected void setSingleQuotedArgumentEscaped( boolean singleQuotedArgumentEscaped )
- {
+ protected void setSingleQuotedArgumentEscaped(boolean singleQuotedArgumentEscaped) {
this.singleQuotedArgumentEscaped = singleQuotedArgumentEscaped;
}
- protected void setSingleQuotedExecutableEscaped( boolean singleQuotedExecutableEscaped )
- {
+ protected void setSingleQuotedExecutableEscaped(boolean singleQuotedExecutableEscaped) {
this.singleQuotedExecutableEscaped = singleQuotedExecutableEscaped;
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/dag/CycleDetectedException.java b/src/main/java/org/codehaus/plexus/util/dag/CycleDetectedException.java
index e350af9d..c4b99e44 100644
--- a/src/main/java/org/codehaus/plexus/util/dag/CycleDetectedException.java
+++ b/src/main/java/org/codehaus/plexus/util/dag/CycleDetectedException.java
@@ -19,43 +19,34 @@
import java.util.Iterator;
import java.util.List;
-public class CycleDetectedException
- extends Exception
-{
+public class CycleDetectedException extends Exception {
private List cycle;
- public CycleDetectedException( final String message, final List cycle )
- {
- super( message );
+ public CycleDetectedException(final String message, final List cycle) {
+ super(message);
this.cycle = cycle;
-
}
- public List getCycle()
- {
+ public List getCycle() {
return cycle;
}
- public String cycleToString()
- {
+ public String cycleToString() {
final StringBuilder buffer = new StringBuilder();
- for ( Iterator iterator = cycle.iterator(); iterator.hasNext(); )
- {
- buffer.append( iterator.next() );
+ for (Iterator iterator = cycle.iterator(); iterator.hasNext(); ) {
+ buffer.append(iterator.next());
- if ( iterator.hasNext() )
- {
- buffer.append( " --> " );
+ if (iterator.hasNext()) {
+ buffer.append(" --> ");
}
}
return buffer.toString();
}
@Override
- public String getMessage()
- {
+ public String getMessage() {
return super.getMessage() + " " + cycleToString();
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/dag/CycleDetector.java b/src/main/java/org/codehaus/plexus/util/dag/CycleDetector.java
index 6f810043..98c2f451 100644
--- a/src/main/java/org/codehaus/plexus/util/dag/CycleDetector.java
+++ b/src/main/java/org/codehaus/plexus/util/dag/CycleDetector.java
@@ -26,31 +26,26 @@
* @author Michal Maczka
*
*/
-public class CycleDetector
-{
+public class CycleDetector {
- private final static Integer NOT_VISITED = 0;
+ private static final Integer NOT_VISITED = 0;
- private final static Integer VISITING = 1;
+ private static final Integer VISITING = 1;
- private final static Integer VISITED = 2;
+ private static final Integer VISITED = 2;
- public static List hasCycle( final DAG graph )
- {
+ public static List hasCycle(final DAG graph) {
final List vertices = graph.getVertices();
final Map vertexStateMap = new HashMap<>();
List retValue = null;
- for ( Vertex vertex : vertices )
- {
- if ( isNotVisited( vertex, vertexStateMap ) )
- {
- retValue = introducesCycle( vertex, vertexStateMap );
+ for (Vertex vertex : vertices) {
+ if (isNotVisited(vertex, vertexStateMap)) {
+ retValue = introducesCycle(vertex, vertexStateMap);
- if ( retValue != null )
- {
+ if (retValue != null) {
break;
}
}
@@ -67,14 +62,12 @@ public static List hasCycle( final DAG graph )
* @param vertexStateMap the vertex Map
* @return the found cycle
*/
- public static List introducesCycle( final Vertex vertex, final Map vertexStateMap )
- {
+ public static List introducesCycle(final Vertex vertex, final Map vertexStateMap) {
final LinkedList cycleStack = new LinkedList<>();
- final boolean hasCycle = dfsVisit( vertex, cycleStack, vertexStateMap );
+ final boolean hasCycle = dfsVisit(vertex, cycleStack, vertexStateMap);
- if ( hasCycle )
- {
+ if (hasCycle) {
// we have a situation like: [b, a, c, d, b, f, g, h].
// Label of Vertex which introduced the cycle is at the first position in the list
// We have to find second occurrence of this label and use its position in the list
@@ -83,11 +76,11 @@ public static List introducesCycle( final Vertex vertex, final Map cycle = cycleStack.subList( 0, pos + 1 );
+ final List cycle = cycleStack.subList(0, pos + 1);
- Collections.reverse( cycle );
+ Collections.reverse(cycle);
return cycle;
}
@@ -95,57 +88,47 @@ public static List introducesCycle( final Vertex vertex, final Map introducesCycle( final Vertex vertex )
- {
+ public static List introducesCycle(final Vertex vertex) {
final Map vertexStateMap = new HashMap<>();
- return introducesCycle( vertex, vertexStateMap );
+ return introducesCycle(vertex, vertexStateMap);
}
- private static boolean isNotVisited( final Vertex vertex, final Map vertexStateMap )
- {
- final Integer state = vertexStateMap.get( vertex );
+ private static boolean isNotVisited(final Vertex vertex, final Map vertexStateMap) {
+ final Integer state = vertexStateMap.get(vertex);
- return ( state == null ) || NOT_VISITED.equals( state );
+ return (state == null) || NOT_VISITED.equals(state);
}
- private static boolean isVisiting( final Vertex vertex, final Map vertexStateMap )
- {
- final Integer state = vertexStateMap.get( vertex );
+ private static boolean isVisiting(final Vertex vertex, final Map vertexStateMap) {
+ final Integer state = vertexStateMap.get(vertex);
- return VISITING.equals( state );
+ return VISITING.equals(state);
}
- private static boolean dfsVisit( final Vertex vertex, final LinkedList cycle,
- final Map vertexStateMap )
- {
- cycle.addFirst( vertex.getLabel() );
+ private static boolean dfsVisit(
+ final Vertex vertex, final LinkedList cycle, final Map vertexStateMap) {
+ cycle.addFirst(vertex.getLabel());
- vertexStateMap.put( vertex, VISITING );
+ vertexStateMap.put(vertex, VISITING);
- for ( Vertex v : vertex.getChildren() )
- {
- if ( isNotVisited( v, vertexStateMap ) )
- {
- final boolean hasCycle = dfsVisit( v, cycle, vertexStateMap );
+ for (Vertex v : vertex.getChildren()) {
+ if (isNotVisited(v, vertexStateMap)) {
+ final boolean hasCycle = dfsVisit(v, cycle, vertexStateMap);
- if ( hasCycle )
- {
+ if (hasCycle) {
return true;
}
- }
- else if ( isVisiting( v, vertexStateMap ) )
- {
- cycle.addFirst( v.getLabel() );
+ } else if (isVisiting(v, vertexStateMap)) {
+ cycle.addFirst(v.getLabel());
return true;
}
}
- vertexStateMap.put( vertex, VISITED );
+ vertexStateMap.put(vertex, VISITED);
cycle.removeFirst();
return false;
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/dag/DAG.java b/src/main/java/org/codehaus/plexus/util/dag/DAG.java
index 4d0f9a45..a652fcd0 100644
--- a/src/main/java/org/codehaus/plexus/util/dag/DAG.java
+++ b/src/main/java/org/codehaus/plexus/util/dag/DAG.java
@@ -30,9 +30,7 @@
*
* TODO this class should be renamed from DAG to Dag
*/
-public class DAG
- implements Cloneable, Serializable
-{
+public class DAG implements Cloneable, Serializable {
// ------------------------------------------------------------
// Fields
// ------------------------------------------------------------
@@ -56,8 +54,7 @@ public class DAG
/**
*
*/
- public DAG()
- {
+ public DAG() {
super();
}
@@ -68,8 +65,7 @@ public DAG()
/**
* @return the vertices
*/
- public List getVertices()
- {
+ public List getVertices() {
return vertexList;
}
@@ -78,13 +74,11 @@ public List getVertices()
* @return the vertices
*/
@Deprecated
- public List getVerticies()
- {
+ public List getVerticies() {
return getVertices();
}
- public Set getLabels()
- {
+ public Set getLabels() {
return vertexMap.keySet();
}
@@ -99,101 +93,86 @@ public Set getLabels()
* @return New vertex if vertex of given label was not present in the DAG or existing vertex if vertex of given
* label was already added to DAG
*/
- public Vertex addVertex( final String label )
- {
+ public Vertex addVertex(final String label) {
Vertex retValue = null;
// check if vertex is already in DAG
- if ( vertexMap.containsKey( label ) )
- {
- retValue = vertexMap.get( label );
- }
- else
- {
- retValue = new Vertex( label );
+ if (vertexMap.containsKey(label)) {
+ retValue = vertexMap.get(label);
+ } else {
+ retValue = new Vertex(label);
- vertexMap.put( label, retValue );
+ vertexMap.put(label, retValue);
- vertexList.add( retValue );
+ vertexList.add(retValue);
}
return retValue;
}
- public void addEdge( final String from, final String to )
- throws CycleDetectedException
- {
- final Vertex v1 = addVertex( from );
+ public void addEdge(final String from, final String to) throws CycleDetectedException {
+ final Vertex v1 = addVertex(from);
- final Vertex v2 = addVertex( to );
+ final Vertex v2 = addVertex(to);
- addEdge( v1, v2 );
+ addEdge(v1, v2);
}
- public void addEdge( final Vertex from, final Vertex to )
- throws CycleDetectedException
- {
+ public void addEdge(final Vertex from, final Vertex to) throws CycleDetectedException {
- from.addEdgeTo( to );
+ from.addEdgeTo(to);
- to.addEdgeFrom( from );
+ to.addEdgeFrom(from);
- final List cycle = CycleDetector.introducesCycle( to );
+ final List cycle = CycleDetector.introducesCycle(to);
- if ( cycle != null )
- {
+ if (cycle != null) {
// remove edge which introduced cycle
- removeEdge( from, to );
+ removeEdge(from, to);
final String msg = "Edge between '" + from + "' and '" + to + "' introduces to cycle in the graph";
- throw new CycleDetectedException( msg, cycle );
+ throw new CycleDetectedException(msg, cycle);
}
}
- public void removeEdge( final String from, final String to )
- {
- final Vertex v1 = addVertex( from );
+ public void removeEdge(final String from, final String to) {
+ final Vertex v1 = addVertex(from);
- final Vertex v2 = addVertex( to );
+ final Vertex v2 = addVertex(to);
- removeEdge( v1, v2 );
+ removeEdge(v1, v2);
}
- public void removeEdge( final Vertex from, final Vertex to )
- {
- from.removeEdgeTo( to );
+ public void removeEdge(final Vertex from, final Vertex to) {
+ from.removeEdgeTo(to);
- to.removeEdgeFrom( from );
+ to.removeEdgeFrom(from);
}
- public Vertex getVertex( final String label )
- {
- final Vertex retValue = vertexMap.get( label );
+ public Vertex getVertex(final String label) {
+ final Vertex retValue = vertexMap.get(label);
return retValue;
}
- public boolean hasEdge( final String label1, final String label2 )
- {
- final Vertex v1 = getVertex( label1 );
+ public boolean hasEdge(final String label1, final String label2) {
+ final Vertex v1 = getVertex(label1);
- final Vertex v2 = getVertex( label2 );
+ final Vertex v2 = getVertex(label2);
- final boolean retValue = v1.getChildren().contains( v2 );
+ final boolean retValue = v1.getChildren().contains(v2);
return retValue;
-
}
/**
* @param label see name
* @return the childs
*/
- public List getChildLabels( final String label )
- {
- final Vertex vertex = getVertex( label );
+ public List getChildLabels(final String label) {
+ final Vertex vertex = getVertex(label);
return vertex.getChildLabels();
}
@@ -202,9 +181,8 @@ public List getChildLabels( final String label )
* @param label see name
* @return the parents
*/
- public List getParentLabels( final String label )
- {
- final Vertex vertex = getVertex( label );
+ public List getParentLabels(final String label) {
+ final Vertex vertex = getVertex(label);
return vertex.getParentLabels();
}
@@ -213,9 +191,7 @@ public List getParentLabels( final String label )
* @see java.lang.Object#clone()
*/
@Override
- public Object clone()
- throws CloneNotSupportedException
- {
+ public Object clone() throws CloneNotSupportedException {
// this is what's failing..
final Object retValue = super.clone();
@@ -227,14 +203,12 @@ public Object clone()
* @param label the label
* @return true
if this vertex is connected with other vertex,false
otherwise
*/
- public boolean isConnected( final String label )
- {
- final Vertex vertex = getVertex( label );
+ public boolean isConnected(final String label) {
+ final Vertex vertex = getVertex(label);
final boolean retValue = vertex.isConnected();
return retValue;
-
}
/**
@@ -244,25 +218,20 @@ public boolean isConnected( final String label )
* @return The list of labels. Returned list contains also the label passed as parameter to this method. This label
* should always be the last item in the list.
*/
- public List getSuccessorLabels( final String label )
- {
- final Vertex vertex = getVertex( label );
+ public List getSuccessorLabels(final String label) {
+ final Vertex vertex = getVertex(label);
final List retValue;
// optimization.
- if ( vertex.isLeaf() )
- {
- retValue = new ArrayList<>( 1 );
+ if (vertex.isLeaf()) {
+ retValue = new ArrayList<>(1);
- retValue.add( label );
- }
- else
- {
- retValue = TopologicalSorter.sort( vertex );
+ retValue.add(label);
+ } else {
+ retValue = TopologicalSorter.sort(vertex);
}
return retValue;
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/dag/TopologicalSorter.java b/src/main/java/org/codehaus/plexus/util/dag/TopologicalSorter.java
index b2736255..da801335 100644
--- a/src/main/java/org/codehaus/plexus/util/dag/TopologicalSorter.java
+++ b/src/main/java/org/codehaus/plexus/util/dag/TopologicalSorter.java
@@ -25,74 +25,63 @@
* @author Michal Maczka
*
*/
-public class TopologicalSorter
-{
+public class TopologicalSorter {
- private final static Integer NOT_VISITED = 0;
+ private static final Integer NOT_VISITED = 0;
- private final static Integer VISITING = 1;
+ private static final Integer VISITING = 1;
- private final static Integer VISITED = 2;
+ private static final Integer VISITED = 2;
/**
* @param graph the graph
* @return List of String (vertex labels)
*/
- public static List sort( final DAG graph )
- {
- return dfs( graph );
+ public static List sort(final DAG graph) {
+ return dfs(graph);
}
- public static List sort( final Vertex vertex )
- {
+ public static List sort(final Vertex vertex) {
// we need to use addFirst method so we will use LinkedList explicitly
final List retValue = new LinkedList<>();
- dfsVisit( vertex, new HashMap(), retValue );
+ dfsVisit(vertex, new HashMap(), retValue);
return retValue;
}
- private static List dfs( final DAG graph )
- {
+ private static List dfs(final DAG graph) {
// we need to use addFirst method so we will use LinkedList explicitly
final List retValue = new LinkedList<>();
final Map vertexStateMap = new HashMap<>();
- for ( Vertex vertex : graph.getVertices() )
- {
- if ( isNotVisited( vertex, vertexStateMap ) )
- {
- dfsVisit( vertex, vertexStateMap, retValue );
+ for (Vertex vertex : graph.getVertices()) {
+ if (isNotVisited(vertex, vertexStateMap)) {
+ dfsVisit(vertex, vertexStateMap, retValue);
}
}
return retValue;
}
- private static boolean isNotVisited( final Vertex vertex, final Map vertexStateMap )
- {
- final Integer state = vertexStateMap.get( vertex );
+ private static boolean isNotVisited(final Vertex vertex, final Map vertexStateMap) {
+ final Integer state = vertexStateMap.get(vertex);
- return ( state == null ) || NOT_VISITED.equals( state );
+ return (state == null) || NOT_VISITED.equals(state);
}
- private static void dfsVisit( final Vertex vertex, final Map vertexStateMap,
- final List list )
- {
- vertexStateMap.put( vertex, VISITING );
+ private static void dfsVisit(
+ final Vertex vertex, final Map vertexStateMap, final List list) {
+ vertexStateMap.put(vertex, VISITING);
- for ( Vertex v : vertex.getChildren() )
- {
- if ( isNotVisited( v, vertexStateMap ) )
- {
- dfsVisit( v, vertexStateMap, list );
+ for (Vertex v : vertex.getChildren()) {
+ if (isNotVisited(v, vertexStateMap)) {
+ dfsVisit(v, vertexStateMap, list);
}
}
- vertexStateMap.put( vertex, VISITED );
+ vertexStateMap.put(vertex, VISITED);
- list.add( vertex.getLabel() );
+ list.add(vertex.getLabel());
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/dag/Vertex.java b/src/main/java/org/codehaus/plexus/util/dag/Vertex.java
index 489b6185..bb3cfcc1 100644
--- a/src/main/java/org/codehaus/plexus/util/dag/Vertex.java
+++ b/src/main/java/org/codehaus/plexus/util/dag/Vertex.java
@@ -24,9 +24,7 @@
* @author Michal Maczka
*
*/
-public class Vertex
- implements Cloneable, Serializable
-{
+public class Vertex implements Cloneable, Serializable {
// ------------------------------------------------------------
// Fields
// ------------------------------------------------------------
@@ -40,8 +38,7 @@ public class Vertex
// Constructors
// ------------------------------------------------------------
- public Vertex( final String label )
- {
+ public Vertex(final String label) {
this.label = label;
}
@@ -49,33 +46,27 @@ public Vertex( final String label )
// Accessors
// ------------------------------------------------------------
- public String getLabel()
- {
+ public String getLabel() {
return label;
}
- public void addEdgeTo( final Vertex vertex )
- {
- children.add( vertex );
+ public void addEdgeTo(final Vertex vertex) {
+ children.add(vertex);
}
- public void removeEdgeTo( final Vertex vertex )
- {
- children.remove( vertex );
+ public void removeEdgeTo(final Vertex vertex) {
+ children.remove(vertex);
}
- public void addEdgeFrom( final Vertex vertex )
- {
- parents.add( vertex );
+ public void addEdgeFrom(final Vertex vertex) {
+ parents.add(vertex);
}
- public void removeEdgeFrom( final Vertex vertex )
- {
- parents.remove( vertex );
+ public void removeEdgeFrom(final Vertex vertex) {
+ parents.remove(vertex);
}
- public List getChildren()
- {
+ public List getChildren() {
return children;
}
@@ -84,13 +75,11 @@ public List getChildren()
*
* @return the labels used by the most direct children.
*/
- public List getChildLabels()
- {
- final List retValue = new ArrayList<>( children.size() );
+ public List getChildLabels() {
+ final List retValue = new ArrayList<>(children.size());
- for ( Vertex vertex : children )
- {
- retValue.add( vertex.getLabel() );
+ for (Vertex vertex : children) {
+ retValue.add(vertex.getLabel());
}
return retValue;
}
@@ -100,8 +89,7 @@ public List getChildLabels()
*
* @return list of parents
*/
- public List getParents()
- {
+ public List getParents() {
return parents;
}
@@ -110,13 +98,11 @@ public List getParents()
*
* @return the labels used parents
*/
- public List getParentLabels()
- {
- final List retValue = new ArrayList<>( parents.size() );
+ public List getParentLabels() {
+ final List retValue = new ArrayList<>(parents.size());
- for ( Vertex vertex : parents )
- {
- retValue.add( vertex.getLabel() );
+ for (Vertex vertex : parents) {
+ retValue.add(vertex.getLabel());
}
return retValue;
}
@@ -126,8 +112,7 @@ public List getParentLabels()
*
* @return true
if this vertex has no child, false
otherwise
*/
- public boolean isLeaf()
- {
+ public boolean isLeaf() {
return children.size() == 0;
}
@@ -136,8 +121,7 @@ public boolean isLeaf()
*
* @return true
if this vertex has no parent, false
otherwise
*/
- public boolean isRoot()
- {
+ public boolean isRoot() {
return parents.size() == 0;
}
@@ -146,15 +130,12 @@ public boolean isRoot()
*
* @return true
if this vertex is connected with other vertex,false
otherwise
*/
- public boolean isConnected()
- {
+ public boolean isConnected() {
return isRoot() || isLeaf();
}
@Override
- public Object clone()
- throws CloneNotSupportedException
- {
+ public Object clone() throws CloneNotSupportedException {
// this is what's failing..
final Object retValue = super.clone();
@@ -162,9 +143,7 @@ public Object clone()
}
@Override
- public String toString()
- {
+ public String toString() {
return "Vertex{" + "label='" + label + "'" + "}";
}
-
}
diff --git a/src/main/java/org/codehaus/plexus/util/introspection/ClassMap.java b/src/main/java/org/codehaus/plexus/util/introspection/ClassMap.java
index 6e0c8be2..472419df 100644
--- a/src/main/java/org/codehaus/plexus/util/introspection/ClassMap.java
+++ b/src/main/java/org/codehaus/plexus/util/introspection/ClassMap.java
@@ -31,11 +31,8 @@
* @author Geir Magnusson Jr.
*
*/
-public class ClassMap
-{
- private static final class CacheMiss
- {
- }
+public class ClassMap {
+ private static final class CacheMiss {}
private static final CacheMiss CACHE_MISS = new CacheMiss();
@@ -44,7 +41,6 @@ private static final class CacheMiss
/**
* Class passed into the constructor used to as the basis for the Method map.
*/
-
private final Class clazz;
/**
@@ -58,8 +54,7 @@ private static final class CacheMiss
* Standard constructor
* @param clazz the Class
*/
- public ClassMap( Class clazz )
- {
+ public ClassMap(Class clazz) {
this.clazz = clazz;
populateMethodCache();
}
@@ -67,58 +62,47 @@ public ClassMap( Class clazz )
/**
* @return the class object whose methods are cached by this map.
*/
- Class getCachedClass()
- {
+ Class getCachedClass() {
return clazz;
}
/**
* Find a Method using the methodKey provided.
- *
+ *
* Look in the methodMap for an entry. If found, it'll either be a CACHE_MISS, in which case we simply give up, or
* it'll be a Method, in which case, we return it.
- *
+ *
* If nothing is found, then we must actually go and introspect the method from the MethodMap.
* @param name method name
* @param params method params
* @return the find Method or null
* @throws org.codehaus.plexus.util.introspection.MethodMap.AmbiguousException if ambiguous name
*/
- public Method findMethod( String name, Object[] params )
- throws MethodMap.AmbiguousException
- {
- String methodKey = makeMethodKey( name, params );
- Object cacheEntry = methodCache.get( methodKey );
-
- if ( cacheEntry == CACHE_MISS )
- {
+ public Method findMethod(String name, Object[] params) throws MethodMap.AmbiguousException {
+ String methodKey = makeMethodKey(name, params);
+ Object cacheEntry = methodCache.get(methodKey);
+
+ if (cacheEntry == CACHE_MISS) {
return null;
}
- if ( cacheEntry == null )
- {
- try
- {
- cacheEntry = methodMap.find( name, params );
- }
- catch ( MethodMap.AmbiguousException ae )
- {
+ if (cacheEntry == null) {
+ try {
+ cacheEntry = methodMap.find(name, params);
+ } catch (MethodMap.AmbiguousException ae) {
/*
* that's a miss :)
*/
- methodCache.put( methodKey, CACHE_MISS );
+ methodCache.put(methodKey, CACHE_MISS);
throw ae;
}
- if ( cacheEntry == null )
- {
- methodCache.put( methodKey, CACHE_MISS );
- }
- else
- {
- methodCache.put( methodKey, cacheEntry );
+ if (cacheEntry == null) {
+ methodCache.put(methodKey, CACHE_MISS);
+ } else {
+ methodCache.put(methodKey, cacheEntry);
}
}
@@ -130,28 +114,26 @@ public Method findMethod( String name, Object[] params )
/**
* Populate the Map of direct hits. These are taken from all the public methods that our class provides.
*/
- private void populateMethodCache()
- {
+ private void populateMethodCache() {
StringBuffer methodKey;
/*
* get all publicly accessible methods
*/
- Method[] methods = getAccessibleMethods( clazz );
+ Method[] methods = getAccessibleMethods(clazz);
/*
* map and cache them
*/
- for ( Method method : methods )
- {
+ for (Method method : methods) {
/*
* now get the 'public method', the method declared by a public interface or class. (because the actual
* implementing class may be a facade...
*/
- Method publicMethod = getPublicMethod( method );
+ Method publicMethod = getPublicMethod(method);
/*
* it is entirely possible that there is no public method for the methods of this class (i.e. in the facade,
@@ -159,10 +141,9 @@ private void populateMethodCache()
* cache
*/
- if ( publicMethod != null )
- {
- methodMap.add( publicMethod );
- methodCache.put( makeMethodKey( publicMethod ), publicMethod );
+ if (publicMethod != null) {
+ methodMap.add(publicMethod);
+ methodCache.put(makeMethodKey(publicMethod), publicMethod);
}
}
}
@@ -170,76 +151,53 @@ private void populateMethodCache()
/**
* Make a methodKey for the given method using the concatenation of the name and the types of the method parameters.
*/
- private String makeMethodKey( Method method )
- {
+ private String makeMethodKey(Method method) {
Class[] parameterTypes = method.getParameterTypes();
- StringBuilder methodKey = new StringBuilder( method.getName() );
+ StringBuilder methodKey = new StringBuilder(method.getName());
- for ( Class parameterType : parameterTypes )
- {
+ for (Class parameterType : parameterTypes) {
/*
* If the argument type is primitive then we want to convert our primitive type signature to the
* corresponding Object type so introspection for methods with primitive types will work correctly.
*/
- if ( parameterType.isPrimitive() )
- {
- if ( parameterType.equals( Boolean.TYPE ) )
- {
- methodKey.append( "java.lang.Boolean" );
- }
- else if ( parameterType.equals( Byte.TYPE ) )
- {
- methodKey.append( "java.lang.Byte" );
- }
- else if ( parameterType.equals( Character.TYPE ) )
- {
- methodKey.append( "java.lang.Character" );
+ if (parameterType.isPrimitive()) {
+ if (parameterType.equals(Boolean.TYPE)) {
+ methodKey.append("java.lang.Boolean");
+ } else if (parameterType.equals(Byte.TYPE)) {
+ methodKey.append("java.lang.Byte");
+ } else if (parameterType.equals(Character.TYPE)) {
+ methodKey.append("java.lang.Character");
+ } else if (parameterType.equals(Double.TYPE)) {
+ methodKey.append("java.lang.Double");
+ } else if (parameterType.equals(Float.TYPE)) {
+ methodKey.append("java.lang.Float");
+ } else if (parameterType.equals(Integer.TYPE)) {
+ methodKey.append("java.lang.Integer");
+ } else if (parameterType.equals(Long.TYPE)) {
+ methodKey.append("java.lang.Long");
+ } else if (parameterType.equals(Short.TYPE)) {
+ methodKey.append("java.lang.Short");
}
- else if ( parameterType.equals( Double.TYPE ) )
- {
- methodKey.append( "java.lang.Double" );
- }
- else if ( parameterType.equals( Float.TYPE ) )
- {
- methodKey.append( "java.lang.Float" );
- }
- else if ( parameterType.equals( Integer.TYPE ) )
- {
- methodKey.append( "java.lang.Integer" );
- }
- else if ( parameterType.equals( Long.TYPE ) )
- {
- methodKey.append( "java.lang.Long" );
- }
- else if ( parameterType.equals( Short.TYPE ) )
- {
- methodKey.append( "java.lang.Short" );
- }
- }
- else
- {
- methodKey.append( parameterType.getName() );
+ } else {
+ methodKey.append(parameterType.getName());
}
}
return methodKey.toString();
}
- private static String makeMethodKey( String method, Object[] params )
- {
- StringBuilder methodKey = new StringBuilder().append( method );
+ private static String makeMethodKey(String method, Object[] params) {
+ StringBuilder methodKey = new StringBuilder().append(method);
- for ( Object param : params )
- {
+ for (Object param : params) {
Object arg = param;
- if ( arg == null )
- {
+ if (arg == null) {
arg = OBJECT;
}
- methodKey.append( arg.getClass().getName() );
+ methodKey.append(arg.getClass().getName());
}
return methodKey.toString();
@@ -250,16 +208,14 @@ private static String makeMethodKey( String method, Object[] params )
* its public methods from public superclasses and interfaces (if they exist). Basically upcasts every method to the
* nearest accessible method.
*/
- private static Method[] getAccessibleMethods( Class clazz )
- {
+ private static Method[] getAccessibleMethods(Class clazz) {
Method[] methods = clazz.getMethods();
/*
* Short circuit for the (hopefully) majority of cases where the clazz is public
*/
- if ( Modifier.isPublic( clazz.getModifiers() ) )
- {
+ if (Modifier.isPublic(clazz.getModifiers())) {
return methods;
}
@@ -269,27 +225,23 @@ private static Method[] getAccessibleMethods( Class clazz )
MethodInfo[] methodInfos = new MethodInfo[methods.length];
- for ( int i = methods.length; i-- > 0; )
- {
- methodInfos[i] = new MethodInfo( methods[i] );
+ for (int i = methods.length; i-- > 0; ) {
+ methodInfos[i] = new MethodInfo(methods[i]);
}
- int upcastCount = getAccessibleMethods( clazz, methodInfos, 0 );
+ int upcastCount = getAccessibleMethods(clazz, methodInfos, 0);
/*
* Reallocate array in case some method had no accessible counterpart.
*/
- if ( upcastCount < methods.length )
- {
+ if (upcastCount < methods.length) {
methods = new Method[upcastCount];
}
int j = 0;
- for ( MethodInfo methodInfo : methodInfos )
- {
- if ( methodInfo.upcast )
- {
+ for (MethodInfo methodInfo : methodInfos) {
+ if (methodInfo.upcast) {
methods[j++] = methodInfo.method;
}
}
@@ -305,30 +257,23 @@ private static Method[] getAccessibleMethods( Class clazz )
* @param upcastCount current number of methods we have matched
* @return count of matched methods
*/
- private static int getAccessibleMethods( Class clazz, MethodInfo[] methodInfos, int upcastCount )
- {
+ private static int getAccessibleMethods(Class clazz, MethodInfo[] methodInfos, int upcastCount) {
int l = methodInfos.length;
/*
* if this class is public, then check each of the currently 'non-upcasted' methods to see if we have a match
*/
- if ( Modifier.isPublic( clazz.getModifiers() ) )
- {
- for ( int i = 0; i < l && upcastCount < l; ++i )
- {
- try
- {
+ if (Modifier.isPublic(clazz.getModifiers())) {
+ for (int i = 0; i < l && upcastCount < l; ++i) {
+ try {
MethodInfo methodInfo = methodInfos[i];
- if ( !methodInfo.upcast )
- {
- methodInfo.tryUpcasting( clazz );
+ if (!methodInfo.upcast) {
+ methodInfo.tryUpcasting(clazz);
upcastCount++;
}
- }
- catch ( NoSuchMethodException e )
- {
+ } catch (NoSuchMethodException e) {
/*
* Intentionally ignored - it means it wasn't found in the current class
*/
@@ -339,8 +284,7 @@ private static int getAccessibleMethods( Class clazz, MethodInfo[] methodInfos,
* Short circuit if all methods were upcast
*/
- if ( upcastCount == l )
- {
+ if (upcastCount == l) {
return upcastCount;
}
}
@@ -351,16 +295,14 @@ private static int getAccessibleMethods( Class clazz, MethodInfo[] methodInfos,
Class superclazz = clazz.getSuperclass();
- if ( superclazz != null )
- {
- upcastCount = getAccessibleMethods( superclazz, methodInfos, upcastCount );
+ if (superclazz != null) {
+ upcastCount = getAccessibleMethods(superclazz, methodInfos, upcastCount);
/*
* Short circuit if all methods were upcast
*/
- if ( upcastCount == l )
- {
+ if (upcastCount == l) {
return upcastCount;
}
}
@@ -372,16 +314,14 @@ private static int getAccessibleMethods( Class clazz, MethodInfo[] methodInfos,
Class[] interfaces = clazz.getInterfaces();
- for ( int i = interfaces.length; i-- > 0; )
- {
- upcastCount = getAccessibleMethods( interfaces[i], methodInfos, upcastCount );
+ for (int i = interfaces.length; i-- > 0; ) {
+ upcastCount = getAccessibleMethods(interfaces[i], methodInfos, upcastCount);
/*
* Short circuit if all methods were upcast
*/
- if ( upcastCount == l )
- {
+ if (upcastCount == l) {
return upcastCount;
}
}
@@ -398,20 +338,18 @@ private static int getAccessibleMethods( Class clazz, MethodInfo[] methodInfos,
* @return the publicly callable counterpart method. Note that if the parameter method is itself declared by a
* public class, this method is an identity function.
*/
- public static Method getPublicMethod( Method method )
- {
+ public static Method getPublicMethod(Method method) {
Class clazz = method.getDeclaringClass();
/*
* Short circuit for (hopefully the majority of) cases where the declaring class is public.
*/
- if ( ( clazz.getModifiers() & Modifier.PUBLIC ) != 0 )
- {
+ if ((clazz.getModifiers() & Modifier.PUBLIC) != 0) {
return method;
}
- return getPublicMethod( clazz, method.getName(), method.getParameterTypes() );
+ return getPublicMethod(clazz, method.getName(), method.getParameterTypes());
}
/**
@@ -422,20 +360,15 @@ public static Method getPublicMethod( Method method )
* @param name the name of the method
* @param paramTypes the classes of method parameters
*/
- private static Method getPublicMethod( Class clazz, String name, Class[] paramTypes )
- {
+ private static Method getPublicMethod(Class clazz, String name, Class[] paramTypes) {
/*
* if this class is public, then try to get it
*/
- if ( ( clazz.getModifiers() & Modifier.PUBLIC ) != 0 )
- {
- try
- {
- return clazz.getMethod( name, paramTypes );
- }
- catch ( NoSuchMethodException e )
- {
+ if ((clazz.getModifiers() & Modifier.PUBLIC) != 0) {
+ try {
+ return clazz.getMethod(name, paramTypes);
+ } catch (NoSuchMethodException e) {
/*
* If the class does not have the method, then neither its superclass nor any of its interfaces has it
* so quickly return null.
@@ -450,12 +383,10 @@ private static Method getPublicMethod( Class clazz, String name, Class[] paramTy
Class superclazz = clazz.getSuperclass();
- if ( superclazz != null )
- {
- Method superclazzMethod = getPublicMethod( superclazz, name, paramTypes );
+ if (superclazz != null) {
+ Method superclazzMethod = getPublicMethod(superclazz, name, paramTypes);
- if ( superclazzMethod != null )
- {
+ if (superclazzMethod != null) {
return superclazzMethod;
}
}
@@ -466,12 +397,10 @@ private static Method getPublicMethod( Class clazz, String name, Class[] paramTy
Class[] interfaces = clazz.getInterfaces();
- for ( Class anInterface : interfaces )
- {
- Method interfaceMethod = getPublicMethod( anInterface, name, paramTypes );
+ for (Class anInterface : interfaces) {
+ Method interfaceMethod = getPublicMethod(anInterface, name, paramTypes);
- if ( interfaceMethod != null )
- {
+ if (interfaceMethod != null) {
return interfaceMethod;
}
}
@@ -482,8 +411,7 @@ private static Method getPublicMethod( Class clazz, String name, Class[] paramTy
/**
* Used for the iterative discovery process for public methods.
*/
- private static final class MethodInfo
- {
+ private static final class MethodInfo {
Method method;
String name;
@@ -492,18 +420,15 @@ private static final class MethodInfo
boolean upcast;
- MethodInfo( Method method )
- {
+ MethodInfo(Method method) {
this.method = null;
name = method.getName();
parameterTypes = method.getParameterTypes();
upcast = false;
}
- void tryUpcasting( Class clazz )
- throws NoSuchMethodException
- {
- method = clazz.getMethod( name, parameterTypes );
+ void tryUpcasting(Class clazz) throws NoSuchMethodException {
+ method = clazz.getMethod(name, parameterTypes);
name = null;
parameterTypes = null;
upcast = true;
diff --git a/src/main/java/org/codehaus/plexus/util/introspection/MethodMap.java b/src/main/java/org/codehaus/plexus/util/introspection/MethodMap.java
index 51420cca..52493ce0 100644
--- a/src/main/java/org/codehaus/plexus/util/introspection/MethodMap.java
+++ b/src/main/java/org/codehaus/plexus/util/introspection/MethodMap.java
@@ -32,8 +32,7 @@
* @author Attila Szegedi
*
*/
-public class MethodMap
-{
+public class MethodMap {
private static final int MORE_SPECIFIC = 0;
private static final int LESS_SPECIFIC = 1;
@@ -48,22 +47,20 @@ public class MethodMap
/**
* Add a method to a list of methods by name. For a particular class we are keeping track of all the methods with
* the same name.
- *
+ *
* @param method The method
*/
- public void add( Method method )
- {
+ public void add(Method method) {
String methodName = method.getName();
- List l = get( methodName );
+ List l = get(methodName);
- if ( l == null )
- {
+ if (l == null) {
l = new ArrayList();
- methodByNameMap.put( methodName, l );
+ methodByNameMap.put(methodName, l);
}
- l.add( method );
+ l.add(method);
}
/**
@@ -72,9 +69,8 @@ public void add( Method method )
* @param key The name of the method.
* @return List list of methods
*/
- public List get( String key )
- {
- return methodByNameMap.get( key );
+ public List get(String key) {
+ return methodByNameMap.get(key);
}
/**
@@ -94,21 +90,17 @@ public List get( String key )
* @return the most specific applicable method, or null if no method is applicable.
* @throws AmbiguousException if there is more than one maximally specific applicable method
*/
- public Method find( String methodName, Object[] args )
- throws AmbiguousException
- {
- List methodList = get( methodName );
+ public Method find(String methodName, Object[] args) throws AmbiguousException {
+ List methodList = get(methodName);
- if ( methodList == null )
- {
+ if (methodList == null) {
return null;
}
int l = args.length;
Class[] classes = new Class[l];
- for ( int i = 0; i < l; ++i )
- {
+ for (int i = 0; i < l; ++i) {
Object arg = args[i];
/*
@@ -118,29 +110,22 @@ public Method find( String methodName, Object[] args )
classes[i] = arg == null ? null : arg.getClass();
}
- return getMostSpecific( methodList, classes );
+ return getMostSpecific(methodList, classes);
}
/**
* simple distinguishable exception, used when we run across ambiguous overloading
*/
- public static class AmbiguousException
- extends Exception
- {
- }
+ public static class AmbiguousException extends Exception {}
- private static Method getMostSpecific( List methods, Class[] classes )
- throws AmbiguousException
- {
- LinkedList applicables = getApplicables( methods, classes );
+ private static Method getMostSpecific(List methods, Class[] classes) throws AmbiguousException {
+ LinkedList applicables = getApplicables(methods, classes);
- if ( applicables.isEmpty() )
- {
+ if (applicables.isEmpty()) {
return null;
}
- if ( applicables.size() == 1 )
- {
+ if (applicables.size() == 1) {
return applicables.getFirst();
}
@@ -151,19 +136,15 @@ private static Method getMostSpecific( List methods, Class[] classes )
LinkedList maximals = new LinkedList();
- for ( Method app : applicables )
- {
+ for (Method app : applicables) {
Class[] appArgs = app.getParameterTypes();
boolean lessSpecific = false;
- for ( Iterator maximal = maximals.iterator(); !lessSpecific && maximal.hasNext(); )
- {
+ for (Iterator maximal = maximals.iterator(); !lessSpecific && maximal.hasNext(); ) {
Method max = maximal.next();
- switch ( moreSpecific( appArgs, max.getParameterTypes() ) )
- {
- case MORE_SPECIFIC:
- {
+ switch (moreSpecific(appArgs, max.getParameterTypes())) {
+ case MORE_SPECIFIC: {
/*
* This method is more specific than the previously known maximally specific, so remove the old
* maximum.
@@ -173,8 +154,7 @@ private static Method getMostSpecific( List methods, Class[] classes )
break;
}
- case LESS_SPECIFIC:
- {
+ case LESS_SPECIFIC: {
/*
* This method is less specific than some of the currently known maximally specific methods, so
* we won't add it into the set of maximally specific methods
@@ -186,14 +166,12 @@ private static Method getMostSpecific( List methods, Class[] classes )
}
}
- if ( !lessSpecific )
- {
- maximals.addLast( app );
+ if (!lessSpecific) {
+ maximals.addLast(app);
}
}
- if ( maximals.size() > 1 )
- {
+ if (maximals.size() > 1) {
// We have more than one maximally specific method
throw new AmbiguousException();
}
@@ -204,30 +182,25 @@ private static Method getMostSpecific( List methods, Class[] classes )
/**
* Determines which method signature (represented by a class array) is more specific. This defines a partial
* ordering on the method signatures.
- *
+ *
* @param c1 first signature to compare
* @param c2 second signature to compare
* @return MORE_SPECIFIC if c1 is more specific than c2, LESS_SPECIFIC if c1 is less specific than c2, INCOMPARABLE
* if they are incomparable.
*/
- private static int moreSpecific( Class[] c1, Class[] c2 )
- {
+ private static int moreSpecific(Class[] c1, Class[] c2) {
boolean c1MoreSpecific = false;
boolean c2MoreSpecific = false;
- for ( int i = 0; i < c1.length; ++i )
- {
- if ( c1[i] != c2[i] )
- {
- c1MoreSpecific = c1MoreSpecific || isStrictMethodInvocationConvertible( c2[i], c1[i] );
- c2MoreSpecific = c2MoreSpecific || isStrictMethodInvocationConvertible( c1[i], c2[i] );
+ for (int i = 0; i < c1.length; ++i) {
+ if (c1[i] != c2[i]) {
+ c1MoreSpecific = c1MoreSpecific || isStrictMethodInvocationConvertible(c2[i], c1[i]);
+ c2MoreSpecific = c2MoreSpecific || isStrictMethodInvocationConvertible(c1[i], c2[i]);
}
}
- if ( c1MoreSpecific )
- {
- if ( c2MoreSpecific )
- {
+ if (c1MoreSpecific) {
+ if (c2MoreSpecific) {
/*
* Incomparable due to cross-assignable arguments (i.e. foo(String, Object) vs. foo(Object, String))
*/
@@ -238,8 +211,7 @@ private static int moreSpecific( Class[] c1, Class[] c2 )
return MORE_SPECIFIC;
}
- if ( c2MoreSpecific )
- {
+ if (c2MoreSpecific) {
return LESS_SPECIFIC;
}
@@ -252,49 +224,41 @@ private static int moreSpecific( Class[] c1, Class[] c2 )
/**
* Returns all methods that are applicable to actual argument types.
- *
+ *
* @param methods list of all candidate methods
* @param classes the actual types of the arguments
* @return a list that contains only applicable methods (number of formal and actual arguments matches, and argument
* types are assignable to formal types through a method invocation conversion).
*/
- private static LinkedList getApplicables( List methods, Class[] classes )
- {
+ private static LinkedList getApplicables(List methods, Class[] classes) {
LinkedList list = new LinkedList();
- for ( Object method1 : methods )
- {
+ for (Object method1 : methods) {
Method method = (Method) method1;
- if ( isApplicable( method, classes ) )
- {
- list.add( method );
+ if (isApplicable(method, classes)) {
+ list.add(method);
}
-
}
return list;
}
/**
* Returns true if the supplied method is applicable to actual argument types.
- *
+ *
* @param method The method to check for applicability
* @param classes The arguments
* @return true if the method applies to the parameter types
*/
- private static boolean isApplicable( Method method, Class[] classes )
- {
+ private static boolean isApplicable(Method method, Class[] classes) {
Class[] methodArgs = method.getParameterTypes();
- if ( methodArgs.length != classes.length )
- {
+ if (methodArgs.length != classes.length) {
return false;
}
- for ( int i = 0; i < classes.length; ++i )
- {
- if ( !isMethodInvocationConvertible( methodArgs[i], classes[i] ) )
- {
+ for (int i = 0; i < classes.length; ++i) {
+ if (!isMethodInvocationConvertible(methodArgs[i], classes[i])) {
return false;
}
}
@@ -315,13 +279,11 @@ private static boolean isApplicable( Method method, Class[] classes )
* its corresponding object type or an object type of a primitive type that can be converted to the formal
* type.
*/
- private static boolean isMethodInvocationConvertible( Class formal, Class actual )
- {
+ private static boolean isMethodInvocationConvertible(Class formal, Class actual) {
/*
* if it's a null, it means the arg was null
*/
- if ( actual == null && !formal.isPrimitive() )
- {
+ if (actual == null && !formal.isPrimitive()) {
return true;
}
@@ -329,8 +291,7 @@ private static boolean isMethodInvocationConvertible( Class formal, Class actual
* Check for identity or widening reference conversion
*/
- if ( actual != null && formal.isAssignableFrom( actual ) )
- {
+ if (actual != null && formal.isAssignableFrom(actual)) {
return true;
}
@@ -338,28 +299,31 @@ private static boolean isMethodInvocationConvertible( Class formal, Class actual
* Check for boxing with widening primitive conversion. Note that actual parameters are never primitives.
*/
- if ( formal.isPrimitive() )
- {
- if ( formal == Boolean.TYPE && actual == Boolean.class )
- return true;
- if ( formal == Character.TYPE && actual == Character.class )
- return true;
- if ( formal == Byte.TYPE && actual == Byte.class )
- return true;
- if ( formal == Short.TYPE && ( actual == Short.class || actual == Byte.class ) )
- return true;
- if ( formal == Integer.TYPE
- && ( actual == Integer.class || actual == Short.class || actual == Byte.class ) )
- return true;
- if ( formal == Long.TYPE && ( actual == Long.class || actual == Integer.class || actual == Short.class
- || actual == Byte.class ) )
- return true;
- if ( formal == Float.TYPE && ( actual == Float.class || actual == Long.class || actual == Integer.class
- || actual == Short.class || actual == Byte.class ) )
- return true;
- if ( formal == Double.TYPE && ( actual == Double.class || actual == Float.class || actual == Long.class
- || actual == Integer.class || actual == Short.class || actual == Byte.class ) )
+ if (formal.isPrimitive()) {
+ if (formal == Boolean.TYPE && actual == Boolean.class) return true;
+ if (formal == Character.TYPE && actual == Character.class) return true;
+ if (formal == Byte.TYPE && actual == Byte.class) return true;
+ if (formal == Short.TYPE && (actual == Short.class || actual == Byte.class)) return true;
+ if (formal == Integer.TYPE && (actual == Integer.class || actual == Short.class || actual == Byte.class))
return true;
+ if (formal == Long.TYPE
+ && (actual == Long.class
+ || actual == Integer.class
+ || actual == Short.class
+ || actual == Byte.class)) return true;
+ if (formal == Float.TYPE
+ && (actual == Float.class
+ || actual == Long.class
+ || actual == Integer.class
+ || actual == Short.class
+ || actual == Byte.class)) return true;
+ if (formal == Double.TYPE
+ && (actual == Double.class
+ || actual == Float.class
+ || actual == Long.class
+ || actual == Integer.class
+ || actual == Short.class
+ || actual == Byte.class)) return true;
}
return false;
@@ -375,13 +339,11 @@ private static boolean isMethodInvocationConvertible( Class formal, Class actual
* @return true if either formal type is assignable from actual type, or formal and actual are both primitive types
* and actual can be subject to widening conversion to formal.
*/
- private static boolean isStrictMethodInvocationConvertible( Class formal, Class actual )
- {
+ private static boolean isStrictMethodInvocationConvertible(Class formal, Class actual) {
/*
* we shouldn't get a null into, but if so
*/
- if ( actual == null && !formal.isPrimitive() )
- {
+ if (actual == null && !formal.isPrimitive()) {
return true;
}
@@ -389,8 +351,7 @@ private static boolean isStrictMethodInvocationConvertible( Class formal, Class
* Check for identity or widening reference conversion
*/
- if ( formal.isAssignableFrom( actual ) )
- {
+ if (formal.isAssignableFrom(actual)) {
return true;
}
@@ -398,20 +359,20 @@ private static boolean isStrictMethodInvocationConvertible( Class formal, Class
* Check for widening primitive conversion.
*/
- if ( formal.isPrimitive() )
- {
- if ( formal == Short.TYPE && ( actual == Byte.TYPE ) )
- return true;
- if ( formal == Integer.TYPE && ( actual == Short.TYPE || actual == Byte.TYPE ) )
- return true;
- if ( formal == Long.TYPE && ( actual == Integer.TYPE || actual == Short.TYPE || actual == Byte.TYPE ) )
- return true;
- if ( formal == Float.TYPE
- && ( actual == Long.TYPE || actual == Integer.TYPE || actual == Short.TYPE || actual == Byte.TYPE ) )
+ if (formal.isPrimitive()) {
+ if (formal == Short.TYPE && (actual == Byte.TYPE)) return true;
+ if (formal == Integer.TYPE && (actual == Short.TYPE || actual == Byte.TYPE)) return true;
+ if (formal == Long.TYPE && (actual == Integer.TYPE || actual == Short.TYPE || actual == Byte.TYPE))
return true;
- if ( formal == Double.TYPE && ( actual == Float.TYPE || actual == Long.TYPE || actual == Integer.TYPE
- || actual == Short.TYPE || actual == Byte.TYPE ) )
+ if (formal == Float.TYPE
+ && (actual == Long.TYPE || actual == Integer.TYPE || actual == Short.TYPE || actual == Byte.TYPE))
return true;
+ if (formal == Double.TYPE
+ && (actual == Float.TYPE
+ || actual == Long.TYPE
+ || actual == Integer.TYPE
+ || actual == Short.TYPE
+ || actual == Byte.TYPE)) return true;
}
return false;
}
diff --git a/src/main/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractor.java b/src/main/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractor.java
index 656c8201..0ca46b7f 100644
--- a/src/main/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractor.java
+++ b/src/main/java/org/codehaus/plexus/util/introspection/ReflectionValueExtractor.java
@@ -34,15 +34,14 @@
*
* The implementation supports indexed, nested and mapped properties similar to the JSP way.
*
- *
+ *
* @author Jason van Zyl
* @author Vincent Siveton
*
* @see http://struts.apache.org/1.x/struts-taglib/indexedprops.html
*/
-public class ReflectionValueExtractor
-{
+public class ReflectionValueExtractor {
private static final Class>[] CLASS_ARGS = new Class[0];
private static final Object[] OBJECT_ARGS = new Object[0];
@@ -52,7 +51,7 @@ public class ReflectionValueExtractor
* space overflows due to retention of discarded classloaders.
*/
private static final Map, WeakReference> classMaps =
- new WeakHashMap, WeakReference>();
+ new WeakHashMap, WeakReference>();
static final int EOF = -1;
@@ -66,83 +65,69 @@ public class ReflectionValueExtractor
static final char MAPPED_END = ')';
- static class Tokenizer
- {
+ static class Tokenizer {
final String expression;
int idx;
- public Tokenizer( String expression )
- {
+ public Tokenizer(String expression) {
this.expression = expression;
}
- public int peekChar()
- {
- return idx < expression.length() ? expression.charAt( idx ) : EOF;
+ public int peekChar() {
+ return idx < expression.length() ? expression.charAt(idx) : EOF;
}
- public int skipChar()
- {
- return idx < expression.length() ? expression.charAt( idx++ ) : EOF;
+ public int skipChar() {
+ return idx < expression.length() ? expression.charAt(idx++) : EOF;
}
- public String nextToken( char delimiter )
- {
+ public String nextToken(char delimiter) {
int start = idx;
- while ( idx < expression.length() && delimiter != expression.charAt( idx ) )
- {
+ while (idx < expression.length() && delimiter != expression.charAt(idx)) {
idx++;
}
// delimiter MUST be present
- if ( idx <= start || idx >= expression.length() )
- {
+ if (idx <= start || idx >= expression.length()) {
return null;
}
- return expression.substring( start, idx++ );
+ return expression.substring(start, idx++);
}
- public String nextPropertyName()
- {
+ public String nextPropertyName() {
final int start = idx;
- while ( idx < expression.length() && Character.isJavaIdentifierPart( expression.charAt( idx ) ) )
- {
+ while (idx < expression.length() && Character.isJavaIdentifierPart(expression.charAt(idx))) {
idx++;
}
// property name does not require delimiter
- if ( idx <= start || idx > expression.length() )
- {
+ if (idx <= start || idx > expression.length()) {
return null;
}
- return expression.substring( start, idx );
+ return expression.substring(start, idx);
}
- public int getPosition()
- {
+ public int getPosition() {
return idx < expression.length() ? idx : EOF;
}
// to make tokenizer look pretty in debugger
@Override
- public String toString()
- {
- return idx < expression.length() ? expression.substring( idx ) : "";
+ public String toString() {
+ return idx < expression.length() ? expression.substring(idx) : "";
}
}
- private ReflectionValueExtractor()
- {
- }
+ private ReflectionValueExtractor() {}
/**
* The implementation supports indexed, nested and mapped properties.
- *
+ *
*
* - nested properties should be defined by a dot, i.e. "user.address.street"
* - indexed properties (java.util.List or array instance) should be contains
(\\w+)\\[(\\d+)\\]
@@ -150,21 +135,19 @@ private ReflectionValueExtractor()
* - mapped properties should be contains
(\\w+)\\((.+)\\)
pattern, i.e.
* "user.addresses(myAddress).street"
*
- *
+ *
* @param expression not null expression
* @param root not null object
* @return the object defined by the expression
* @throws Exception if any
*/
- public static Object evaluate( String expression, Object root )
- throws Exception
- {
- return evaluate( expression, root, true );
+ public static Object evaluate(String expression, Object root) throws Exception {
+ return evaluate(expression, root, true);
}
/**
* The implementation supports indexed, nested and mapped properties.
- *
+ *
*
* - nested properties should be defined by a dot, i.e. "user.address.street"
* - indexed properties (java.util.List or array instance) should be contains
(\\w+)\\[(\\d+)\\]
@@ -172,7 +155,7 @@ public static Object evaluate( String expression, Object root )
* - mapped properties should be contains
(\\w+)\\((.+)\\)
pattern, i.e.
* "user.addresses(myAddress).street"
*
- *
+ *
* @param expression not null expression
* @param root not null object
* @param trimRootToken root start
@@ -180,9 +163,7 @@ public static Object evaluate( String expression, Object root )
* @throws Exception if any
*/
// TODO: don't throw Exception
- public static Object evaluate( String expression, final Object root, final boolean trimRootToken )
- throws Exception
- {
+ public static Object evaluate(String expression, final Object root, final boolean trimRootToken) throws Exception {
Object value = root;
// ----------------------------------------------------------------------
@@ -190,44 +171,45 @@ public static Object evaluate( String expression, final Object root, final boole
// MavenProject instance.
// ----------------------------------------------------------------------
- if ( StringUtils.isEmpty( expression ) || !Character.isJavaIdentifierStart( expression.charAt( 0 ) ) )
- {
+ if (StringUtils.isEmpty(expression) || !Character.isJavaIdentifierStart(expression.charAt(0))) {
return null;
}
- boolean hasDots = expression.indexOf( PROPERTY_START ) >= 0;
+ boolean hasDots = expression.indexOf(PROPERTY_START) >= 0;
final Tokenizer tokenizer;
- if ( trimRootToken && hasDots )
- {
- tokenizer = new Tokenizer( expression );
+ if (trimRootToken && hasDots) {
+ tokenizer = new Tokenizer(expression);
tokenizer.nextPropertyName();
- if ( tokenizer.getPosition() == EOF )
- {
+ if (tokenizer.getPosition() == EOF) {
return null;
}
- }
- else
- {
- tokenizer = new Tokenizer( "." + expression );
+ } else {
+ tokenizer = new Tokenizer("." + expression);
}
int propertyPosition = tokenizer.getPosition();
- while ( value != null && tokenizer.peekChar() != EOF )
- {
- switch ( tokenizer.skipChar() )
- {
+ while (value != null && tokenizer.peekChar() != EOF) {
+ switch (tokenizer.skipChar()) {
case INDEXED_START:
- value = getIndexedValue( expression, propertyPosition, tokenizer.getPosition(), value,
- tokenizer.nextToken( INDEXED_END ) );
+ value = getIndexedValue(
+ expression,
+ propertyPosition,
+ tokenizer.getPosition(),
+ value,
+ tokenizer.nextToken(INDEXED_END));
break;
case MAPPED_START:
- value = getMappedValue( expression, propertyPosition, tokenizer.getPosition(), value,
- tokenizer.nextToken( MAPPED_END ) );
+ value = getMappedValue(
+ expression,
+ propertyPosition,
+ tokenizer.getPosition(),
+ value,
+ tokenizer.nextToken(MAPPED_END));
break;
case PROPERTY_START:
propertyPosition = tokenizer.getPosition();
- value = getPropertyValue( value, tokenizer.nextPropertyName() );
+ value = getPropertyValue(value, tokenizer.nextPropertyName());
break;
default:
// could not parse expression
@@ -238,122 +220,100 @@ public static Object evaluate( String expression, final Object root, final boole
return value;
}
- private static Object getMappedValue( final String expression, final int from, final int to, final Object value,
- final String key )
- throws Exception
- {
- if ( value == null || key == null )
- {
+ private static Object getMappedValue(
+ final String expression, final int from, final int to, final Object value, final String key)
+ throws Exception {
+ if (value == null || key == null) {
return null;
}
- if ( value instanceof Map )
- {
- Object[] localParams = new Object[] { key };
- ClassMap classMap = getClassMap( value.getClass() );
- Method method = classMap.findMethod( "get", localParams );
- return method.invoke( value, localParams );
+ if (value instanceof Map) {
+ Object[] localParams = new Object[] {key};
+ ClassMap classMap = getClassMap(value.getClass());
+ Method method = classMap.findMethod("get", localParams);
+ return method.invoke(value, localParams);
}
- final String message =
- String.format( "The token '%s' at position '%d' refers to a java.util.Map, but the value seems is an instance of '%s'",
- expression.subSequence( from, to ), from, value.getClass() );
+ final String message = String.format(
+ "The token '%s' at position '%d' refers to a java.util.Map, but the value seems is an instance of '%s'",
+ expression.subSequence(from, to), from, value.getClass());
- throw new Exception( message );
+ throw new Exception(message);
}
- private static Object getIndexedValue( final String expression, final int from, final int to, final Object value,
- final String indexStr )
- throws Exception
- {
- try
- {
- int index = Integer.parseInt( indexStr );
-
- if ( value.getClass().isArray() )
- {
- return Array.get( value, index );
+ private static Object getIndexedValue(
+ final String expression, final int from, final int to, final Object value, final String indexStr)
+ throws Exception {
+ try {
+ int index = Integer.parseInt(indexStr);
+
+ if (value.getClass().isArray()) {
+ return Array.get(value, index);
}
- if ( value instanceof List )
- {
- ClassMap classMap = getClassMap( value.getClass() );
+ if (value instanceof List) {
+ ClassMap classMap = getClassMap(value.getClass());
// use get method on List interface
- Object[] localParams = new Object[] { index };
- Method method = classMap.findMethod( "get", localParams );
- return method.invoke( value, localParams );
+ Object[] localParams = new Object[] {index};
+ Method method = classMap.findMethod("get", localParams);
+ return method.invoke(value, localParams);
}
- }
- catch ( NumberFormatException e )
- {
+ } catch (NumberFormatException e) {
return null;
- }
- catch ( InvocationTargetException e )
- {
+ } catch (InvocationTargetException e) {
// catch array index issues gracefully, otherwise release
- if ( e.getCause() instanceof IndexOutOfBoundsException )
- {
+ if (e.getCause() instanceof IndexOutOfBoundsException) {
return null;
}
throw e;
}
- final String message =
- String.format( "The token '%s' at position '%d' refers to a java.util.List or an array, but the value seems is an instance of '%s'",
- expression.subSequence( from, to ), from, value.getClass() );
+ final String message = String.format(
+ "The token '%s' at position '%d' refers to a java.util.List or an array, but the value seems is an instance of '%s'",
+ expression.subSequence(from, to), from, value.getClass());
- throw new Exception( message );
+ throw new Exception(message);
}
- private static Object getPropertyValue( Object value, String property )
- throws Exception
- {
- if ( value == null || property == null )
- {
+ private static Object getPropertyValue(Object value, String property) throws Exception {
+ if (value == null || property == null) {
return null;
}
- ClassMap classMap = getClassMap( value.getClass() );
- String methodBase = StringUtils.capitalizeFirstLetter( property );
+ ClassMap classMap = getClassMap(value.getClass());
+ String methodBase = StringUtils.capitalizeFirstLetter(property);
String methodName = "get" + methodBase;
- Method method = classMap.findMethod( methodName, CLASS_ARGS );
+ Method method = classMap.findMethod(methodName, CLASS_ARGS);
- if ( method == null )
- {
+ if (method == null) {
// perhaps this is a boolean property??
methodName = "is" + methodBase;
- method = classMap.findMethod( methodName, CLASS_ARGS );
+ method = classMap.findMethod(methodName, CLASS_ARGS);
}
- if ( method == null )
- {
+ if (method == null) {
return null;
}
- try
- {
- return method.invoke( value, OBJECT_ARGS );
- }
- catch ( InvocationTargetException e )
- {
+ try {
+ return method.invoke(value, OBJECT_ARGS);
+ } catch (InvocationTargetException e) {
throw e;
}
}
- private static ClassMap getClassMap( Class> clazz )
- {
+ private static ClassMap getClassMap(Class> clazz) {
- WeakReference softRef = classMaps.get( clazz );
+ WeakReference softRef = classMaps.get(clazz);
ClassMap classMap;
- if ( softRef == null || ( classMap = softRef.get() ) == null )
- {
- classMap = new ClassMap( clazz );
+ if (softRef == null || (classMap = softRef.get()) == null) {
+ classMap = new ClassMap(clazz);
- classMaps.put( clazz, new WeakReference( classMap ) );
+ classMaps.put(clazz, new WeakReference(classMap));
}
return classMap;
diff --git a/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java b/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java
index 4bea628a..4023b053 100644
--- a/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java
+++ b/src/main/java/org/codehaus/plexus/util/io/CachingOutputStream.java
@@ -22,153 +22,124 @@
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
-import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
-import java.nio.file.attribute.FileTime;
-import java.time.Instant;
import java.util.Objects;
/**
* Caching OutputStream to avoid overwriting a file with
* the same content.
*/
-public class CachingOutputStream extends OutputStream
-{
+public class CachingOutputStream extends OutputStream {
private final Path path;
private FileChannel channel;
private ByteBuffer readBuffer;
private ByteBuffer writeBuffer;
private boolean modified;
- public CachingOutputStream( File path ) throws IOException
- {
- this( Objects.requireNonNull( path ).toPath() );
+ public CachingOutputStream(File path) throws IOException {
+ this(Objects.requireNonNull(path).toPath());
}
- public CachingOutputStream( Path path ) throws IOException
- {
- this( path, 32 * 1024 );
+ public CachingOutputStream(Path path) throws IOException {
+ this(path, 32 * 1024);
}
- public CachingOutputStream( Path path, int bufferSize ) throws IOException
- {
- this.path = Objects.requireNonNull( path );
- this.channel = FileChannel.open( path,
- StandardOpenOption.READ, StandardOpenOption.WRITE, StandardOpenOption.CREATE );
- this.readBuffer = ByteBuffer.allocate( bufferSize );
- this.writeBuffer = ByteBuffer.allocate( bufferSize );
+ public CachingOutputStream(Path path, int bufferSize) throws IOException {
+ this.path = Objects.requireNonNull(path);
+ this.channel =
+ FileChannel.open(path, StandardOpenOption.READ, StandardOpenOption.WRITE, StandardOpenOption.CREATE);
+ this.readBuffer = ByteBuffer.allocate(bufferSize);
+ this.writeBuffer = ByteBuffer.allocate(bufferSize);
}
@Override
- public void write( int b ) throws IOException
- {
- if ( writeBuffer.remaining() < 1 )
- {
- ( ( Buffer ) writeBuffer ).flip();
- flushBuffer( writeBuffer );
- ( ( Buffer ) writeBuffer ).clear();
+ public void write(int b) throws IOException {
+ if (writeBuffer.remaining() < 1) {
+ ((Buffer) writeBuffer).flip();
+ flushBuffer(writeBuffer);
+ ((Buffer) writeBuffer).clear();
}
- writeBuffer.put( ( byte ) b );
+ writeBuffer.put((byte) b);
}
@Override
- public void write( byte[] b ) throws IOException
- {
- write( b, 0, b.length );
+ public void write(byte[] b) throws IOException {
+ write(b, 0, b.length);
}
@Override
- public void write( byte[] b, int off, int len ) throws IOException
- {
- if ( writeBuffer.remaining() < len )
- {
- ( ( Buffer ) writeBuffer ).flip();
- flushBuffer( writeBuffer );
- ( ( Buffer ) writeBuffer ).clear();
+ public void write(byte[] b, int off, int len) throws IOException {
+ if (writeBuffer.remaining() < len) {
+ ((Buffer) writeBuffer).flip();
+ flushBuffer(writeBuffer);
+ ((Buffer) writeBuffer).clear();
}
int capacity = writeBuffer.capacity();
- while ( len >= capacity )
- {
- flushBuffer( ByteBuffer.wrap( b, off, capacity ) );
+ while (len >= capacity) {
+ flushBuffer(ByteBuffer.wrap(b, off, capacity));
off += capacity;
len -= capacity;
}
- if ( len > 0 )
- {
- writeBuffer.put( b, off, len );
+ if (len > 0) {
+ writeBuffer.put(b, off, len);
}
}
@Override
- public void flush() throws IOException
- {
- ( ( Buffer ) writeBuffer ).flip();
- flushBuffer( writeBuffer );
- ( ( Buffer ) writeBuffer ).clear();
+ public void flush() throws IOException {
+ ((Buffer) writeBuffer).flip();
+ flushBuffer(writeBuffer);
+ ((Buffer) writeBuffer).clear();
super.flush();
}
- private void flushBuffer( ByteBuffer writeBuffer ) throws IOException
- {
- if ( modified )
- {
- channel.write( writeBuffer );
- }
- else
- {
+ private void flushBuffer(ByteBuffer writeBuffer) throws IOException {
+ if (modified) {
+ channel.write(writeBuffer);
+ } else {
int len = writeBuffer.remaining();
ByteBuffer readBuffer;
- if ( this.readBuffer.capacity() >= len )
- {
+ if (this.readBuffer.capacity() >= len) {
readBuffer = this.readBuffer;
- ( ( Buffer ) readBuffer ).clear();
- readBuffer.limit( len );
- }
- else
- {
- readBuffer = ByteBuffer.allocate( len );
+ ((Buffer) readBuffer).clear();
+ readBuffer.limit(len);
+ } else {
+ readBuffer = ByteBuffer.allocate(len);
}
- while ( len > 0 )
- {
- int read = channel.read( readBuffer );
- if ( read <= 0 )
- {
+ while (len > 0) {
+ int read = channel.read(readBuffer);
+ if (read <= 0) {
modified = true;
- channel.position( channel.position() - readBuffer.position() );
- channel.write( writeBuffer );
+ channel.position(channel.position() - readBuffer.position());
+ channel.write(writeBuffer);
return;
}
len -= read;
}
- ( ( Buffer ) readBuffer ).flip();
- if ( readBuffer.compareTo( writeBuffer ) != 0 )
- {
+ ((Buffer) readBuffer).flip();
+ if (readBuffer.compareTo(writeBuffer) != 0) {
modified = true;
- channel.position( channel.position() - readBuffer.remaining() );
- channel.write( writeBuffer );
+ channel.position(channel.position() - readBuffer.remaining());
+ channel.write(writeBuffer);
}
}
}
@Override
- public void close() throws IOException
- {
- if ( channel.isOpen() )
- {
+ public void close() throws IOException {
+ if (channel.isOpen()) {
flush();
long position = channel.position();
- if ( position != channel.size() )
- {
+ if (position != channel.size()) {
modified = true;
- channel.truncate( position );
+ channel.truncate(position);
}
channel.close();
}
}
- public boolean isModified()
- {
+ public boolean isModified() {
return modified;
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/io/CachingWriter.java b/src/main/java/org/codehaus/plexus/util/io/CachingWriter.java
index 23cc4411..98698712 100644
--- a/src/main/java/org/codehaus/plexus/util/io/CachingWriter.java
+++ b/src/main/java/org/codehaus/plexus/util/io/CachingWriter.java
@@ -19,44 +19,35 @@
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
-import java.io.StringWriter;
import java.nio.charset.Charset;
-import java.nio.file.Files;
import java.nio.file.Path;
-import java.util.Arrays;
import java.util.Objects;
/**
* Caching Writer to avoid overwriting a file with
* the same content.
*/
-public class CachingWriter extends OutputStreamWriter
-{
+public class CachingWriter extends OutputStreamWriter {
private final CachingOutputStream cos;
- public CachingWriter( File path, Charset charset ) throws IOException
- {
- this( Objects.requireNonNull( path ).toPath(), charset );
+ public CachingWriter(File path, Charset charset) throws IOException {
+ this(Objects.requireNonNull(path).toPath(), charset);
}
- public CachingWriter( Path path, Charset charset ) throws IOException
- {
- this( path, charset, 32 * 1024 );
+ public CachingWriter(Path path, Charset charset) throws IOException {
+ this(path, charset, 32 * 1024);
}
- public CachingWriter( Path path, Charset charset, int bufferSize ) throws IOException
- {
- this( new CachingOutputStream( path, bufferSize ), charset );
+ public CachingWriter(Path path, Charset charset, int bufferSize) throws IOException {
+ this(new CachingOutputStream(path, bufferSize), charset);
}
- private CachingWriter( CachingOutputStream outputStream, Charset charset ) throws IOException
- {
- super( outputStream, charset );
+ private CachingWriter(CachingOutputStream outputStream, Charset charset) throws IOException {
+ super(outputStream, charset);
this.cos = outputStream;
}
- public boolean isModified()
- {
+ public boolean isModified() {
return cos.isModified();
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/io/InputStreamFacade.java b/src/main/java/org/codehaus/plexus/util/io/InputStreamFacade.java
index bfa5c471..ff6112f0 100644
--- a/src/main/java/org/codehaus/plexus/util/io/InputStreamFacade.java
+++ b/src/main/java/org/codehaus/plexus/util/io/InputStreamFacade.java
@@ -23,13 +23,11 @@
* Interface of a wrapper for input streams. This facade is used by methods, which are being implemented for files,
* URL's, or input streams.
*/
-public interface InputStreamFacade
-{
+public interface InputStreamFacade {
/**
* The caller must assume, that this method may be invoked only once.
* @return Retrieves the actual {@link InputStream}.
* @throws IOException if io issue
*/
- InputStream getInputStream()
- throws IOException;
+ InputStream getInputStream() throws IOException;
}
diff --git a/src/main/java/org/codehaus/plexus/util/io/RawInputStreamFacade.java b/src/main/java/org/codehaus/plexus/util/io/RawInputStreamFacade.java
index e634b95f..02fac256 100644
--- a/src/main/java/org/codehaus/plexus/util/io/RawInputStreamFacade.java
+++ b/src/main/java/org/codehaus/plexus/util/io/RawInputStreamFacade.java
@@ -22,21 +22,16 @@
/**
* Implementation of {@link InputStreamFacade} for raw input streams.
*/
-@SuppressWarnings( { "UnusedDeclaration" } )
-public class RawInputStreamFacade
- implements InputStreamFacade
-{
+@SuppressWarnings({"UnusedDeclaration"})
+public class RawInputStreamFacade implements InputStreamFacade {
final InputStream stream;
- public RawInputStreamFacade( InputStream stream )
- {
+ public RawInputStreamFacade(InputStream stream) {
this.stream = stream;
}
@Override
- public InputStream getInputStream()
- throws IOException
- {
+ public InputStream getInputStream() throws IOException {
return stream;
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/io/URLInputStreamFacade.java b/src/main/java/org/codehaus/plexus/util/io/URLInputStreamFacade.java
index da09b4c1..be5a67ed 100644
--- a/src/main/java/org/codehaus/plexus/util/io/URLInputStreamFacade.java
+++ b/src/main/java/org/codehaus/plexus/util/io/URLInputStreamFacade.java
@@ -23,20 +23,15 @@
/**
* Implementation of {@link InputStreamFacade} for URL's.
*/
-public class URLInputStreamFacade
- implements InputStreamFacade
-{
+public class URLInputStreamFacade implements InputStreamFacade {
private final URL url;
- public URLInputStreamFacade( URL url )
- {
+ public URLInputStreamFacade(URL url) {
this.url = url;
}
@Override
- public InputStream getInputStream()
- throws IOException
- {
+ public InputStream getInputStream() throws IOException {
return url.openStream();
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/reflection/Reflector.java b/src/main/java/org/codehaus/plexus/util/reflection/Reflector.java
index 4f3a9d84..df530ffb 100644
--- a/src/main/java/org/codehaus/plexus/util/reflection/Reflector.java
+++ b/src/main/java/org/codehaus/plexus/util/reflection/Reflector.java
@@ -20,7 +20,6 @@
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-
import java.util.HashMap;
import java.util.Map;
@@ -30,19 +29,16 @@
*
* @author John Casey
*/
-public final class Reflector
-{
+public final class Reflector {
private static final String CONSTRUCTOR_METHOD_NAME = "$$CONSTRUCTOR$$";
private static final String GET_INSTANCE_METHOD_NAME = "getInstance";
private Map>> classMaps =
- new HashMap>>();
+ new HashMap>>();
/** Ensure no instances of Reflector are created...this is a utility. */
- public Reflector()
- {
- }
+ public Reflector() {}
/**
* Create a new instance of a class, given the array of parameters... Uses constructor caching to find a constructor
@@ -54,50 +50,41 @@ public Reflector()
* @return The instantiated object
* @throws ReflectorException In case anything goes wrong here...
*/
- @SuppressWarnings( { "UnusedDeclaration" } )
- public T newInstance( Class theClass, Object[] params )
- throws ReflectorException
- {
- if ( params == null )
- {
+ @SuppressWarnings({"UnusedDeclaration"})
+ public T newInstance(Class theClass, Object[] params) throws ReflectorException {
+ if (params == null) {
params = new Object[0];
}
Class[] paramTypes = new Class[params.length];
- for ( int i = 0, len = params.length; i < len; i++ )
- {
+ for (int i = 0, len = params.length; i < len; i++) {
paramTypes[i] = params[i].getClass();
}
- try
- {
- Constructor con = getConstructor( theClass, paramTypes );
+ try {
+ Constructor con = getConstructor(theClass, paramTypes);
- if ( con == null )
- {
+ if (con == null) {
StringBuilder buffer = new StringBuilder();
- buffer.append( "Constructor not found for class: " );
- buffer.append( theClass.getName() );
- buffer.append( " with specified or ancestor parameter classes: " );
+ buffer.append("Constructor not found for class: ");
+ buffer.append(theClass.getName());
+ buffer.append(" with specified or ancestor parameter classes: ");
- for ( Class paramType : paramTypes )
- {
- buffer.append( paramType.getName() );
- buffer.append( ',' );
+ for (Class paramType : paramTypes) {
+ buffer.append(paramType.getName());
+ buffer.append(',');
}
- buffer.setLength( buffer.length() - 1 );
+ buffer.setLength(buffer.length() - 1);
- throw new ReflectorException( buffer.toString() );
+ throw new ReflectorException(buffer.toString());
}
- return con.newInstance( params );
- }
- catch ( InstantiationException | InvocationTargetException | IllegalAccessException ex )
- {
- throw new ReflectorException( ex );
+ return con.newInstance(params);
+ } catch (InstantiationException | InvocationTargetException | IllegalAccessException ex) {
+ throw new ReflectorException(ex);
}
}
@@ -111,27 +98,21 @@ public T newInstance( Class theClass, Object[] params )
* @return The singleton object
* @throws ReflectorException In case anything goes wrong here...
*/
- @SuppressWarnings( { "UnusedDeclaration" } )
- public T getSingleton( Class theClass, Object[] initParams )
- throws ReflectorException
- {
+ @SuppressWarnings({"UnusedDeclaration"})
+ public T getSingleton(Class theClass, Object[] initParams) throws ReflectorException {
Class[] paramTypes = new Class[initParams.length];
- for ( int i = 0, len = initParams.length; i < len; i++ )
- {
+ for (int i = 0, len = initParams.length; i < len; i++) {
paramTypes[i] = initParams[i].getClass();
}
- try
- {
- Method method = getMethod( theClass, GET_INSTANCE_METHOD_NAME, paramTypes );
+ try {
+ Method method = getMethod(theClass, GET_INSTANCE_METHOD_NAME, paramTypes);
// noinspection unchecked
- return (T) method.invoke( null, initParams );
- }
- catch ( InvocationTargetException | IllegalAccessException ex )
- {
- throw new ReflectorException( ex );
+ return (T) method.invoke(null, initParams);
+ } catch (InvocationTargetException | IllegalAccessException ex) {
+ throw new ReflectorException(ex);
}
}
@@ -144,113 +125,86 @@ public T getSingleton( Class theClass, Object[] initParams )
* @return The result of the method call
* @throws ReflectorException In case of an error looking up or invoking the method.
*/
- @SuppressWarnings( { "UnusedDeclaration" } )
- public Object invoke( Object target, String methodName, Object[] params )
- throws ReflectorException
- {
- if ( params == null )
- {
+ @SuppressWarnings({"UnusedDeclaration"})
+ public Object invoke(Object target, String methodName, Object[] params) throws ReflectorException {
+ if (params == null) {
params = new Object[0];
}
Class[] paramTypes = new Class[params.length];
- for ( int i = 0, len = params.length; i < len; i++ )
- {
+ for (int i = 0, len = params.length; i < len; i++) {
paramTypes[i] = params[i].getClass();
}
- try
- {
- Method method = getMethod( target.getClass(), methodName, paramTypes );
+ try {
+ Method method = getMethod(target.getClass(), methodName, paramTypes);
- if ( method == null )
- {
+ if (method == null) {
StringBuilder buffer = new StringBuilder();
- buffer.append( "Singleton-producing method named '" ).append( methodName ).append( "' not found with specified parameter classes: " );
+ buffer.append("Singleton-producing method named '")
+ .append(methodName)
+ .append("' not found with specified parameter classes: ");
- for ( Class paramType : paramTypes )
- {
- buffer.append( paramType.getName() );
- buffer.append( ',' );
+ for (Class paramType : paramTypes) {
+ buffer.append(paramType.getName());
+ buffer.append(',');
}
- buffer.setLength( buffer.length() - 1 );
+ buffer.setLength(buffer.length() - 1);
- throw new ReflectorException( buffer.toString() );
+ throw new ReflectorException(buffer.toString());
}
- return method.invoke( target, params );
- }
- catch ( InvocationTargetException | IllegalAccessException ex )
- {
- throw new ReflectorException( ex );
+ return method.invoke(target, params);
+ } catch (InvocationTargetException | IllegalAccessException ex) {
+ throw new ReflectorException(ex);
}
}
- @SuppressWarnings( { "UnusedDeclaration" } )
- public Object getStaticField( Class targetClass, String fieldName )
- throws ReflectorException
- {
- try
- {
- Field field = targetClass.getField( fieldName );
+ @SuppressWarnings({"UnusedDeclaration"})
+ public Object getStaticField(Class targetClass, String fieldName) throws ReflectorException {
+ try {
+ Field field = targetClass.getField(fieldName);
- return field.get( null );
- }
- catch ( SecurityException | NoSuchFieldException | IllegalArgumentException | IllegalAccessException e )
- {
- throw new ReflectorException( e );
+ return field.get(null);
+ } catch (SecurityException | NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) {
+ throw new ReflectorException(e);
}
}
- @SuppressWarnings( { "UnusedDeclaration" } )
- public Object getField( Object target, String fieldName )
- throws ReflectorException
- {
- return getField( target, fieldName, false );
+ @SuppressWarnings({"UnusedDeclaration"})
+ public Object getField(Object target, String fieldName) throws ReflectorException {
+ return getField(target, fieldName, false);
}
- public Object getField( Object target, String fieldName, boolean breakAccessibility )
- throws ReflectorException
- {
+ public Object getField(Object target, String fieldName, boolean breakAccessibility) throws ReflectorException {
Class targetClass = target.getClass();
- while ( targetClass != null )
- {
- try
- {
- Field field = targetClass.getDeclaredField( fieldName );
+ while (targetClass != null) {
+ try {
+ Field field = targetClass.getDeclaredField(fieldName);
boolean accessibilityBroken = false;
- if ( !field.isAccessible() && breakAccessibility )
- {
- field.setAccessible( true );
+ if (!field.isAccessible() && breakAccessibility) {
+ field.setAccessible(true);
accessibilityBroken = true;
}
- Object result = field.get( target );
+ Object result = field.get(target);
- if ( accessibilityBroken )
- {
- field.setAccessible( false );
+ if (accessibilityBroken) {
+ field.setAccessible(false);
}
return result;
- }
- catch ( SecurityException e )
- {
- throw new ReflectorException( e );
- }
- catch ( NoSuchFieldException e )
- {
- if ( targetClass == Object.class )
- throw new ReflectorException( e );
+ } catch (SecurityException e) {
+ throw new ReflectorException(e);
+ } catch (NoSuchFieldException e) {
+ if (targetClass == Object.class) throw new ReflectorException(e);
targetClass = targetClass.getSuperclass();
- }
- catch ( IllegalAccessException e )
- {
- throw new ReflectorException( e );
+ } catch (IllegalAccessException e) {
+ throw new ReflectorException(e);
}
}
// Never reached, but needed to satisfy compiler
@@ -266,48 +220,41 @@ public Object getField( Object target, String fieldName, boolean breakAccessibil
* @return The result of the method call
* @throws ReflectorException In case of an error looking up or invoking the method.
*/
- @SuppressWarnings( { "UnusedDeclaration" } )
- public Object invokeStatic( Class targetClass, String methodName, Object[] params )
- throws ReflectorException
- {
- if ( params == null )
- {
+ @SuppressWarnings({"UnusedDeclaration"})
+ public Object invokeStatic(Class targetClass, String methodName, Object[] params) throws ReflectorException {
+ if (params == null) {
params = new Object[0];
}
Class[] paramTypes = new Class[params.length];
- for ( int i = 0, len = params.length; i < len; i++ )
- {
+ for (int i = 0, len = params.length; i < len; i++) {
paramTypes[i] = params[i].getClass();
}
- try
- {
- Method method = getMethod( targetClass, methodName, paramTypes );
+ try {
+ Method method = getMethod(targetClass, methodName, paramTypes);
- if ( method == null )
- {
+ if (method == null) {
StringBuilder buffer = new StringBuilder();
- buffer.append( "Singleton-producing method named \'" ).append( methodName ).append( "\' not found with specified parameter classes: " );
+ buffer.append("Singleton-producing method named \'")
+ .append(methodName)
+ .append("\' not found with specified parameter classes: ");
- for ( Class paramType : paramTypes )
- {
- buffer.append( paramType.getName() );
- buffer.append( ',' );
+ for (Class paramType : paramTypes) {
+ buffer.append(paramType.getName());
+ buffer.append(',');
}
- buffer.setLength( buffer.length() - 1 );
+ buffer.setLength(buffer.length() - 1);
- throw new ReflectorException( buffer.toString() );
+ throw new ReflectorException(buffer.toString());
}
- return method.invoke( null, params );
- }
- catch ( InvocationTargetException | IllegalAccessException ex )
- {
- throw new ReflectorException( ex );
+ return method.invoke(null, params);
+ } catch (InvocationTargetException | IllegalAccessException ex) {
+ throw new ReflectorException(ex);
}
}
@@ -320,142 +267,112 @@ public Object invokeStatic( Class targetClass, String methodName, Object[] param
* @return the Constructor object that matches.
* @throws ReflectorException In case we can't retrieve the proper constructor.
*/
- public Constructor getConstructor( Class targetClass, Class[] params )
- throws ReflectorException
- {
- Map> constructorMap = getConstructorMap( targetClass );
+ public Constructor getConstructor(Class targetClass, Class[] params) throws ReflectorException {
+ Map> constructorMap = getConstructorMap(targetClass);
- StringBuilder key = new StringBuilder( 200 );
+ StringBuilder key = new StringBuilder(200);
- key.append( "(" );
+ key.append("(");
- for ( Class param : params )
- {
- key.append( param.getName() );
- key.append( "," );
+ for (Class param : params) {
+ key.append(param.getName());
+ key.append(",");
}
- if ( params.length > 0 )
- {
- key.setLength( key.length() - 1 );
+ if (params.length > 0) {
+ key.setLength(key.length() - 1);
}
- key.append( ")" );
+ key.append(")");
Constructor constructor;
String paramKey = key.toString();
- synchronized ( paramKey.intern() )
- {
- constructor = constructorMap.get( paramKey );
+ synchronized (paramKey.intern()) {
+ constructor = constructorMap.get(paramKey);
- if ( constructor == null )
- {
- @SuppressWarnings( { "unchecked" } )
+ if (constructor == null) {
+ @SuppressWarnings({"unchecked"})
Constructor[] cands = (Constructor[]) targetClass.getConstructors();
- for ( Constructor cand : cands )
- {
+ for (Constructor cand : cands) {
Class[] types = cand.getParameterTypes();
- if ( params.length != types.length )
- {
+ if (params.length != types.length) {
continue;
}
- for ( int j = 0, len2 = params.length; j < len2; j++ )
- {
- if ( !types[j].isAssignableFrom( params[j] ) )
- {
+ for (int j = 0, len2 = params.length; j < len2; j++) {
+ if (!types[j].isAssignableFrom(params[j])) {
continue;
}
}
// we got it, so store it!
constructor = cand;
- constructorMap.put( paramKey, constructor );
+ constructorMap.put(paramKey, constructor);
}
}
}
- if ( constructor == null )
- {
- throw new ReflectorException( "Error retrieving constructor object for: " + targetClass.getName()
- + paramKey );
+ if (constructor == null) {
+ throw new ReflectorException(
+ "Error retrieving constructor object for: " + targetClass.getName() + paramKey);
}
return constructor;
}
- public Object getObjectProperty( Object target, String propertyName )
- throws ReflectorException
- {
+ public Object getObjectProperty(Object target, String propertyName) throws ReflectorException {
Object returnValue;
- if ( propertyName == null || propertyName.trim().length() < 1 )
- {
- throw new ReflectorException( "Cannot retrieve value for empty property." );
+ if (propertyName == null || propertyName.trim().length() < 1) {
+ throw new ReflectorException("Cannot retrieve value for empty property.");
}
- String beanAccessor = "get" + Character.toUpperCase( propertyName.charAt( 0 ) );
- if ( propertyName.trim().length() > 1 )
- {
- beanAccessor += propertyName.substring( 1 ).trim();
+ String beanAccessor = "get" + Character.toUpperCase(propertyName.charAt(0));
+ if (propertyName.trim().length() > 1) {
+ beanAccessor += propertyName.substring(1).trim();
}
Class targetClass = target.getClass();
Class[] emptyParams = {};
- Method method = _getMethod( targetClass, beanAccessor, emptyParams );
- if ( method == null )
- {
- method = _getMethod( targetClass, propertyName, emptyParams );
- }
- if ( method != null )
- {
- try
- {
- returnValue = method.invoke( target, new Object[] {} );
- }
- catch ( IllegalAccessException e )
- {
- throw new ReflectorException( "Error retrieving property \'" + propertyName + "\' from \'" + targetClass
- + "\'", e );
- }
- catch ( InvocationTargetException e )
- {
- throw new ReflectorException( "Error retrieving property \'" + propertyName + "\' from \'" + targetClass
- + "\'", e );
+ Method method = _getMethod(targetClass, beanAccessor, emptyParams);
+ if (method == null) {
+ method = _getMethod(targetClass, propertyName, emptyParams);
+ }
+ if (method != null) {
+ try {
+ returnValue = method.invoke(target, new Object[] {});
+ } catch (IllegalAccessException e) {
+ throw new ReflectorException(
+ "Error retrieving property \'" + propertyName + "\' from \'" + targetClass + "\'", e);
+ } catch (InvocationTargetException e) {
+ throw new ReflectorException(
+ "Error retrieving property \'" + propertyName + "\' from \'" + targetClass + "\'", e);
}
}
- if ( method != null )
- {
- try
- {
- returnValue = method.invoke( target, new Object[] {} );
- }
- catch ( IllegalAccessException e )
- {
- throw new ReflectorException( "Error retrieving property \'" + propertyName + "\' from \'" + targetClass
- + "\'", e );
+ if (method != null) {
+ try {
+ returnValue = method.invoke(target, new Object[] {});
+ } catch (IllegalAccessException e) {
+ throw new ReflectorException(
+ "Error retrieving property \'" + propertyName + "\' from \'" + targetClass + "\'", e);
+ } catch (InvocationTargetException e) {
+ throw new ReflectorException(
+ "Error retrieving property \'" + propertyName + "\' from \'" + targetClass + "\'", e);
}
- catch ( InvocationTargetException e )
- {
- throw new ReflectorException( "Error retrieving property \'" + propertyName + "\' from \'" + targetClass
- + "\'", e );
- }
- }
- else
- {
- returnValue = getField( target, propertyName, true );
- if ( returnValue == null )
- {
+ } else {
+ returnValue = getField(target, propertyName, true);
+ if (returnValue == null) {
// TODO: Check if exception is the right action! Field exists, but contains null
- throw new ReflectorException( "Neither method: \'" + propertyName + "\' nor bean accessor: \'"
- + beanAccessor + "\' can be found for class: \'" + targetClass + "\', and retrieval of field: \'"
- + propertyName + "\' returned null as value." );
+ throw new ReflectorException("Neither method: \'" + propertyName + "\' nor bean accessor: \'"
+ + beanAccessor + "\' can be found for class: \'" + targetClass
+ + "\', and retrieval of field: \'"
+ + propertyName + "\' returned null as value.");
}
}
@@ -471,76 +388,62 @@ public Object getObjectProperty( Object target, String propertyName )
* @return the Method object that matches.
* @throws ReflectorException In case we can't retrieve the proper method.
*/
- public Method getMethod( Class targetClass, String methodName, Class[] params )
- throws ReflectorException
- {
- Method method = _getMethod( targetClass, methodName, params );
-
- if ( method == null )
- {
- throw new ReflectorException( "Method: \'" + methodName + "\' not found in class: \'" + targetClass
- + "\'" );
+ public Method getMethod(Class targetClass, String methodName, Class[] params) throws ReflectorException {
+ Method method = _getMethod(targetClass, methodName, params);
+
+ if (method == null) {
+ throw new ReflectorException("Method: \'" + methodName + "\' not found in class: \'" + targetClass + "\'");
}
return method;
}
- private Method _getMethod( Class targetClass, String methodName, Class[] params )
- throws ReflectorException
- {
- Map methodMap = (Map) getMethodMap( targetClass, methodName );
+ private Method _getMethod(Class targetClass, String methodName, Class[] params) throws ReflectorException {
+ Map methodMap = (Map) getMethodMap(targetClass, methodName);
- StringBuilder key = new StringBuilder( 200 );
+ StringBuilder key = new StringBuilder(200);
- key.append( "(" );
+ key.append("(");
- for ( Class param : params )
- {
- key.append( param.getName() );
- key.append( "," );
+ for (Class param : params) {
+ key.append(param.getName());
+ key.append(",");
}
- key.append( ")" );
+ key.append(")");
Method method;
String paramKey = key.toString();
- synchronized ( paramKey.intern() )
- {
- method = methodMap.get( paramKey );
+ synchronized (paramKey.intern()) {
+ method = methodMap.get(paramKey);
- if ( method == null )
- {
+ if (method == null) {
Method[] cands = targetClass.getMethods();
- for ( Method cand : cands )
- {
+ for (Method cand : cands) {
String name = cand.getName();
- if ( !methodName.equals( name ) )
- {
+ if (!methodName.equals(name)) {
continue;
}
Class[] types = cand.getParameterTypes();
- if ( params.length != types.length )
- {
+ if (params.length != types.length) {
continue;
}
- for ( int j = 0, len2 = params.length; j < len2; j++ )
- {
- if ( !types[j].isAssignableFrom( params[j] ) )
- {
+ for (int j = 0, len2 = params.length; j < len2; j++) {
+ if (!types[j].isAssignableFrom(params[j])) {
continue;
}
}
// we got it, so store it!
method = cand;
- methodMap.put( paramKey, method );
+ methodMap.put(paramKey, method);
}
}
}
@@ -555,10 +458,8 @@ private Method _getMethod( Class targetClass, String methodName, Class[] params
* @return The cache of constructors.
* @throws ReflectorException in case of a lookup error.
*/
- private Map> getConstructorMap( Class theClass )
- throws ReflectorException
- {
- return (Map>) getMethodMap( theClass, CONSTRUCTOR_METHOD_NAME );
+ private Map> getConstructorMap(Class theClass) throws ReflectorException {
+ return (Map>) getMethodMap(theClass, CONSTRUCTOR_METHOD_NAME);
}
/**
@@ -569,41 +470,32 @@ private Map> getConstructorMap( Class theClass )
* @return The cache of constructors.
* @throws ReflectorException in case of a lookup error.
*/
- private Map getMethodMap( Class theClass, String methodName )
- throws ReflectorException
- {
+ private Map getMethodMap(Class theClass, String methodName) throws ReflectorException {
Map methodMap;
- if ( theClass == null )
- {
+ if (theClass == null) {
return null;
}
String className = theClass.getName();
- synchronized ( className.intern() )
- {
- Map> classMethods = classMaps.get( className );
+ synchronized (className.intern()) {
+ Map> classMethods = classMaps.get(className);
- if ( classMethods == null )
- {
+ if (classMethods == null) {
classMethods = new HashMap<>();
methodMap = new HashMap<>();
- classMethods.put( methodName, methodMap );
- classMaps.put( className, classMethods );
- }
- else
- {
+ classMethods.put(methodName, methodMap);
+ classMaps.put(className, classMethods);
+ } else {
String key = className + "::" + methodName;
- synchronized ( key.intern() )
- {
- methodMap = classMethods.get( methodName );
+ synchronized (key.intern()) {
+ methodMap = classMethods.get(methodName);
- if ( methodMap == null )
- {
+ if (methodMap == null) {
methodMap = new HashMap<>();
- classMethods.put( methodName, methodMap );
+ classMethods.put(methodName, methodMap);
}
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/reflection/ReflectorException.java b/src/main/java/org/codehaus/plexus/util/reflection/ReflectorException.java
index 01952f7b..4608e175 100644
--- a/src/main/java/org/codehaus/plexus/util/reflection/ReflectorException.java
+++ b/src/main/java/org/codehaus/plexus/util/reflection/ReflectorException.java
@@ -22,22 +22,17 @@
*
* @author John Casey
*/
-public class ReflectorException
- extends Exception
-{
- @SuppressWarnings( { "UnusedDeclaration" } )
- public ReflectorException()
- {
- }
+public class ReflectorException extends Exception {
+ @SuppressWarnings({"UnusedDeclaration"})
+ public ReflectorException() {}
/**
* Create a new ReflectorException with the specified message.
*
* @param msg The message.
*/
- public ReflectorException( String msg )
- {
- super( msg );
+ public ReflectorException(String msg) {
+ super(msg);
}
/**
@@ -45,9 +40,8 @@ public ReflectorException( String msg )
*
* @param root The root cause.
*/
- public ReflectorException( Throwable root )
- {
- super( root );
+ public ReflectorException(Throwable root) {
+ super(root);
}
/**
@@ -56,8 +50,7 @@ public ReflectorException( Throwable root )
* @param msg The message.
* @param root The root cause.
*/
- public ReflectorException( String msg, Throwable root )
- {
- super( msg, root );
+ public ReflectorException(String msg, Throwable root) {
+ super(msg, root);
}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/codehaus/plexus/util/AbstractTestThread.java b/src/test/java/org/codehaus/plexus/util/AbstractTestThread.java
index ca5ba4ed..1a67c001 100644
--- a/src/test/java/org/codehaus/plexus/util/AbstractTestThread.java
+++ b/src/test/java/org/codehaus/plexus/util/AbstractTestThread.java
@@ -27,9 +27,7 @@
* @version $Id: $Id
* @since 3.4.0
*/
-public abstract class AbstractTestThread
- implements Runnable
-{
+public abstract class AbstractTestThread implements Runnable {
// ~ Instance fields ----------------------------------------------------------------------------
private String name;
@@ -65,8 +63,7 @@ public abstract class AbstractTestThread
*
* Remember to call setThreadRegistry(ThreadRegistry)
*/
- public AbstractTestThread()
- {
+ public AbstractTestThread() {
super();
}
@@ -75,10 +72,9 @@ public AbstractTestThread()
*
* @param registry a {@link org.codehaus.plexus.util.TestThreadManager} object.
*/
- public AbstractTestThread( TestThreadManager registry )
- {
+ public AbstractTestThread(TestThreadManager registry) {
super();
- setThreadRegistry( registry );
+ setThreadRegistry(registry);
}
// ~ Methods ------------------------------------------------------------------------------------
@@ -88,8 +84,7 @@ public AbstractTestThread( TestThreadManager registry )
*
* @return a {@link java.lang.Throwable} object.
*/
- public Throwable getError()
- {
+ public Throwable getError() {
return error;
}
@@ -97,19 +92,13 @@ public Throwable getError()
* Resets the test back to it's state before starting. If the test is currently running this method will block until
* the test has finished running. Subclasses should call this method if overriding it.
*/
- public void reset()
- {
+ public void reset() {
// shouldn't reset until the test has finished running
- synchronized ( this )
- {
- while ( isRunning )
- {
- try
- {
+ synchronized (this) {
+ while (isRunning) {
+ try {
wait();
- }
- catch ( InterruptedException e )
- {
+ } catch (InterruptedException e) {
}
}
@@ -123,15 +112,12 @@ public void reset()
/**
* Start this TestThread running. If the test is currently running then this method does nothing.
*/
- public final void start()
- {
+ public final void start() {
// shouldn't have multiple threads running this test at the same time
- synchronized ( this )
- {
- if ( isRunning == false )
- {
+ synchronized (this) {
+ if (isRunning == false) {
isRunning = true;
- Thread t = new Thread( this );
+ Thread t = new Thread(this);
t.start();
}
}
@@ -142,8 +128,7 @@ public final void start()
*
* @return a {@link java.lang.String} object.
*/
- public String getErrorMsg()
- {
+ public String getErrorMsg() {
return errorMsg;
}
@@ -152,8 +137,7 @@ public String getErrorMsg()
*
* @return a boolean.
*/
- public boolean hasFailed()
- {
+ public boolean hasFailed() {
return !passed;
}
@@ -162,8 +146,7 @@ public boolean hasFailed()
*
* @return DOCUMENT ME!
*/
- public boolean hasPassed()
- {
+ public boolean hasPassed() {
return passed;
}
@@ -172,29 +155,24 @@ public boolean hasPassed()
*
* @see java.lang.Runnable#run()
*/
- public final void run()
- {
- if ( registry == null )
- {
- throw new IllegalArgumentException( "The ThreadRegistry is null. Ensure this is set before running this thread" );
+ public final void run() {
+ if (registry == null) {
+ throw new IllegalArgumentException(
+ "The ThreadRegistry is null. Ensure this is set before running this thread");
}
passed = false;
- try
- {
+ try {
doRun();
- }
- catch ( Throwable t )
- {
+ } catch (Throwable t) {
error = t;
}
- registry.completed( this );
+ registry.completed(this);
hasRun = true;
isRunning = false;
// notify objects with blocked methods which are waiting
// on this test to complete running
- synchronized ( this )
- {
+ synchronized (this) {
notifyAll();
}
}
@@ -204,17 +182,15 @@ public final void run()
*
* @throws java.lang.Throwable
*/
- public abstract void doRun()
- throws Throwable;
+ public abstract void doRun() throws Throwable;
/**
* Set the registry this thread should notify when it has completed running
*
* @param registry a {@link org.codehaus.plexus.util.TestThreadManager} object.
*/
- public void setThreadRegistry( TestThreadManager registry )
+ public void setThreadRegistry(TestThreadManager registry) {
- {
this.registry = registry;
}
@@ -223,8 +199,7 @@ public void setThreadRegistry( TestThreadManager registry )
*
* @return a boolean.
*/
- public boolean hasRun()
- {
+ public boolean hasRun() {
return hasRun;
}
@@ -233,8 +208,7 @@ public boolean hasRun()
*
* @param throwable a {@link java.lang.Throwable} object.
*/
- public void setError( Throwable throwable )
- {
+ public void setError(Throwable throwable) {
error = throwable;
}
@@ -243,8 +217,7 @@ public void setError( Throwable throwable )
*
* @param string a {@link java.lang.String} object.
*/
- public void setErrorMsg( String string )
- {
+ public void setErrorMsg(String string) {
errorMsg = string;
}
@@ -253,8 +226,7 @@ public void setErrorMsg( String string )
*
* @param b a boolean.
*/
- public void setPassed( boolean b )
- {
+ public void setPassed(boolean b) {
passed = b;
}
@@ -263,8 +235,7 @@ public void setPassed( boolean b )
*
* @return a {@link java.lang.String} object.
*/
- public String getName()
- {
+ public String getName() {
return name;
}
@@ -273,16 +244,13 @@ public String getName()
*
* @param string a {@link java.lang.String} object.
*/
- public void setName( String string )
- {
+ public void setName(String string) {
name = string;
}
- private final void debug( String msg )
- {
- if ( DEBUG )
- {
- System.out.println( this + ":" + msg );
+ private final void debug(String msg) {
+ if (DEBUG) {
+ System.out.println(this + ":" + msg);
}
}
}
diff --git a/src/test/java/org/codehaus/plexus/util/CollectionUtilsTest.java b/src/test/java/org/codehaus/plexus/util/CollectionUtilsTest.java
index edd76231..765e536a 100644
--- a/src/test/java/org/codehaus/plexus/util/CollectionUtilsTest.java
+++ b/src/test/java/org/codehaus/plexus/util/CollectionUtilsTest.java
@@ -16,10 +16,6 @@
* limitations under the License.
*/
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -28,6 +24,10 @@
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
/**
*
CollectionUtilsTest class.
*
@@ -35,109 +35,105 @@
* @version $Id: $Id
* @since 3.4.0
*/
-public class CollectionUtilsTest
-{
+public class CollectionUtilsTest {
/**
* testMergeMaps.
*/
@Test
- public void testMergeMaps()
- {
+ public void testMergeMaps() {
Map dominantMap = new HashMap();
- dominantMap.put( "a", "a" );
- dominantMap.put( "b", "b" );
- dominantMap.put( "c", "c" );
- dominantMap.put( "d", "d" );
- dominantMap.put( "e", "e" );
- dominantMap.put( "f", "f" );
+ dominantMap.put("a", "a");
+ dominantMap.put("b", "b");
+ dominantMap.put("c", "c");
+ dominantMap.put("d", "d");
+ dominantMap.put("e", "e");
+ dominantMap.put("f", "f");
Map recessiveMap = new HashMap();
- recessiveMap.put( "a", "invalid" );
- recessiveMap.put( "b", "invalid" );
- recessiveMap.put( "c", "invalid" );
- recessiveMap.put( "x", "x" );
- recessiveMap.put( "y", "y" );
- recessiveMap.put( "z", "z" );
+ recessiveMap.put("a", "invalid");
+ recessiveMap.put("b", "invalid");
+ recessiveMap.put("c", "invalid");
+ recessiveMap.put("x", "x");
+ recessiveMap.put("y", "y");
+ recessiveMap.put("z", "z");
- Map result = CollectionUtils.mergeMaps( dominantMap, recessiveMap );
+ Map result = CollectionUtils.mergeMaps(dominantMap, recessiveMap);
// We should have 9 elements
- assertEquals( 9, result.keySet().size() );
+ assertEquals(9, result.keySet().size());
// Check the elements.
- assertEquals( "a", result.get( "a" ) );
- assertEquals( "b", result.get( "b" ) );
- assertEquals( "c", result.get( "c" ) );
- assertEquals( "d", result.get( "d" ) );
- assertEquals( "e", result.get( "e" ) );
- assertEquals( "f", result.get( "f" ) );
- assertEquals( "x", result.get( "x" ) );
- assertEquals( "y", result.get( "y" ) );
- assertEquals( "z", result.get( "z" ) );
+ assertEquals("a", result.get("a"));
+ assertEquals("b", result.get("b"));
+ assertEquals("c", result.get("c"));
+ assertEquals("d", result.get("d"));
+ assertEquals("e", result.get("e"));
+ assertEquals("f", result.get("f"));
+ assertEquals("x", result.get("x"));
+ assertEquals("y", result.get("y"));
+ assertEquals("z", result.get("z"));
}
/**
* testMergeMapArray.
*/
- @SuppressWarnings( "unchecked" )
+ @SuppressWarnings("unchecked")
@Test
- public void testMergeMapArray()
- {
+ public void testMergeMapArray() {
// Test empty array of Maps
- Map result0 = CollectionUtils.mergeMaps( new Map[] {} );
+ Map result0 = CollectionUtils.mergeMaps(new Map[] {});
- assertNull( result0 );
+ assertNull(result0);
// Test with an array with a single element.
Map map1 = new HashMap();
- map1.put( "a", "a" );
+ map1.put("a", "a");
- Map result1 = CollectionUtils.mergeMaps( new Map[] { map1 } );
+ Map result1 = CollectionUtils.mergeMaps(new Map[] {map1});
- assertEquals( "a", result1.get( "a" ) );
+ assertEquals("a", result1.get("a"));
// Test with an array with two elements.
Map map2 = new HashMap();
- map2.put( "a", "aa" );
- map2.put( "b", "bb" );
+ map2.put("a", "aa");
+ map2.put("b", "bb");
- Map result2 = CollectionUtils.mergeMaps( new Map[] { map1, map2 } );
+ Map result2 = CollectionUtils.mergeMaps(new Map[] {map1, map2});
- assertEquals( "a", result2.get( "a" ) );
- assertEquals( "bb", result2.get( "b" ) );
+ assertEquals("a", result2.get("a"));
+ assertEquals("bb", result2.get("b"));
// Now swap the dominant order.
- Map result3 = CollectionUtils.mergeMaps( new Map[] { map2, map1 } );
+ Map result3 = CollectionUtils.mergeMaps(new Map[] {map2, map1});
- assertEquals( "aa", result3.get( "a" ) );
- assertEquals( "bb", result3.get( "b" ) );
+ assertEquals("aa", result3.get("a"));
+ assertEquals("bb", result3.get("b"));
// Test with an array with three elements.
Map map3 = new HashMap();
- map3.put( "a", "aaa" );
- map3.put( "b", "bbb" );
- map3.put( "c", "ccc" );
+ map3.put("a", "aaa");
+ map3.put("b", "bbb");
+ map3.put("c", "ccc");
- Map result4 = CollectionUtils.mergeMaps( new Map[] { map1, map2, map3 } );
+ Map result4 = CollectionUtils.mergeMaps(new Map[] {map1, map2, map3});
- assertEquals( "a", result4.get( "a" ) );
- assertEquals( "bb", result4.get( "b" ) );
- assertEquals( "ccc", result4.get( "c" ) );
+ assertEquals("a", result4.get("a"));
+ assertEquals("bb", result4.get("b"));
+ assertEquals("ccc", result4.get("c"));
// Now swap the dominant order.
- Map result5 = CollectionUtils.mergeMaps( new Map[] { map3, map2, map1 } );
+ Map result5 = CollectionUtils.mergeMaps(new Map[] {map3, map2, map1});
- assertEquals( "aaa", result5.get( "a" ) );
- assertEquals( "bbb", result5.get( "b" ) );
- assertEquals( "ccc", result5.get( "c" ) );
+ assertEquals("aaa", result5.get("a"));
+ assertEquals("bbb", result5.get("b"));
+ assertEquals("ccc", result5.get("c"));
}
/**
*