You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2019/04/19 14:41:13 UTC

[sling-org-apache-sling-committer-cli] branch feature/SLING-8337 created (now 91474bb)

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a change to branch feature/SLING-8337
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-committer-cli.git.


      at 91474bb  SLING-8337 - Create sub-command to manage the Jira update when promoting a release

This branch includes the following new commits:

     new a610edd  Update to released parent version (still under vote)
     new 939fe36  Updated .gitignore file
     new 91474bb  SLING-8337 - Create sub-command to manage the Jira update when promoting a release

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[sling-org-apache-sling-committer-cli] 02/03: Updated .gitignore file

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to branch feature/SLING-8337
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-committer-cli.git

commit 939fe36b3e8a2c29488ca31a02a395d4c792775a
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Fri Apr 19 15:20:12 2019 +0300

    Updated .gitignore file
---
 .gitignore | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.gitignore b/.gitignore
index 84d2b34..9b12573 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,5 @@
 docker-env
 /target/
+/.classpath
+/.settings
+/.project


[sling-org-apache-sling-committer-cli] 03/03: SLING-8337 - Create sub-command to manage the Jira update when promoting a release

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to branch feature/SLING-8337
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-committer-cli.git

commit 91474bbffc273bd5d951bd8673e240d82b693ec3
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Fri Apr 19 17:40:12 2019 +0300

    SLING-8337 - Create sub-command to manage the Jira update when promoting a release
    
    Initial work on read-only Jira release command.
---
 .../org/apache/sling/cli/impl/jira/Version.java    |    6 +
 .../apache/sling/cli/impl/jira/VersionFinder.java  |  134 +-
 .../cli/impl/release/PrepareVoteEmailCommand.java  |    2 +-
 .../org/apache/sling/cli/impl/release/Release.java |   50 +
 .../sling/cli/impl/release/UpdateJiraCommand.java  |   65 +
 .../sling/cli/impl/jira/VersionFinderTest.java     |   93 +
 .../apache/sling/cli/impl/release/ReleaseTest.java |   15 +
 src/test/resources/README.md                       |   11 +
 .../jira/relatedIssueCounts/12329667.json          |    6 +
 .../jira/relatedIssueCounts/12329844.json          |    6 +
 src/test/resources/jira/versions.json              | 2087 ++++++++++++++++++++
 11 files changed, 2447 insertions(+), 28 deletions(-)

diff --git a/src/main/java/org/apache/sling/cli/impl/jira/Version.java b/src/main/java/org/apache/sling/cli/impl/jira/Version.java
index 7cce8d5..173971e 100644
--- a/src/main/java/org/apache/sling/cli/impl/jira/Version.java
+++ b/src/main/java/org/apache/sling/cli/impl/jira/Version.java
@@ -44,4 +44,10 @@ public class Version {
     public void setRelatedIssuesCount(int relatedIssuesCount) {
         this.issuesFixedCount = relatedIssuesCount;
     }
+    
+    @Override
+    public String toString() {
+        
+        return "Version: " + name + " (id=" + id+", fixed issues="+issuesFixedCount+")";
+    }
 }
diff --git a/src/main/java/org/apache/sling/cli/impl/jira/VersionFinder.java b/src/main/java/org/apache/sling/cli/impl/jira/VersionFinder.java
index a752be0..2c2be18 100644
--- a/src/main/java/org/apache/sling/cli/impl/jira/VersionFinder.java
+++ b/src/main/java/org/apache/sling/cli/impl/jira/VersionFinder.java
@@ -21,7 +21,9 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.lang.reflect.Type;
 import java.util.List;
-import java.util.stream.Collectors;
+import java.util.Optional;
+import java.util.function.Function;
+import java.util.function.Predicate;
 
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpGet;
@@ -33,14 +35,25 @@ import org.osgi.service.component.annotations.Component;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 
+/**
+ * Access the ASF <em>Jira</em> instance and looks up project version data.
+ */
 @Component(service = VersionFinder.class)
 public class VersionFinder {
 
-    public Version find(String versionName) {
+    /**
+     * Finds a Jira version which matches the specified release
+     * 
+     * @param release the release
+     * @return the version
+     * @throws IllegalArgumentException when no matching Jira release is found
+     */
+    public Version find(Release release) {
         Version version;
         
         try (CloseableHttpClient client = HttpClients.createDefault()) {
-            version = findVersion(versionName, client);
+            version = findVersion( v -> release.getName().equals(v.getName()), client)
+                    .orElseThrow( () -> new IllegalArgumentException("No version found with name " + release.getName()));
             populateRelatedIssuesCount(client, version);
         } catch ( IOException e ) {
             throw new RuntimeException(e);
@@ -49,48 +62,115 @@ public class VersionFinder {
         return version;
     }
 
-    private Version findVersion(String versionName, CloseableHttpClient client) throws IOException {
+    /**
+     * Finds a version that is the successor of the version of the specified
+     * <tt>release</tt>
+     * 
+     * <p>
+     * A successor has the same base name but a higher version. For instance, the
+     * <em>XSS Protection API 2.1.6</em> is succeeded by <em>XSS Protection API
+     * 2.1.8</em>.
+     * </p>
+     * 
+     * <p>
+     * If multiple successors are found the one which is closest in terms of
+     * versioning is returned.
+     * </p>
+     * 
+     * @param release the release to find a successor for
+     * @return the successor version, possibly <code>null</code>
+     * @throws IOException in case of communication errors with Jira
+     */
+    public Version findSuccessorVersion(Release release) {
         Version version;
-        HttpGet get = new HttpGet("https://issues.apache.org/jira/rest/api/2/project/SLING/versions");
-        get.addHeader("Accept", "application/json");
+        
+        try ( CloseableHttpClient client = HttpClients.createDefault() ) {
+            Optional<Version> opt = findVersion ( 
+                    v -> {
+                        Release releaseFromVersion = Release.fromString(v.getName()).get(0);
+                        return 
+                            releaseFromVersion.getComponent().equals(release.getComponent())
+                                && new org.osgi.framework.Version(releaseFromVersion.getVersion()).compareTo(new org.osgi.framework.Version(release.getVersion())) > 0;
+                    },client);
+            if ( !opt.isPresent() )
+                return null;
+            version = opt.get();
+            populateRelatedIssuesCount(client, version);
+        } catch ( IOException e ) {
+            throw new RuntimeException(e);
+        }
+        
+        return version;
+    }
+
+    private Optional<Version> findVersion(Predicate<Version> matcher, CloseableHttpClient client) throws IOException {
+        
+        return doWithJiraVersions(client, reader -> {
+            Gson gson = new Gson();
+            Type collectionType = TypeToken.getParameterized(List.class, Version.class).getType();
+            List<Version> versions = gson.fromJson(reader, collectionType);
+            return versions.stream()
+                    .filter( v -> v.getName().length() > 1) // avoid old '3' release
+                    .filter(matcher)
+                    .sorted(VersionFinder::compare)
+                    .findFirst();
+        });
+    }
+    
+    protected <T> T doWithJiraVersions(CloseableHttpClient client, Function<InputStreamReader, T> parserCallback) throws IOException {
+        HttpGet get = newGet("project/SLING/versions");
         try (CloseableHttpResponse response = client.execute(get)) {
             try (InputStream content = response.getEntity().getContent();
                     InputStreamReader reader = new InputStreamReader(content)) {
                 if (response.getStatusLine().getStatusCode() != 200)
                     throw new IOException("Status line : " + response.getStatusLine());
-                Gson gson = new Gson();
-                Type collectionType = TypeToken.getParameterized(List.class, Version.class).getType();
-                List<Version> versions = gson.fromJson(reader, collectionType);
-                List<String> filter = Release.fromString(versionName)
-                        .stream()
-                        .map( Release::getName )
-                        .collect(Collectors.toList());
                 
-                version = versions.stream()
-                    .filter(v -> filter.contains(v.getName()))
-                    .findFirst()
-                    .orElseThrow( () -> new IllegalArgumentException("No version found with name " + versionName));
+                return parserCallback.apply(reader);
             }
         }
-        return version;
     }
-
-    private void populateRelatedIssuesCount(CloseableHttpClient client, Version version) throws IOException {
-
-        HttpGet get = new HttpGet("https://issues.apache.org/jira/rest/api/2/version/" + version.getId() +"/relatedIssueCounts");
-        get.addHeader("Accept", "application/json");
+    
+    protected <T> T doWithRelatedIssueCounts(CloseableHttpClient client, Version version, Function<InputStreamReader, T> parserCallback) throws IOException {
+        
+        HttpGet get = newGet("version/" + version.getId() +"/relatedIssueCounts");
         try (CloseableHttpResponse response = client.execute(get)) {
             try (InputStream content = response.getEntity().getContent();
                     InputStreamReader reader = new InputStreamReader(content)) {
                 if (response.getStatusLine().getStatusCode() != 200)
                     throw new IOException("Status line : " + response.getStatusLine());
-                Gson gson = new Gson();
-                VersionRelatedIssuesCount issuesCount = gson.fromJson(reader, VersionRelatedIssuesCount.class);
-                
-                version.setRelatedIssuesCount(issuesCount.getIssuesFixedCount());
+                return parserCallback.apply(reader);
             }
         }
     }
+    
+    private HttpGet newGet(String suffix) {
+        HttpGet get = new HttpGet("https://issues.apache.org/jira/rest/api/2/" + suffix);
+        get.addHeader("Accept", "application/json");
+        return get;
+    }
+    
+    private void populateRelatedIssuesCount(CloseableHttpClient client, Version version) throws IOException {
+        
+        doWithRelatedIssueCounts(client, version, reader ->  {
+            Gson gson = new Gson();
+            VersionRelatedIssuesCount issuesCount = gson.fromJson(reader, VersionRelatedIssuesCount.class);
+            
+            version.setRelatedIssuesCount(issuesCount.getIssuesFixedCount());
+
+            return null;
+        });
+    }
+    
+    private static int compare(Version v1, Version v2) {
+        // version names will never map to multiple release names
+        Release r1 = Release.fromString(v1.getName()).get(0);
+        Release r2 = Release.fromString(v2.getName()).get(0);
+        
+        org.osgi.framework.Version ver1 = new org.osgi.framework.Version(r1.getVersion());
+        org.osgi.framework.Version ver2 = new org.osgi.framework.Version(r2.getVersion());
+        
+        return ver1.compareTo(ver2);
+    }
 
     static class VersionRelatedIssuesCount {
 
diff --git a/src/main/java/org/apache/sling/cli/impl/release/PrepareVoteEmailCommand.java b/src/main/java/org/apache/sling/cli/impl/release/PrepareVoteEmailCommand.java
index 4cc4222..8656362 100644
--- a/src/main/java/org/apache/sling/cli/impl/release/PrepareVoteEmailCommand.java
+++ b/src/main/java/org/apache/sling/cli/impl/release/PrepareVoteEmailCommand.java
@@ -89,7 +89,7 @@ public class PrepareVoteEmailCommand implements Command {
             StagingRepository repo = repoFinder.find(repoId);
             List<Release> releases = Release.fromString(repo.getDescription());
             List<Version> versions = releases.stream()
-                    .map( r -> versionFinder.find(r.getName()))
+                    .map( r -> versionFinder.find(r))
                     .collect(Collectors.toList());
             
             String releaseName = releases.stream()
diff --git a/src/main/java/org/apache/sling/cli/impl/release/Release.java b/src/main/java/org/apache/sling/cli/impl/release/Release.java
index d75f424..de97944 100644
--- a/src/main/java/org/apache/sling/cli/impl/release/Release.java
+++ b/src/main/java/org/apache/sling/cli/impl/release/Release.java
@@ -22,6 +22,9 @@ import java.util.Objects;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+/**
+ * Provides structured access to the components of a release name.
+ */
 public final class Release {
 
     /*
@@ -70,22 +73,69 @@ public final class Release {
         
     }
     
+    /**
+     * Returns the full name, e.g. <em>Apache Sling Foo 1.0.2</em>
+     * 
+     * @return the full name
+     */
     public String getFullName() {
         return fullName;
     }
     
+    /**
+     * Returns the name, e.g. <em>Foo 1.0.2</em>
+     * 
+     * @return the name
+     */
     public String getName() {
         return name;
     }
     
+    /**
+     * Returns the version, e.g. <em>1.0.2</em>
+     * 
+     * @return the version 
+     */
     public String getVersion() {
         return version;
     }
 
+    /**
+     * Returns the component, e.g. <tt>Foo</tt>
+     * 
+     * @return the component
+     */
     public String getComponent() {
         return component;
     }
 
+    /**
+     * Creates a new Release object that corresponds to the next release name
+     * 
+     * <p>The next object is identical to <tt>this</tt> object, except the fact that the
+     * micro component of the version is increased by two.</P>
+     * 
+     * <p>For instance, the next version of <tt>Apache Sling Foo 1.0.2</tt> is <tt>Apache Sling Foo 1.0.4</tt>.</p>
+     * 
+     * @return the next release
+     */
+    public Release next() {
+        
+        // assumption is that the release object is well-formed
+        int lastSeparator = fullName.lastIndexOf('.'); // Apache Sling Foo 1.0.2 -> 1.0.4
+        int increment = 2;
+        if ( lastSeparator == -1 ) {
+            lastSeparator = fullName.lastIndexOf(' '); // Apache Sling Bar 2 -> 3
+            increment = 1;
+        }
+        
+        int componentToIncrement = Integer.parseInt(fullName.substring(lastSeparator + 1));
+        
+        String unchangedPart = fullName.substring(0, lastSeparator + 1);
+        
+        return Release.fromString(unchangedPart + ( componentToIncrement + increment )).get(0);
+    }
+    
     @Override
     public int hashCode() {
         return fullName.hashCode();
diff --git a/src/main/java/org/apache/sling/cli/impl/release/UpdateJiraCommand.java b/src/main/java/org/apache/sling/cli/impl/release/UpdateJiraCommand.java
new file mode 100644
index 0000000..20d2acc
--- /dev/null
+++ b/src/main/java/org/apache/sling/cli/impl/release/UpdateJiraCommand.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.cli.impl.release;
+
+import java.io.IOException;
+
+import org.apache.sling.cli.impl.Command;
+import org.apache.sling.cli.impl.jira.Version;
+import org.apache.sling.cli.impl.jira.VersionFinder;
+import org.apache.sling.cli.impl.nexus.StagingRepository;
+import org.apache.sling.cli.impl.nexus.StagingRepositoryFinder;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Component(service = Command.class, property = {
+        Command.PROPERTY_NAME_COMMAND+"=release",
+        Command.PROPERTY_NAME_SUBCOMMAND+"=update-jira",
+        Command.PROPERTY_NAME_SUMMARY+"=Releases the current version, closes versions fixed in the current version and creates a new version if needed"
+    })
+public class UpdateJiraCommand implements Command {
+
+    @Reference
+    private StagingRepositoryFinder repoFinder;
+    
+    @Reference
+    private VersionFinder versionFinder;
+
+    private final Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Override
+    public void execute(String target) {
+        try {
+            StagingRepository repo = repoFinder.find(Integer.parseInt(target));
+            for (Release release : Release.fromString(repo.getDescription()) ) {
+                Version version = versionFinder.find(release);
+                logger.info("Found version {}", version);
+                Version successorVersion = versionFinder.findSuccessorVersion(release);
+                logger.info("Found successor version {}", successorVersion);
+                if ( successorVersion == null ) {
+                    Release next = release.next();
+                    logger.info("Would create version {}", next);
+                }
+                    
+            }
+        } catch (IOException e) {
+            logger.warn("Failed executing command", e);
+        }
+    }
+}
diff --git a/src/test/java/org/apache/sling/cli/impl/jira/VersionFinderTest.java b/src/test/java/org/apache/sling/cli/impl/jira/VersionFinderTest.java
new file mode 100644
index 0000000..04a97bd
--- /dev/null
+++ b/src/test/java/org/apache/sling/cli/impl/jira/VersionFinderTest.java
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.cli.impl.jira;
+
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.notNullValue;
+import static org.hamcrest.Matchers.nullValue;
+import static org.junit.Assert.assertThat;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.function.Function;
+
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.sling.cli.impl.release.Release;
+import org.junit.Test;
+
+public class VersionFinderTest {
+
+    private VersionFinder finder = new StubVersionFinder();
+    
+    @Test
+    public void findMatchingVersion() {
+        
+        finder = new StubVersionFinder();
+        Version version = finder.find(Release.fromString("XSS Protection API 1.0.2").get(0));
+        
+        assertThat("version", version, notNullValue());
+        assertThat("version.name", version.getName(), equalTo("XSS Protection API 1.0.2"));
+        assertThat("version.id", version.getId(), equalTo(12329667));
+        assertThat("version.issuesFixedCount", version.getIssuesFixedCount(), equalTo(1)); 
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void missingVersionNotFound() {
+        
+        finder.find(Release.fromString("XSS Protection API 1.0.3").get(0));
+    }
+    
+    @Test
+    public void findSuccessorVersion() {
+        Version successor = finder.findSuccessorVersion(Release.fromString("XSS Protection API 1.0.2").get(0));
+        
+        assertThat("successor", successor, notNullValue());
+        assertThat("successor.name", successor.getName(), equalTo("XSS Protection API 1.0.4"));
+    }
+
+    @Test
+    public void noSuccessorVersion() {
+        Version successor = finder.findSuccessorVersion(Release.fromString("XSS Protection API 1.0.16").get(0));
+        
+        assertThat("successor", successor, nullValue());
+    }
+    
+    private static final class StubVersionFinder extends VersionFinder {
+        @Override
+        protected <T> T doWithJiraVersions(CloseableHttpClient client, Function<InputStreamReader, T> parserCallback)
+                throws IOException {
+            
+            try ( InputStreamReader reader = new InputStreamReader(getClass().getResourceAsStream("/jira/versions.json")) ) {
+                return parserCallback.apply(reader);
+            }
+        }
+        
+        @Override
+        protected <T> T doWithRelatedIssueCounts(CloseableHttpClient client, Version version,
+                Function<InputStreamReader, T> parserCallback) throws IOException {
+            
+            InputStream stream = getClass().getResourceAsStream("/jira/relatedIssueCounts/" + version.getId()+".json");
+            if ( stream == null )
+                throw new IllegalArgumentException("No related issues count for version " + version.getId() + " (" + version.getName() + ")");
+            
+            try ( InputStreamReader reader = new InputStreamReader(stream) ) {
+                return parserCallback.apply(reader);
+            }
+        }
+    }
+}
diff --git a/src/test/java/org/apache/sling/cli/impl/release/ReleaseTest.java b/src/test/java/org/apache/sling/cli/impl/release/ReleaseTest.java
index fbab0a2..6afa231 100644
--- a/src/test/java/org/apache/sling/cli/impl/release/ReleaseTest.java
+++ b/src/test/java/org/apache/sling/cli/impl/release/ReleaseTest.java
@@ -92,5 +92,20 @@ public class ReleaseTest {
         reader.close();
     }
 
+    @Test
+    public void nextVersion() {
+        Release release = Release.fromString("Apache Sling Foo 1.0.2").get(0);
+        Release next = release.next();
+        
+        assertEquals("Apache Sling Foo 1.0.4", next.getFullName());
+    }
+    
+    @Test
+    public void nextVersionWithSingleNumber() {
+        Release release = Release.fromString("Apache Sling Bar 2").get(0);
+        Release next = release.next();
+        
+        assertEquals("Apache Sling Bar 3", next.getFullName());
+    }
 
 }
diff --git a/src/test/resources/README.md b/src/test/resources/README.md
new file mode 100644
index 0000000..3158b2f
--- /dev/null
+++ b/src/test/resources/README.md
@@ -0,0 +1,11 @@
+# Test resources
+
+These resources are downloaded from remote servers and maybe slightly tweaked to make them usable for testing.
+
+## Jira
+
+```
+http https://issues.apache.org/jira/rest/api/2/project/SLING/versions | jq '.[0:199]' > src/test/resources/jira/versions.json
+http https://issues.apache.org/jira/rest/api/2/version/12329667/relatedIssueCounts | jq '.' > src/test/resources/jira/relatedIssueCounts/12329667.json
+http https://issues.apache.org/jira/rest/api/2/version/12329844/relatedIssueCounts | jq '.' > src/test/resources/jira/relatedIssueCounts/12329844.json
+```
\ No newline at end of file
diff --git a/src/test/resources/jira/relatedIssueCounts/12329667.json b/src/test/resources/jira/relatedIssueCounts/12329667.json
new file mode 100644
index 0000000..ac7b4e9
--- /dev/null
+++ b/src/test/resources/jira/relatedIssueCounts/12329667.json
@@ -0,0 +1,6 @@
+{
+  "self": "https://issues.apache.org/jira/rest/api/2/version/12329667",
+  "issuesFixedCount": 1,
+  "issuesAffectedCount": 4,
+  "issueCountWithCustomFieldsShowingVersion": 0
+}
diff --git a/src/test/resources/jira/relatedIssueCounts/12329844.json b/src/test/resources/jira/relatedIssueCounts/12329844.json
new file mode 100644
index 0000000..3f9c8aa
--- /dev/null
+++ b/src/test/resources/jira/relatedIssueCounts/12329844.json
@@ -0,0 +1,6 @@
+{
+  "self": "https://issues.apache.org/jira/rest/api/2/version/12329844",
+  "issuesFixedCount": 4,
+  "issuesAffectedCount": 2,
+  "issueCountWithCustomFieldsShowingVersion": 0
+}
diff --git a/src/test/resources/jira/versions.json b/src/test/resources/jira/versions.json
new file mode 100644
index 0000000..d7e5226
--- /dev/null
+++ b/src/test/resources/jira/versions.json
@@ -0,0 +1,2087 @@
+[
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12329024",
+    "id": "12329024",
+    "description": "Initial release",
+    "name": "XSS Protection API 1.0.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-03-20",
+    "userReleaseDate": "20/Mar/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12329667",
+    "id": "12329667",
+    "name": "XSS Protection API 1.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-03-30",
+    "userReleaseDate": "30/Mar/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12329844",
+    "id": "12329844",
+    "name": "XSS Protection API 1.0.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-08-03",
+    "userReleaseDate": "03/Aug/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12333112",
+    "id": "12333112",
+    "name": "XSS Protection API 1.0.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-10-12",
+    "userReleaseDate": "12/Oct/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12333775",
+    "id": "12333775",
+    "name": "XSS Protection API 1.0.8",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-02-02",
+    "userReleaseDate": "02/Feb/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338062",
+    "id": "12338062",
+    "name": "XSS Protection API 1.0.12",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-08-19",
+    "userReleaseDate": "19/Aug/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338105",
+    "id": "12338105",
+    "description": "Maintenance Release",
+    "name": "XSS Protection API 1.0.14",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-08-29",
+    "userReleaseDate": "29/Aug/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338187",
+    "id": "12338187",
+    "name": "XSS Protection API 1.0.16",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-10-31",
+    "userReleaseDate": "31/Oct/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12323492",
+    "id": "12323492",
+    "description": "First public release",
+    "name": "Tenant 1.0.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2013-04-26",
+    "userReleaseDate": "26/Apr/13",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12324350",
+    "id": "12324350",
+    "name": "Tenant 1.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-08-18",
+    "userReleaseDate": "18/Aug/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12327647",
+    "id": "12327647",
+    "name": "Tenant 1.1.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-01-16",
+    "userReleaseDate": "16/Jan/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12339163",
+    "id": "12339163",
+    "description": "Maintenance release",
+    "name": "Tenant 1.1.2",
+    "archived": false,
+    "released": true,
+    "startDate": "2017-01-17",
+    "releaseDate": "2018-09-02",
+    "userStartDate": "17/Jan/17",
+    "userReleaseDate": "02/Sep/18",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12316002",
+    "id": "12316002",
+    "description": "First public release",
+    "name": "Scripting JST 2.0.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2010-12-20",
+    "userReleaseDate": "20/Dec/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12316003",
+    "id": "12316003",
+    "description": "Maintenance Release",
+    "name": "Scripting JST 2.0.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2012-08-16",
+    "userReleaseDate": "16/Aug/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12322940",
+    "id": "12322940",
+    "description": "Maintenance Release",
+    "name": "Scripting JST 2.0.8",
+    "archived": false,
+    "released": false,
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12324674",
+    "id": "12324674",
+    "description": "First public release",
+    "name": "Service User Mapper 1.0.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-02-06",
+    "userReleaseDate": "06/Feb/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12326146",
+    "id": "12326146",
+    "name": "Service User Mapper 1.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-06-02",
+    "userReleaseDate": "02/Jun/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12327057",
+    "id": "12327057",
+    "name": "Service User Mapper 1.0.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-07-14",
+    "userReleaseDate": "14/Jul/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12327372",
+    "id": "12327372",
+    "name": "Service User Mapper 1.1.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-03-02",
+    "userReleaseDate": "02/Mar/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12329544",
+    "id": "12329544",
+    "name": "Service User Mapper 1.2.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-03-16",
+    "userReleaseDate": "16/Mar/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12329687",
+    "id": "12329687",
+    "name": "Service User Mapper 1.2.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-11-11",
+    "userReleaseDate": "11/Nov/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12334454",
+    "id": "12334454",
+    "name": "Service User Mapper 1.2.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-12-22",
+    "userReleaseDate": "22/Dec/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338907",
+    "id": "12338907",
+    "name": "Service User Mapper 1.2.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-03-30",
+    "userReleaseDate": "30/Mar/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12340275",
+    "id": "12340275",
+    "name": "Service User Mapper 1.3.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-05-01",
+    "userReleaseDate": "01/May/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12340324",
+    "id": "12340324",
+    "name": "Service User Mapper 1.3.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-05-22",
+    "userReleaseDate": "22/May/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12340608",
+    "id": "12340608",
+    "name": "Service User Mapper 1.3.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-07-21",
+    "userReleaseDate": "21/Jul/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313245",
+    "id": "12313245",
+    "description": "First public release",
+    "name": "Servlets Resolver 2.0.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2008-06-23",
+    "userReleaseDate": "23/Jun/08",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313376",
+    "id": "12313376",
+    "description": "Maintenance Release",
+    "name": " Servlets Resolver 2.0.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2009-05-14",
+    "userReleaseDate": "14/May/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314051",
+    "id": "12314051",
+    "description": "Maintenance Release",
+    "name": "Servlets Resolver 2.0.8",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2009-10-10",
+    "userReleaseDate": "10/Oct/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314292",
+    "id": "12314292",
+    "description": "New Feature Release",
+    "name": "Servlets Resolver 2.1.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2010-10-08",
+    "userReleaseDate": "08/Oct/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12315301",
+    "id": "12315301",
+    "description": "Maintenance Release",
+    "name": "Servlets Resolver 2.1.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2012-01-30",
+    "userReleaseDate": "30/Jan/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12319517",
+    "id": "12319517",
+    "description": "Maintenance Release",
+    "name": "Servlets Resolver 2.2.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2012-11-15",
+    "userReleaseDate": "15/Nov/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12323497",
+    "id": "12323497",
+    "name": "Servlets Resolver 2.2.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2013-04-18",
+    "userReleaseDate": "18/Apr/13",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12324330",
+    "id": "12324330",
+    "name": "Servlets Resolver 2.3.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-02-24",
+    "userReleaseDate": "24/Feb/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12326267",
+    "id": "12326267",
+    "name": "Servlets Resolver 2.3.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-03-31",
+    "userReleaseDate": "31/Mar/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12326701",
+    "id": "12326701",
+    "name": "Servlets Resolver 2.3.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-11-14",
+    "userReleaseDate": "14/Nov/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12328993",
+    "id": "12328993",
+    "name": "Servlets Resolver 2.3.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-11-18",
+    "userReleaseDate": "18/Nov/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12329016",
+    "id": "12329016",
+    "name": "Servlets Resolver 2.3.8",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-10-05",
+    "userReleaseDate": "05/Oct/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12333753",
+    "id": "12333753",
+    "description": "New Resource Provider API (2.11.0)",
+    "name": "Servlets Resolver 2.4.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-02-08",
+    "userReleaseDate": "08/Feb/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12334794",
+    "id": "12334794",
+    "name": "Servlets Resolver 2.4.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-02-19",
+    "userReleaseDate": "19/Feb/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12334853",
+    "id": "12334853",
+    "name": "Servlets Resolver 2.4.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-07-13",
+    "userReleaseDate": "13/Jul/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12337881",
+    "id": "12337881",
+    "description": "Maintenance Release",
+    "name": "Servlets Resolver 2.4.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-10-22",
+    "userReleaseDate": "22/Oct/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338547",
+    "id": "12338547",
+    "name": "Servlets Resolver 2.4.8",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-12-06",
+    "userReleaseDate": "06/Dec/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338893",
+    "id": "12338893",
+    "name": "Servlets Resolver 2.4.10",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-12-24",
+    "userReleaseDate": "24/Dec/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338894",
+    "id": "12338894",
+    "name": "Servlets Resolver 2.4.12",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-05-09",
+    "userReleaseDate": "09/May/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12340523",
+    "id": "12340523",
+    "name": "Servlets Resolver 2.4.14",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-08-28",
+    "userReleaseDate": "28/Aug/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313247",
+    "id": "12313247",
+    "description": "First public release",
+    "name": "Servlets Post 2.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2008-06-23",
+    "userReleaseDate": "23/Jun/08",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313275",
+    "id": "12313275",
+    "description": "Maintenance Release",
+    "name": "Servlets Post 2.0.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2009-05-14",
+    "userReleaseDate": "14/May/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314180",
+    "id": "12314180",
+    "description": "New feature release",
+    "name": "Servlets Post 2.1.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2010-10-08",
+    "userReleaseDate": "08/Oct/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12315287",
+    "id": "12315287",
+    "description": "Maintenance Release",
+    "name": "Servlets Post 2.1.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2012-06-28",
+    "userReleaseDate": "28/Jun/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12319641",
+    "id": "12319641",
+    "description": "Maintenance Release",
+    "name": "Servlets Post 2.2.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2012-11-15",
+    "userReleaseDate": "15/Nov/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12323498",
+    "id": "12323498",
+    "name": "Servlets Post 2.3.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2013-05-10",
+    "userReleaseDate": "10/May/13",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12324380",
+    "id": "12324380",
+    "name": "Servlets Post 2.3.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2013-07-18",
+    "userReleaseDate": "18/Jul/13",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12324747",
+    "id": "12324747",
+    "name": "Servlets Post 2.3.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-03-07",
+    "userReleaseDate": "07/Mar/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12328043",
+    "id": "12328043",
+    "name": "Servlets Post 2.3.8",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-06-15",
+    "userReleaseDate": "15/Jun/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12326357",
+    "id": "12326357",
+    "name": "Servlets Post 2.3.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-08-28",
+    "userReleaseDate": "28/Aug/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12332788",
+    "id": "12332788",
+    "name": "Servlets Post 2.3.10",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-04-10",
+    "userReleaseDate": "10/Apr/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12335544",
+    "id": "12335544",
+    "name": "Servlets Post 2.3.12",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-06-01",
+    "userReleaseDate": "01/Jun/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12335856",
+    "id": "12335856",
+    "name": "Servlets Post 2.3.14",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-09-13",
+    "userReleaseDate": "13/Sep/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338346",
+    "id": "12338346",
+    "name": "Servlets Post 2.3.16",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-05-11",
+    "userReleaseDate": "11/May/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12340585",
+    "id": "12340585",
+    "name": "Servlets Post 2.3.18",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-05-19",
+    "userReleaseDate": "19/May/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12340584",
+    "id": "12340584",
+    "name": "Servlets Post 2.3.20",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-05-29",
+    "userReleaseDate": "29/May/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12341089",
+    "id": "12341089",
+    "name": "Servlets Post 2.3.22",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-08-14",
+    "userReleaseDate": "14/Aug/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12341348",
+    "id": "12341348",
+    "name": "Servlets Post 2.3.24",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2018-01-23",
+    "userReleaseDate": "23/Jan/18",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313246",
+    "id": "12313246",
+    "description": "First public release",
+    "name": "Servlets Get 2.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2008-06-23",
+    "userReleaseDate": "23/Jun/08",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313374",
+    "id": "12313374",
+    "description": "Maintenance Release",
+    "name": "Servlets Get 2.0.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2009-05-14",
+    "userReleaseDate": "14/May/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313969",
+    "id": "12313969",
+    "description": "Maintenance Release",
+    "name": "Servlets Get 2.0.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2009-10-02",
+    "userReleaseDate": "02/Oct/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314257",
+    "id": "12314257",
+    "description": "Maintenance Release",
+    "name": "Servlets Get 2.0.8",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2009-12-21",
+    "userReleaseDate": "21/Dec/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314473",
+    "id": "12314473",
+    "description": "New Feature Release",
+    "name": "Servlets Get 2.1.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2010-10-08",
+    "userReleaseDate": "08/Oct/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12315299",
+    "id": "12315299",
+    "description": "Maintenance Release",
+    "name": "Servlets Get 2.1.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2011-02-18",
+    "userReleaseDate": "18/Feb/11",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12316181",
+    "id": "12316181",
+    "description": "Maintenance Release",
+    "name": "Servlets Get 2.1.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2012-11-15",
+    "userReleaseDate": "15/Nov/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12323496",
+    "id": "12323496",
+    "name": "Servlets Get 2.1.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-03-07",
+    "userReleaseDate": "07/Mar/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12326356",
+    "id": "12326356",
+    "name": "Servlets Get 2.1.8",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-03-31",
+    "userReleaseDate": "31/Mar/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12326700",
+    "id": "12326700",
+    "name": "Servlets Get 2.1.10",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-09-01",
+    "userReleaseDate": "01/Sep/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12328240",
+    "id": "12328240",
+    "name": "Servlets Get 2.1.12",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-07-17",
+    "userReleaseDate": "17/Jul/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12333051",
+    "id": "12333051",
+    "name": "Servlets Get 2.1.14",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-12-21",
+    "userReleaseDate": "21/Dec/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12334386",
+    "id": "12334386",
+    "name": "Servlets Get 2.1.18",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-08-25",
+    "userReleaseDate": "25/Aug/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338170",
+    "id": "12338170",
+    "name": "Servlets Get 2.1.20",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-02-03",
+    "userReleaseDate": "03/Feb/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12339353",
+    "id": "12339353",
+    "name": "Servlets Get 2.1.22",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-02-09",
+    "userReleaseDate": "09/Feb/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12339558",
+    "id": "12339558",
+    "name": "Servlets Get 2.1.24",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-05-11",
+    "userReleaseDate": "11/May/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12340578",
+    "id": "12340578",
+    "name": "Servlets Get 2.1.26",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-05-19",
+    "userReleaseDate": "19/May/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12340579",
+    "id": "12340579",
+    "name": "Servlets Get 2.1.28",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-11-02",
+    "userReleaseDate": "02/Nov/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12315438",
+    "id": "12315438",
+    "description": "Initial Version",
+    "name": "Servlet Archetype 1.0.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2010-10-19",
+    "userReleaseDate": "19/Oct/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12315454",
+    "id": "12315454",
+    "description": "Maintenance Release",
+    "name": "Servlet Archetype 1.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-06-04",
+    "userReleaseDate": "04/Jun/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12317347",
+    "id": "12317347",
+    "description": "First Release",
+    "name": "Bundle Archetype 1.0.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2011-09-15",
+    "userReleaseDate": "15/Sep/11",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12326805",
+    "id": "12326805",
+    "name": "Bundle Archetype 1.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-06-04",
+    "userReleaseDate": "04/Jun/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12317548",
+    "id": "12317548",
+    "name": "JCRInstall Bundle Archetype 1.0.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2011-09-15",
+    "userReleaseDate": "15/Sep/11",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12326806",
+    "id": "12326806",
+    "name": "JCRInstall Bundle Archetype 1.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-06-04",
+    "userReleaseDate": "04/Jun/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12315320",
+    "id": "12315320",
+    "description": "First public release",
+    "name": "Scripting Velocity 2.0.0",
+    "archived": false,
+    "released": false,
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12315321",
+    "id": "12315321",
+    "description": "Maintenance Release",
+    "name": "Scripting Velocity 2.0.2",
+    "archived": false,
+    "released": false,
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12315484",
+    "id": "12315484",
+    "description": "First public release",
+    "name": "Scripting Scala 1.0.0",
+    "archived": false,
+    "released": false,
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313252",
+    "id": "12313252",
+    "description": "First public release",
+    "name": "Scripting JSP-Taglib 2.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2008-06-23",
+    "userReleaseDate": "23/Jun/08",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313375",
+    "id": "12313375",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP-Taglib 2.0.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2009-05-14",
+    "userReleaseDate": "14/May/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314125",
+    "id": "12314125",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP-Taglib 2.0.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2009-11-28",
+    "userReleaseDate": "28/Nov/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314408",
+    "id": "12314408",
+    "description": "Feature Release",
+    "name": "Scripting JSP-Taglib 2.1.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2010-10-19",
+    "userReleaseDate": "19/Oct/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12315450",
+    "id": "12315450",
+    "description": "Maintenance release",
+    "name": "Scripting JSP-Taglib 2.1.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2011-05-03",
+    "userReleaseDate": "03/May/11",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12316405",
+    "id": "12316405",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP-Taglib 2.1.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2012-01-30",
+    "userReleaseDate": "30/Jan/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12319471",
+    "id": "12319471",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP-Taglib 2.1.8",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2012-10-29",
+    "userReleaseDate": "29/Oct/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12323463",
+    "id": "12323463",
+    "description": "Maintenance/Enhancement Release",
+    "name": "Scripting JSP-Taglib 2.2.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2013-08-08",
+    "userReleaseDate": "08/Aug/13",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12324863",
+    "id": "12324863",
+    "description": "Maintenance release",
+    "name": "Scripting JSP-Taglib 2.2.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-09-12",
+    "userReleaseDate": "12/Sep/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12328648",
+    "id": "12328648",
+    "name": "Scripting JSP-Taglib 2.2.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-09-25",
+    "userReleaseDate": "25/Sep/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12328732",
+    "id": "12328732",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP-Taglib 2.2.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-04-21",
+    "userReleaseDate": "21/Apr/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314339",
+    "id": "12314339",
+    "description": "First public release",
+    "name": "Scripting JSP-Atom-Taglib 1.0.0",
+    "archived": false,
+    "released": false,
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313251",
+    "id": "12313251",
+    "description": "First public release",
+    "name": "Scripting JSP 2.0.2",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2008-06-23",
+    "userReleaseDate": "23/Jun/08",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313356",
+    "id": "12313356",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP 2.0.6",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2009-05-14",
+    "userReleaseDate": "14/May/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314069",
+    "id": "12314069",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP 2.0.8",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2009-11-28",
+    "userReleaseDate": "28/Nov/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314407",
+    "id": "12314407",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP 2.0.10",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2010-10-25",
+    "userReleaseDate": "25/Oct/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12315449",
+    "id": "12315449",
+    "description": "Maintenance release",
+    "name": "Scripting JSP 2.0.12",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2010-12-20",
+    "userReleaseDate": "20/Dec/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12316005",
+    "id": "12316005",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP 2.0.14",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2011-01-24",
+    "userReleaseDate": "24/Jan/11",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12316083",
+    "id": "12316083",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP 2.0.16",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2011-05-03",
+    "userReleaseDate": "03/May/11",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12316404",
+    "id": "12316404",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP 2.0.18",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2011-08-15",
+    "userReleaseDate": "15/Aug/11",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12317602",
+    "id": "12317602",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP 2.0.20",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2012-01-16",
+    "userReleaseDate": "16/Jan/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12319472",
+    "id": "12319472",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP 2.0.22",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2012-05-18",
+    "userReleaseDate": "18/May/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12321295",
+    "id": "12321295",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP 2.0.24",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2012-06-28",
+    "userReleaseDate": "28/Jun/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12321864",
+    "id": "12321864",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP 2.0.26",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2012-11-30",
+    "userReleaseDate": "30/Nov/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12323580",
+    "id": "12323580",
+    "name": "Scripting JSP 2.0.28",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2013-05-16",
+    "userReleaseDate": "16/May/13",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12324445",
+    "id": "12324445",
+    "description": "Java 8 Support",
+    "name": "Scripting JSP 2.1.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-05-20",
+    "userReleaseDate": "20/May/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12326855",
+    "id": "12326855",
+    "name": "Scripting JSP 2.1.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-07-12",
+    "userReleaseDate": "12/Jul/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12327194",
+    "id": "12327194",
+    "name": "Scripting JSP 2.1.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-11-06",
+    "userReleaseDate": "06/Nov/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12328955",
+    "id": "12328955",
+    "name": "Scripting JSP 2.1.8",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-01-03",
+    "userReleaseDate": "03/Jan/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12334593",
+    "id": "12334593",
+    "name": "Scripting JSP 2.2.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-10-20",
+    "userReleaseDate": "20/Oct/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338545",
+    "id": "12338545",
+    "name": "Scripting JSP 2.2.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-12-16",
+    "userReleaseDate": "16/Dec/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338860",
+    "id": "12338860",
+    "name": "Scripting JSP 2.2.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-01-10",
+    "userReleaseDate": "10/Jan/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338978",
+    "id": "12338978",
+    "name": "Scripting JSP 2.2.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-01-30",
+    "userReleaseDate": "30/Jan/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12339340",
+    "id": "12339340",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP 2.3.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-03-20",
+    "userReleaseDate": "20/Mar/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12340247",
+    "id": "12340247",
+    "description": "Maintenance Release",
+    "name": "Scripting JSP 2.3.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-08-24",
+    "userReleaseDate": "24/Aug/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12341395",
+    "id": "12341395",
+    "name": "Scripting JSP 2.3.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-12-04",
+    "userReleaseDate": "04/Dec/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313250",
+    "id": "12313250",
+    "description": "First public release",
+    "name": "Scripting JavaScript 2.0.2",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2008-06-23",
+    "userReleaseDate": "23/Jun/08",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313390",
+    "id": "12313390",
+    "description": "Feature Release",
+    "name": " Scripting JavaScript 2.0.4",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2009-05-14",
+    "userReleaseDate": "14/May/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314110",
+    "id": "12314110",
+    "description": "Maintenance Release",
+    "name": "Scripting JavaScript 2.0.6",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2009-11-28",
+    "userReleaseDate": "28/Nov/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314406",
+    "id": "12314406",
+    "description": "Maintenance Release",
+    "name": "Scripting JavaScript 2.0.8",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2010-10-25",
+    "userReleaseDate": "25/Oct/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12315448",
+    "id": "12315448",
+    "description": "Maintenance release",
+    "name": "Scripting JavaScript 2.0.10",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2010-12-20",
+    "userReleaseDate": "20/Dec/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12316006",
+    "id": "12316006",
+    "description": "Maintenance Release",
+    "name": "Scripting JavaScript 2.0.12",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2011-02-26",
+    "userReleaseDate": "26/Feb/11",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12316243",
+    "id": "12316243",
+    "description": "Maintenance Release",
+    "name": "Scripting JavaScript 2.0.14",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2014-06-23",
+    "userReleaseDate": "23/Jun/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12327183",
+    "id": "12327183",
+    "description": "Maintenance Release",
+    "name": "Scripting JavaScript 2.0.16",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2015-04-20",
+    "userReleaseDate": "20/Apr/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12332071",
+    "id": "12332071",
+    "description": "Maintenance Release",
+    "name": "Scripting JavaScript 2.0.18",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2015-07-02",
+    "userReleaseDate": "02/Jul/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12332966",
+    "id": "12332966",
+    "description": "Maintenance Release",
+    "name": "Scripting JavaScript 2.0.20",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2015-07-21",
+    "userReleaseDate": "21/Jul/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12333080",
+    "id": "12333080",
+    "name": "Scripting JavaScript 2.0.22",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2015-08-13",
+    "userReleaseDate": "13/Aug/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12333276",
+    "id": "12333276",
+    "name": "Scripting JavaScript 2.0.24",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2015-09-07",
+    "userReleaseDate": "07/Sep/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12333370",
+    "id": "12333370",
+    "name": "Scripting JavaScript 2.0.26",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2015-10-12",
+    "userReleaseDate": "12/Oct/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12333862",
+    "id": "12333862",
+    "name": "Scripting JavaScript 2.0.28",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-01-08",
+    "userReleaseDate": "08/Jan/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12334627",
+    "id": "12334627",
+    "description": "Maintenance Release",
+    "name": "Scripting JavaScript 2.0.30",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-06-22",
+    "userReleaseDate": "22/Jun/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12336745",
+    "id": "12336745",
+    "name": "Scripting JavaScript 3.0.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-05-11",
+    "userReleaseDate": "11/May/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12340536",
+    "id": "12340536",
+    "name": "Scripting JavaScript 3.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-09-04",
+    "userReleaseDate": "04/Sep/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313605",
+    "id": "12313605",
+    "description": "First public release",
+    "name": "Scripting Java 1.0.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2009-12-02",
+    "userReleaseDate": "02/Dec/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314418",
+    "id": "12314418",
+    "description": "New feature release",
+    "name": "Scripting Java 2.0.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2010-12-20",
+    "userReleaseDate": "20/Dec/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12316001",
+    "id": "12316001",
+    "description": "Maintenance Release",
+    "name": "Scripting Java 2.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2012-01-16",
+    "userReleaseDate": "16/Jan/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12319473",
+    "id": "12319473",
+    "description": "Maintenance Release",
+    "name": "Scripting Java 2.0.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2012-05-18",
+    "userReleaseDate": "18/May/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12321294",
+    "id": "12321294",
+    "description": "Maintenance Release",
+    "name": "Scripting Java 2.0.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2012-06-28",
+    "userReleaseDate": "28/Jun/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12321863",
+    "id": "12321863",
+    "description": "Maintenance Release",
+    "name": "Scripting Java 2.0.10",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-07-12",
+    "userReleaseDate": "12/Jul/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12326856",
+    "id": "12326856",
+    "description": "Maintenance Release",
+    "name": "Scripting Java 2.0.12",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-09-30",
+    "userReleaseDate": "30/Sep/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12328674",
+    "id": "12328674",
+    "description": "Maintenance Release",
+    "name": "Scripting Java 2.0.14",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-12-20",
+    "userReleaseDate": "20/Dec/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12334385",
+    "id": "12334385",
+    "description": "Maintenance Release",
+    "name": "Scripting Java 2.1.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-10-20",
+    "userReleaseDate": "20/Oct/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338546",
+    "id": "12338546",
+    "name": "Scripting Java 2.1.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-12-16",
+    "userReleaseDate": "16/Dec/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338861",
+    "id": "12338861",
+    "name": "Scripting Java 2.1.4",
+    "archived": false,
+    "released": false,
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313249",
+    "id": "12313249",
+    "description": "First public release",
+    "name": "Scripting Core 2.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2008-06-23",
+    "userReleaseDate": "23/Jun/08",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313366",
+    "id": "12313366",
+    "description": "Maintenance Release",
+    "name": "Scripting Core 2.0.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2009-05-14",
+    "userReleaseDate": "14/May/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314072",
+    "id": "12314072",
+    "description": "Maintenance Release",
+    "name": "Scripting Core 2.0.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2009-10-10",
+    "userReleaseDate": "10/Oct/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314291",
+    "id": "12314291",
+    "description": "Maintenance Release",
+    "name": "Scripting Core 2.0.8",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2009-11-28",
+    "userReleaseDate": "28/Nov/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314403",
+    "id": "12314403",
+    "description": "Maintenance Release",
+    "name": "Scripting Core 2.0.10",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2010-03-01",
+    "userReleaseDate": "01/Mar/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314797",
+    "id": "12314797",
+    "description": "Maintenance release",
+    "name": "Scripting Core 2.0.14",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2010-11-02",
+    "userReleaseDate": "02/Nov/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12315447",
+    "id": "12315447",
+    "description": "Maintenance release",
+    "name": "Scripting Core 2.0.16",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2011-01-29",
+    "userReleaseDate": "29/Jan/11",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12316110",
+    "id": "12316110",
+    "description": "Maintenance Release",
+    "name": "Scripting Core 2.0.18",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2011-08-15",
+    "userReleaseDate": "15/Aug/11",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12317582",
+    "id": "12317582",
+    "description": "Maintenance Release",
+    "name": "Scripting Core 2.0.20",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2012-01-16",
+    "userReleaseDate": "16/Jan/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12319469",
+    "id": "12319469",
+    "description": "Maintenance Release",
+    "name": "Scripting Core 2.0.22",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2012-05-26",
+    "userReleaseDate": "26/May/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12321447",
+    "id": "12321447",
+    "description": "Maintenance Release",
+    "name": "Scripting Core 2.0.24",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2012-06-28",
+    "userReleaseDate": "28/Jun/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12321862",
+    "id": "12321862",
+    "description": "Maintenance Release",
+    "name": "Scripting Core 2.0.26",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-03-07",
+    "userReleaseDate": "07/Mar/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12326347",
+    "id": "12326347",
+    "name": "Scripting Core 2.0.28",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-09-22",
+    "userReleaseDate": "22/Sep/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12328697",
+    "id": "12328697",
+    "name": "Scripting Core 2.0.30",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-07-21",
+    "userReleaseDate": "21/Jul/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12333079",
+    "id": "12333079",
+    "name": "Scripting Core 2.0.32",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-07-26",
+    "userReleaseDate": "26/Jul/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12333099",
+    "id": "12333099",
+    "name": "Scripting Core 2.0.34",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-08-13",
+    "userReleaseDate": "13/Aug/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12333275",
+    "id": "12333275",
+    "name": "Scripting Core 2.0.36",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-02-12",
+    "userReleaseDate": "12/Feb/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12334860",
+    "id": "12334860",
+    "name": "Scripting Core 2.0.38",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-07-13",
+    "userReleaseDate": "13/Jul/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12337945",
+    "id": "12337945",
+    "name": "Scripting Core 2.0.40",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-10-17",
+    "userReleaseDate": "17/Oct/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338776",
+    "id": "12338776",
+    "name": "Scripting Core 2.0.44",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-12-15",
+    "userReleaseDate": "15/Dec/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12339253",
+    "id": "12339253",
+    "description": "Maintenance Release",
+    "name": "Scripting Core 2.0.46",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-03-08",
+    "userReleaseDate": "08/Mar/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12339953",
+    "id": "12339953",
+    "description": "Maintenance Release",
+    "name": "Scripting Core 2.0.48",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-09-29",
+    "userReleaseDate": "29/Sep/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12341679",
+    "id": "12341679",
+    "name": "Scripting Core 2.0.50",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-10-23",
+    "userReleaseDate": "23/Oct/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313248",
+    "id": "12313248",
+    "description": "First public release",
+    "name": "Scripting API 2.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2008-06-23",
+    "userReleaseDate": "23/Jun/08",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314561",
+    "id": "12314561",
+    "description": "Feature Release",
+    "name": "Scripting API 2.1.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2010-02-19",
+    "userReleaseDate": "19/Feb/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314784",
+    "id": "12314784",
+    "description": "Maintenance release",
+    "name": "Scripting API 2.1.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2010-12-20",
+    "userReleaseDate": "20/Dec/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12316004",
+    "id": "12316004",
+    "description": "Maintenance Release",
+    "name": "Scripting API 2.1.4",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2012-01-16",
+    "userReleaseDate": "16/Jan/12",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12319470",
+    "id": "12319470",
+    "description": "Maintenance Release",
+    "name": "Scripting API 2.1.6",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2014-03-07",
+    "userReleaseDate": "07/Mar/14",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12326346",
+    "id": "12326346",
+    "name": "Scripting API 2.1.8",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2015-07-21",
+    "userReleaseDate": "21/Jul/15",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12338775",
+    "id": "12338775",
+    "name": "Scripting API 2.1.12",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2016-12-15",
+    "userReleaseDate": "15/Dec/16",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12340474",
+    "id": "12340474",
+    "name": "Scripting API 2.2.0",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2017-05-01",
+    "userReleaseDate": "01/May/17",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12340480",
+    "id": "12340480",
+    "name": "Scripting API 2.2.2",
+    "archived": false,
+    "released": false,
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313260",
+    "id": "12313260",
+    "description": "First public release",
+    "name": "Samples Simple Demo 2.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2008-06-23",
+    "userReleaseDate": "23/Jun/08",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313262",
+    "id": "12313262",
+    "description": "First public release",
+    "name": "Samples Webloader Service 2.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2008-06-23",
+    "userReleaseDate": "23/Jun/08",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313263",
+    "id": "12313263",
+    "description": "First public release",
+    "name": "Samples Webloader UI 2.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2008-06-23",
+    "userReleaseDate": "23/Jun/08",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12325043",
+    "id": "12325043",
+    "description": "First public release",
+    "name": "Request Analyzer 1.0.0",
+    "archived": false,
+    "released": false,
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313261",
+    "id": "12313261",
+    "description": "First public release",
+    "name": "Path Based RTP 2.0.2",
+    "archived": false,
+    "released": true,
+    "releaseDate": "2008-06-23",
+    "userReleaseDate": "23/Jun/08",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314787",
+    "id": "12314787",
+    "description": "Maintenance release",
+    "name": "Path based RTP 2.0.4",
+    "archived": false,
+    "released": false,
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313662",
+    "id": "12313662",
+    "description": "Maintenance Release",
+    "name": "Parent 5",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2009-05-14",
+    "userReleaseDate": "14/May/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12313945",
+    "id": "12313945",
+    "description": "Maintenance Release",
+    "name": "Parent 6",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2009-07-03",
+    "userReleaseDate": "03/Jul/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314079",
+    "id": "12314079",
+    "description": "Maintenance Release",
+    "name": "Parent 7",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2009-09-28",
+    "userReleaseDate": "28/Sep/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314251",
+    "id": "12314251",
+    "description": "Maintenance Release",
+    "name": "Parent 8",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2009-11-28",
+    "userReleaseDate": "28/Nov/09",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12314432",
+    "id": "12314432",
+    "description": "Maintenance Release",
+    "name": "Parent 9",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2010-05-11",
+    "userReleaseDate": "11/May/10",
+    "projectId": 12310710
+  },
+  {
+    "self": "https://issues.apache.org/jira/rest/api/2/version/12315011",
+    "id": "12315011",
+    "description": "Maintenance release",
+    "name": "Parent 10",
+    "archived": true,
+    "released": true,
+    "releaseDate": "2010-12-13",
+    "userReleaseDate": "13/Dec/10",
+    "projectId": 12310710
+  }
+]


[sling-org-apache-sling-committer-cli] 01/03: Update to released parent version (still under vote)

Posted by ro...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to branch feature/SLING-8337
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-committer-cli.git

commit a610eddf4f121a2ebbcef1d48d0740f882305ca8
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Fri Apr 19 15:19:39 2019 +0300

    Update to released parent version (still under vote)
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index a0458e6..f76647e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling-bundle-parent</artifactId>
-        <version>35-SNAPSHOT</version>
+        <version>35</version>
         <relativePath />
     </parent>