diff --git a/README.md b/README.md index ebdfe9f..3a39f8a 100644 --- a/README.md +++ b/README.md @@ -342,7 +342,15 @@ Validates the tickets using the CAS 2.0 protocol. If you provide either the `acc | `hostnameVerifier` | Hostname verifier class name, used when making back-channel calls | No #### org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter -Validates the tickets using the CAS 3.0 protocol. If you provide either the `acceptAnyProxy` or the `allowedProxyChains` parameters, a `Cas30ProxyTicketValidator` will be constructed. Otherwise a general `Cas30ServiceTicketValidator` will be constructed that does not accept proxy tickets. Supports all configurations that are available for `Cas20ProxyReceivingTicketValidationFilter`. +Validates the tickets using the CAS 3.0 protocol. If you provide either the `acceptAnyProxy` or the `allowedProxyChains` parameters, +a `Cas30ProxyTicketValidator` will be constructed. Otherwise a general `Cas30ServiceTicketValidator` will be constructed that does not +accept proxy tickets. Supports all configurations that are available for `Cas20ProxyReceivingTicketValidationFilter`. + +#### org.jasig.cas.client.validation.json.Cas30JsonProxyReceivingTicketValidationFilter +Indentical to `Cas30ProxyReceivingTicketValidationFilter`, yet the filter is able to accept validation responses from CAS +that are formatted as JSON per guidelines laid out by the CAS protocol. +See the [protocol documentation](https://apereo.github.io/cas/5.1.x/protocol/CAS-Protocol-Specification.html) +for more info. ##### Proxy Authentication vs. Distributed Caching The client has support for clustering and distributing the TGT state among application nodes that are behind a load balancer. In order to do so, the parameter needs to be defined as such for the filter. diff --git a/cas-client-core/pom.xml b/cas-client-core/pom.xml index ed838b2..8cd1d2f 100644 --- a/cas-client-core/pom.xml +++ b/cas-client-core/pom.xml @@ -35,6 +35,11 @@ true + + com.fasterxml.jackson.core + jackson-databind + + org.springframework spring-beans diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyTicketValidator.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyTicketValidator.java index c97cf21..7bdf0d7 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyTicketValidator.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ProxyTicketValidator.java @@ -50,9 +50,10 @@ public class Cas20ProxyTicketValidator extends Cas20ServiceTicketValidator { return "proxyValidate"; } + @Override protected void customParseResponse(final String response, final Assertion assertion) throws TicketValidationException { - final List proxies = XmlUtils.getTextForElements(response, "proxy"); + final List proxies = parseProxiesFromResponse(response); if (proxies == null) { throw new InvalidProxyChainTicketValidationException( @@ -61,7 +62,7 @@ public class Cas20ProxyTicketValidator extends Cas20ServiceTicketValidator { ); } // this means there was nothing in the proxy chain, which is okay - if ((this.allowEmptyProxyChain && proxies.isEmpty())) { + if (this.allowEmptyProxyChain && proxies.isEmpty()) { logger.debug("Found an empty proxy chain, permitted by client configuration"); return; } @@ -85,6 +86,10 @@ public class Cas20ProxyTicketValidator extends Cas20ServiceTicketValidator { throw new InvalidProxyChainTicketValidationException("Invalid proxy chain: " + proxies.toString()); } + protected List parseProxiesFromResponse(final String response) { + return XmlUtils.getTextForElements(response, "proxy"); + } + public final void setAcceptAnyProxy(final boolean acceptAnyProxy) { this.acceptAnyProxy = acceptAnyProxy; } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidator.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidator.java index 9ecc5b8..fa20991 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidator.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas20ServiceTicketValidator.java @@ -77,15 +77,15 @@ public class Cas20ServiceTicketValidator extends AbstractCasProtocolUrlBasedTick return "serviceValidate"; } - protected final Assertion parseResponseFromServer(final String response) throws TicketValidationException { - final String error = XmlUtils.getTextForElement(response, "authenticationFailure"); + protected Assertion parseResponseFromServer(final String response) throws TicketValidationException { + final String error = parseAuthenticationFailureFromResponse(response); if (CommonUtils.isNotBlank(error)) { throw new TicketValidationException(error); } - final String principal = XmlUtils.getTextForElement(response, "user"); - final String proxyGrantingTicketIou = XmlUtils.getTextForElement(response, "proxyGrantingTicket"); + final String principal = parsePrincipalFromResponse(response); + final String proxyGrantingTicketIou = parseProxyGrantingTicketFromResponse(response); final String proxyGrantingTicket; if (CommonUtils.isBlank(proxyGrantingTicketIou) || this.proxyGrantingTicketStorage == null) { @@ -113,6 +113,18 @@ public class Cas20ServiceTicketValidator extends AbstractCasProtocolUrlBasedTick return assertion; } + protected String parseProxyGrantingTicketFromResponse(final String response) { + return XmlUtils.getTextForElement(response, "proxyGrantingTicket"); + } + + protected String parsePrincipalFromResponse(final String response) { + return XmlUtils.getTextForElement(response, "user"); + } + + protected String parseAuthenticationFailureFromResponse(final String response) { + return XmlUtils.getTextForElement(response, "authenticationFailure"); + } + /** * Default attribute parsing of attributes that look like the following: * <cas:attributes> diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas30ServiceTicketValidator.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas30ServiceTicketValidator.java index cb155a7..236ea6e 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas30ServiceTicketValidator.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/Cas30ServiceTicketValidator.java @@ -26,7 +26,7 @@ package org.jasig.cas.client.validation; */ public class Cas30ServiceTicketValidator extends Cas20ServiceTicketValidator { - public Cas30ServiceTicketValidator(String casServerUrlPrefix) { + public Cas30ServiceTicketValidator(final String casServerUrlPrefix) { super(casServerUrlPrefix); } diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/json/Cas30JsonProxyReceivingTicketValidationFilter.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/json/Cas30JsonProxyReceivingTicketValidationFilter.java new file mode 100644 index 0000000..76c9d7e --- /dev/null +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/json/Cas30JsonProxyReceivingTicketValidationFilter.java @@ -0,0 +1,35 @@ +/* + * Licensed to Jasig under one or more contributor license + * agreements. See the NOTICE file distributed with this work + * for additional information regarding copyright ownership. + * Jasig 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 the following location: + * + * 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.jasig.cas.client.validation.json; + +import org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter; + +/** + * Creates either a Cas30JsonServiceTicketValidator to validate tickets. + * + * @author Misagh Moayyed + */ +public class Cas30JsonProxyReceivingTicketValidationFilter extends Cas30ProxyReceivingTicketValidationFilter { + + public Cas30JsonProxyReceivingTicketValidationFilter() { + super(); + this.defaultServiceTicketValidatorClass = Cas30JsonServiceTicketValidator.class; + this.defaultProxyTicketValidatorClass = Cas30JsonProxyTicketValidator.class; + } +} diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/json/Cas30JsonProxyTicketValidator.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/json/Cas30JsonProxyTicketValidator.java new file mode 100644 index 0000000..0cd5ec0 --- /dev/null +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/json/Cas30JsonProxyTicketValidator.java @@ -0,0 +1,43 @@ +package org.jasig.cas.client.validation.json; + +import org.jasig.cas.client.validation.Assertion; +import org.jasig.cas.client.validation.Cas30ProxyTicketValidator; +import org.jasig.cas.client.validation.TicketValidationException; + +import java.util.Collections; +import java.util.List; + +/** + * This is {@link Cas30JsonProxyTicketValidator} that attempts to parse the CAS validation response + * as JSON. Very similar to {@link Cas30JsonServiceTicketValidator}, it also honors proxies as the name suggests. + * + * @author Misagh Moayyed + */ +public class Cas30JsonProxyTicketValidator extends Cas30ProxyTicketValidator { + public Cas30JsonProxyTicketValidator(final String casServerUrlPrefix) { + super(casServerUrlPrefix); + setCustomParameters(Collections.singletonMap("format", "JSON")); + } + + @Override + protected Assertion parseResponseFromServer(final String response) throws TicketValidationException { + try { + final TicketValidationJsonResponse json = new JsonValidationResponseParser().parse(response); + return json.getAssertion(getProxyGrantingTicketStorage(), getProxyRetriever()); + } catch (final Exception e) { + logger.warn("Unable parse the JSON response"); + return super.parseResponseFromServer(response); + } + } + + @Override + protected List parseProxiesFromResponse(final String response) { + try { + final TicketValidationJsonResponse json = new JsonValidationResponseParser().parse(response); + return json.getServiceResponse().getAuthenticationSuccess().getProxies(); + } catch (final Exception e) { + logger.warn("Unable to locate proxies from the JSON response", e); + return super.parseProxiesFromResponse(response); + } + } +} diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/json/Cas30JsonServiceTicketValidator.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/json/Cas30JsonServiceTicketValidator.java new file mode 100644 index 0000000..9fee4b3 --- /dev/null +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/json/Cas30JsonServiceTicketValidator.java @@ -0,0 +1,44 @@ +package org.jasig.cas.client.validation.json; + +import com.fasterxml.jackson.core.JsonProcessingException; +import org.jasig.cas.client.validation.Assertion; +import org.jasig.cas.client.validation.Cas30ServiceTicketValidator; +import org.jasig.cas.client.validation.TicketValidationException; + +import java.io.IOException; +import java.util.Collections; +import java.util.Map; + +/** + * This is {@link Cas30JsonServiceTicketValidator} that attempts to parse the CAS validation response + * as JSON. If the response is not formatted as JSON, it shall fallback to the XML default syntax. + * The JSON response provides advantages in terms of naming and parsing CAS attributes that have special + * names that otherwise may not be encoded as XML, such as the invalid {@code value} + * + * @author Misagh Moayyed + */ +public class Cas30JsonServiceTicketValidator extends Cas30ServiceTicketValidator { + + public Cas30JsonServiceTicketValidator(final String casServerUrlPrefix) { + super(casServerUrlPrefix); + setCustomParameters(Collections.singletonMap("format", "JSON")); + } + + @Override + protected Assertion parseResponseFromServer(final String response) throws TicketValidationException { + try { + final TicketValidationJsonResponse json = new JsonValidationResponseParser().parse(response); + return json.getAssertion(getProxyGrantingTicketStorage(), getProxyRetriever()); + } catch (final JsonProcessingException e) { + logger.warn("Unable parse the JSON response. Falling back to XML", e); + return super.parseResponseFromServer(response); + } catch (final IOException e) { + throw new TicketValidationException(e.getMessage(), e); + } + } + + @Override + protected Map extractCustomAttributes(final String xml) { + return Collections.emptyMap(); + } +} diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/json/JsonValidationResponseParser.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/json/JsonValidationResponseParser.java new file mode 100644 index 0000000..c4b58fa --- /dev/null +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/json/JsonValidationResponseParser.java @@ -0,0 +1,48 @@ +package org.jasig.cas.client.validation.json; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.jasig.cas.client.util.CommonUtils; +import org.jasig.cas.client.validation.TicketValidationException; + +import java.io.IOException; + +/** + * This is {@link JsonValidationResponseParser}. + * + * @author Misagh Moayyed + */ +final class JsonValidationResponseParser { + private final ObjectMapper objectMapper; + + public JsonValidationResponseParser() { + this.objectMapper = new ObjectMapper(); + this.objectMapper.findAndRegisterModules(); + } + + public TicketValidationJsonResponse parse(final String response) throws TicketValidationException, IOException { + if (CommonUtils.isBlank(response)) { + throw new TicketValidationException("Invalid JSON response; The response is empty"); + } + + final TicketValidationJsonResponse json = this.objectMapper.readValue(response, TicketValidationJsonResponse.class); + + final TicketValidationJsonResponse.CasServiceResponseAuthentication serviceResponse = json.getServiceResponse(); + if (serviceResponse.getAuthenticationFailure() != null + && serviceResponse.getAuthenticationSuccess() != null) { + throw new TicketValidationException("Invalid JSON response; It indicates both a success " + + "and a failure event, which is indicative of a server error. The actual response is " + response); + } + + if (serviceResponse.getAuthenticationFailure() != null) { + final String error = json.getServiceResponse().getAuthenticationFailure().getCode() + + " - " + serviceResponse.getAuthenticationFailure().getDescription(); + throw new TicketValidationException(error); + } + + final String principal = json.getServiceResponse().getAuthenticationSuccess().getUser(); + if (CommonUtils.isEmpty(principal)) { + throw new TicketValidationException("No principal was found in the response from the CAS server."); + } + return json; + } +} diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/validation/json/TicketValidationJsonResponse.java b/cas-client-core/src/main/java/org/jasig/cas/client/validation/json/TicketValidationJsonResponse.java new file mode 100644 index 0000000..84db6e2 --- /dev/null +++ b/cas-client-core/src/main/java/org/jasig/cas/client/validation/json/TicketValidationJsonResponse.java @@ -0,0 +1,140 @@ +package org.jasig.cas.client.validation.json; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import org.jasig.cas.client.authentication.AttributePrincipal; +import org.jasig.cas.client.authentication.AttributePrincipalImpl; +import org.jasig.cas.client.proxy.ProxyGrantingTicketStorage; +import org.jasig.cas.client.proxy.ProxyRetriever; +import org.jasig.cas.client.util.CommonUtils; +import org.jasig.cas.client.validation.Assertion; +import org.jasig.cas.client.validation.AssertionImpl; + +import java.util.List; +import java.util.Map; + +/** + * This is {@link TicketValidationJsonResponse}. + * + * @author Misagh Moayyed + */ +final class TicketValidationJsonResponse { + private final CasServiceResponseAuthentication serviceResponse; + + @JsonCreator + public TicketValidationJsonResponse(@JsonProperty("serviceResponse") + final CasServiceResponseAuthentication serviceResponse) { + this.serviceResponse = serviceResponse; + } + + public CasServiceResponseAuthentication getServiceResponse() { + return serviceResponse; + } + + Assertion getAssertion(final ProxyGrantingTicketStorage proxyGrantingTicketStorage, + final ProxyRetriever proxyRetriever) { + final String proxyGrantingTicketIou = getServiceResponse().getAuthenticationSuccess().getProxyGrantingTicket(); + final String proxyGrantingTicket; + if (CommonUtils.isBlank(proxyGrantingTicketIou) || proxyGrantingTicketStorage == null) { + proxyGrantingTicket = null; + } else { + proxyGrantingTicket = proxyGrantingTicketStorage.retrieve(proxyGrantingTicketIou); + } + + final Assertion assertion; + final Map attributes = getServiceResponse().getAuthenticationSuccess().getAttributes(); + final String principal = getServiceResponse().getAuthenticationSuccess().getUser(); + if (CommonUtils.isNotBlank(proxyGrantingTicket)) { + final AttributePrincipal attributePrincipal = new AttributePrincipalImpl(principal, attributes, + proxyGrantingTicket, proxyRetriever); + assertion = new AssertionImpl(attributePrincipal); + } else { + assertion = new AssertionImpl(new AttributePrincipalImpl(principal, attributes)); + } + return assertion; + } + + static class CasServiceResponseAuthentication { + private final CasServiceResponseAuthenticationFailure authenticationFailure; + private final CasServiceResponseAuthenticationSuccess authenticationSuccess; + + @JsonCreator + public CasServiceResponseAuthentication(@JsonProperty("authenticationFailure") + final CasServiceResponseAuthenticationFailure authenticationFailure, + @JsonProperty("authenticationSuccess") + final CasServiceResponseAuthenticationSuccess authenticationSuccess) { + this.authenticationFailure = authenticationFailure; + this.authenticationSuccess = authenticationSuccess; + } + + public CasServiceResponseAuthenticationFailure getAuthenticationFailure() { + return this.authenticationFailure; + } + + public CasServiceResponseAuthenticationSuccess getAuthenticationSuccess() { + return this.authenticationSuccess; + } + } + + static class CasServiceResponseAuthenticationSuccess { + private String user; + private String proxyGrantingTicket; + private List proxies; + private Map attributes; + + public String getUser() { + return this.user; + } + + public void setUser(final String user) { + this.user = user; + } + + public String getProxyGrantingTicket() { + return this.proxyGrantingTicket; + } + + public void setProxyGrantingTicket(final String proxyGrantingTicket) { + this.proxyGrantingTicket = proxyGrantingTicket; + } + + public List getProxies() { + return this.proxies; + } + + public void setProxies(final List proxies) { + this.proxies = proxies; + } + + public Map getAttributes() { + return this.attributes; + } + + public void setAttributes(final Map attributes) { + this.attributes = attributes; + } + } + + static class CasServiceResponseAuthenticationFailure { + private String code; + private String description; + + public String getCode() { + return this.code; + } + + public void setCode(final String code) { + this.code = code; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(final String description) { + this.description = description; + } + } +} + + diff --git a/cas-client-core/src/test/java/org/jasig/cas/client/validation/json/Cas30JsonServiceTicketValidatorTests.java b/cas-client-core/src/test/java/org/jasig/cas/client/validation/json/Cas30JsonServiceTicketValidatorTests.java new file mode 100644 index 0000000..1163331 --- /dev/null +++ b/cas-client-core/src/test/java/org/jasig/cas/client/validation/json/Cas30JsonServiceTicketValidatorTests.java @@ -0,0 +1,90 @@ +package org.jasig.cas.client.validation.json; + +import org.jasig.cas.client.PublicTestHttpServer; +import org.jasig.cas.client.proxy.ProxyGrantingTicketStorage; +import org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl; +import org.jasig.cas.client.proxy.ProxyRetriever; +import org.jasig.cas.client.validation.AbstractTicketValidatorTests; +import org.jasig.cas.client.validation.Assertion; +import org.jasig.cas.client.validation.TicketValidationException; +import org.junit.Before; +import org.junit.Test; +import junit.framework.Assert; + +public class Cas30JsonServiceTicketValidatorTests extends AbstractTicketValidatorTests { + private static final PublicTestHttpServer server = PublicTestHttpServer.instance(8088); + private ProxyGrantingTicketStorage proxyGrantingTicketStorage; + + private Cas30JsonServiceTicketValidator ticketValidator; + + @Before + public void setUp() throws Exception { + this.proxyGrantingTicketStorage = getProxyGrantingTicketStorage(); + this.ticketValidator = new Cas30JsonServiceTicketValidator(CONST_CAS_SERVER_URL_PREFIX + "8088"); + this.ticketValidator.setProxyCallbackUrl("test"); + this.ticketValidator.setProxyGrantingTicketStorage(getProxyGrantingTicketStorage()); + this.ticketValidator.setProxyRetriever(getProxyRetriever()); + this.ticketValidator.setRenew(true); + } + + private ProxyGrantingTicketStorage getProxyGrantingTicketStorage() { + return new ProxyGrantingTicketStorageImpl(); + } + + private ProxyRetriever getProxyRetriever() { + return new ProxyRetriever() { + + /** Unique Id for serialization. */ + private static final long serialVersionUID = 1L; + + public String getProxyTicketIdFor(final String proxyGrantingTicketId, final String targetService) { + return "test"; + } + }; + } + + @Test + public void testSuccessfulJsonResponse() throws Exception { + final String RESPONSE = "{ " + + "\"serviceResponse\" : { " + + "\"authenticationSuccess\" : { " + + "\"user\" : \"casuser\", " + + "\"proxyGrantingTicket\" : \"PGTIOU-84678-8a9d\" ," + + "\"attributes\" : { " + + "\"cn\" : [ \"Name\" ] " + + '}' + + '}' + + '}' + + '}'; + + server.content = RESPONSE.getBytes(server.encoding); + final Assertion assertion = ticketValidator.validate("test", "test"); + Assert.assertEquals(assertion.getPrincipal().getName(), "casuser"); + Assert.assertTrue(assertion.getPrincipal().getAttributes().containsKey("cn")); + } + + @Test(expected = TicketValidationException.class) + public void testFailingJsonResponse() throws Exception { + final String RESPONSE = "{ " + + "\"serviceResponse\" : { " + + "\"authenticationFailure\" : { " + + "\"code\" : \"INVALID_TICKET\", " + + "\"description\" : \"Description\" " + + '}' + + '}' + + '}'; + + server.content = RESPONSE.getBytes(server.encoding); + ticketValidator.validate("test", "test"); + + } + + + @Test + public void testSuccessfulXmlResponseWithJson() throws Exception { + final String RESPONSE = "" + + "testPGTIOU"; + server.content = RESPONSE.getBytes(server.encoding); + ticketValidator.validate("test", "test"); + } +} diff --git a/cas-client-integration-atlassian/pom.xml b/cas-client-integration-atlassian/pom.xml index 9c1c7b0..c29a0ab 100644 --- a/cas-client-integration-atlassian/pom.xml +++ b/cas-client-integration-atlassian/pom.xml @@ -1,4 +1,5 @@ - + org.jasig.cas.client 3.5.0-SNAPSHOT @@ -10,46 +11,103 @@ Jasig CAS Client for Java - Atlassian Integration + atlassian-seraph com.atlassian.seraph - 2.5.1 + 3.0.0 provided jar - - commons-lang - commons-lang - - - log4j - log4j - - - javax.servlet - servlet-api - - - opensymphony - oscore - - - com.atlassian.security - atlassian-secure-random - - - com.atlassian.security - atlassian-cookie-tools - - - true - + + javax.transaction + jta + + + commons-lang + commons-lang + + + log4j + log4j + + + javax.servlet + servlet-api + + + opensymphony + oscore + + + com.atlassian.security + atlassian-secure-random + + + com.atlassian.security + atlassian-cookie-tools + + + commons-logging + commons-logging + + + true + org.springframework spring-context + + atlassian-user + com.atlassian.user + 1.26 + provided + jar + true + + + opensymphony + oscore + + + opensymphony + propertyset + + + commons-logging + commons-logging + + + javax.transaction + jta + + + ofbcore + ofbcore-jira-entity + + + ofbcore + ofbcore-jira-share + + + log4j + log4j + + + + commons-logging + commons-logging + + + dom4j + dom4j + + + + atlassian-osuser com.atlassian.osuser @@ -58,1304 +116,1310 @@ jar true - - opensymphony - oscore - - - opensymphony - propertyset - - - commons-logging - commons-logging - + + opensymphony + oscore + + + opensymphony + propertyset + + + commons-logging + commons-logging + - - ofbcore - ofbcore-jira-entity - - - ofbcore - ofbcore-jira-share - - - log4j - log4j - - - - dom4j - dom4j - + + ofbcore + ofbcore-jira-entity + + + ofbcore + ofbcore-jira-share + + + log4j + log4j + + + javax.transaction + jta + + + dom4j + dom4j + - com.atlassian.confluence confluence - 3.5 + 4.0 provided - - opensymphony - webwork - - - com.atlassian.crowd - embedded-crowd-api - - - com.atlassian.crowd - crowd-integration-api - - - com.atlassian.crowd - crowd-integration-seraph22 - - - com.atlassian.crowd - embedded-crowd-spi - - - com.atlassian.crowd - crowd-password-encoders - - - com.atlassian.crowd - atlassian-embedded-crowd-atlassian-user - - - com.atlassian.crowd - atlassian-embedded-crowd-hibernate2 - - - com.atlassian.crowd - embedded-crowd-core - - - com.atlassian.crowd - crowd-persistence - - - com.atlassian.crowd - crowd-ldap - - - org.springframework.ldap - spring-ldap-core - - - com.atlassian.confluence - confluence-upgrade - - - com.atlassian.gzipfilter - atlassian-gzipfilter - - - com.atlassian.applinks - applinks-api - - - com.atlassian.applinks - applinks-spi - - - com.atlassian.applinks - applinks-host - - - com.atlassian.util.concurrent - atlassian-util-concurrent - - - com.atlassian.modzdetector - modz-detector - - - com.atlassian.mail - atlassian-mail - - - com.atlassian.velocity - atlassian-velocity - - - com.atlassian.core - atlassian-core - - - com.atlassian.config - atlassian-config - - - com.atlassian.spring - atlassian-spring - - - com.atlassian.confluence - confluence-bucket - - - com.atlassian.xwork - atlassian-xwork-10 - - - com.atlassian.xwork - atlassian-xwork-core - - - com.atlassian.profiling - atlassian-profiling - - - com.atlassian.trackback - atlassian-trackback - - - com.atlassian.extras - atlassian-extras - - - com.atlassian.johnson - atlassian-johnson - - - com.atlassian.plugins - atlassian-plugins-core - - - com.atlassian.plugins - atlassian-plugins-servlet - - - com.atlassian.plugins - atlassian-plugins-webfragment - - - com.atlassian.plugins - atlassian-plugins-webresource - - - com.atlassian.plugins - atlassian-plugins-osgi - - - com.atlassian.plugins - atlassian-plugins-spring - - - com.atlassian.bandana - atlassian-bandana - - - com.atlassian.user - atlassian-user - - - com.atlassian.renderer - atlassian-renderer - - - com.atlassian.bonnie - atlassian-bonnie - - - com.atlassian.jdk.utilities - atlassian-jdk-utilities - - - joda-time - joda-time - - - com.atlassian.seraph - atlassian-seraph - - - com.atlassian.security.auth.trustedapps - atlassian-trusted-apps-core - - - com.atlassian.security.auth.trustedapps - atlassian-trusted-apps-seraph-integration - - - javax.activation - activation - - - log4j - log4j - - - org.slf4j - slf4j-api - - - org.slf4j - slf4j-log4j12 - - - org.slf4j - jul-to-slf4j - - - commons-lang - commons-lang - - - commons-logging - commons-logging - - - commons-io - commons-io - - - commons-beanutils - commons-beanutils - - - commons-fileupload - commons-fileupload - - - org.directwebremoting - dwr - - - hibernate - hibernate - - - cglib - cglib - - - dom4j - dom4j - - - odmg - odmg - - - c3p0 - c3p0 - - - javax.transaction - jta - - - javax.media - jai-core - - - com.sun - jai_codec - - - opensymphony - webwork - - - opensymphony - xwork - - - ognl - ognl - - - opensymphony - oscore - - - oscache - oscache - - - osuser - osuser - - - opensymphony - propertyset - - - org.apache.velocity - velocity - - - javax.servlet - servlet-api - - - javax.mail - mail - - - org.springframework - spring-core - - - org.springframework - spring-web - - - org.springframework - spring-support - - - org.springframework - spring-aop - - - org.springframework - spring-hibernate2 - - - org.springframework - spring-beans - - - org.springframework - spring-jdbc - - - org.springframework - spring-dao - - - org.springframework - spring-jmx - - - com.atlassian.paddle - atlassian-paddle - - - org.aspectj - aspectjweaver - - - net.sf.ldaptemplate - ldaptemplate - - - opensymphony - sitemesh - - - velocity-tools - velocity-tools - - - radeox - radeox - - - org.apache.lucene - lucene-core - - - org.apache.lucene - lucene-analyzers - - - org.apache.lucene - lucene-misc - - - org.apache.lucene - lucene-highlighter - - - commons-digester - commons-digester - - - batik - batik-all - - - net.sourceforge.cssparser - cssparser - - - org.hibernate - jtidy - - - org.quartz-scheduler - quartz - - - org.hsqldb - hsqldb - - - mockobjects - mockobjects-core - - - org.mockito - mockito-all - - - org.springframework - spring-mock - - - rome - rome - - - jdom - jdom - - - commons-jrcs - commons-jrcs - - - commons-httpclient - commons-httpclient - - - xerces - xercesImpl - - - xmlrpc - xmlrpc - - - glue - glue - - - exml - exml - - - axis - axis - - - axis - axis-jaxrpc - - - axis - axis-saaj - - - commons-discovery - commons-discovery - - - commons-codec - commons-codec - - - oro - oro - - - slide - slide - - - com.thoughtworks.xstream - xstream - - - jfree - jfreechart - - - xalan - xalan - - - com.octo.captcha - jcaptcha-all - - - net.java.dev.urlrewrite - urlrewrite - - - commons-collections - commons-collections - - - javax.xml.stream - stax-api - - - org.codehaus.woodstox - wstx-asl - - - org.codehaus.xfire - xfire-core - - - org.codehaus.xfire - xfire-aegis - - - net.jcip - jcip-annotations - - - com.atlassian.cache - atlassian-cache-api - - - com.atlassian.sal - sal-spi - - - com.atlassian.sal - sal-spring - - - com.atlassian.sal - sal-api - - - com.atlassian.cache - atlassian-cache-memory - - - net.sourceforge.findbugs - jsr305 - - - opensymphony - pell-multipart - - - ch.qos.logback - logback-classic - + + opensymphony + webwork + + + com.atlassian.crowd + embedded-crowd-api + + + com.atlassian.crowd + crowd-integration-api + + + com.atlassian.crowd + crowd-integration-seraph22 + + + com.atlassian.crowd + embedded-crowd-spi + + + com.atlassian.crowd + crowd-password-encoders + + + com.atlassian.crowd + atlassian-embedded-crowd-atlassian-user + + + com.atlassian.crowd + atlassian-embedded-crowd-hibernate2 + + + com.atlassian.crowd + embedded-crowd-core + + + com.atlassian.crowd + crowd-persistence + + + com.atlassian.crowd + crowd-ldap + + + org.springframework.ldap + spring-ldap-core + + + com.atlassian.confluence + confluence-upgrade + + + com.atlassian.gzipfilter + atlassian-gzipfilter + + + com.atlassian.applinks + applinks-api + + + com.atlassian.applinks + applinks-spi + + + com.atlassian.applinks + applinks-host + + + com.atlassian.util.concurrent + atlassian-util-concurrent + + + com.atlassian.modzdetector + modz-detector + + + com.atlassian.mail + atlassian-mail + + + com.atlassian.velocity + atlassian-velocity + + + com.atlassian.core + atlassian-core + + + com.atlassian.config + atlassian-config + + + com.atlassian.spring + atlassian-spring + + + com.atlassian.confluence + confluence-bucket + + + com.atlassian.xwork + atlassian-xwork-10 + + + com.atlassian.xwork + atlassian-xwork-core + + + com.atlassian.profiling + atlassian-profiling + + + com.atlassian.trackback + atlassian-trackback + + + com.atlassian.extras + atlassian-extras + + + com.atlassian.johnson + atlassian-johnson + + + com.atlassian.plugins + atlassian-plugins-core + + + com.atlassian.plugins + atlassian-plugins-servlet + + + com.atlassian.plugins + atlassian-plugins-webfragment + + + com.atlassian.plugins + atlassian-plugins-webresource + + + com.atlassian.plugins + atlassian-plugins-osgi + + + com.atlassian.plugins + atlassian-plugins-spring + + + com.atlassian.bandana + atlassian-bandana + + + com.atlassian.user + atlassian-user + + + com.atlassian.renderer + atlassian-renderer + + + com.atlassian.bonnie + atlassian-bonnie + + + com.atlassian.jdk.utilities + atlassian-jdk-utilities + + + joda-time + joda-time + + + com.atlassian.seraph + atlassian-seraph + + + com.atlassian.security.auth.trustedapps + atlassian-trusted-apps-core + + + com.atlassian.security.auth.trustedapps + atlassian-trusted-apps-seraph-integration + + + javax.activation + activation + + + log4j + log4j + + + org.slf4j + slf4j-api + + + org.slf4j + slf4j-log4j12 + + + org.slf4j + jul-to-slf4j + + + commons-lang + commons-lang + + + commons-logging + commons-logging + + + commons-io + commons-io + + + commons-beanutils + commons-beanutils + + + commons-fileupload + commons-fileupload + + + org.directwebremoting + dwr + + + hibernate + hibernate + + + cglib + cglib + + + dom4j + dom4j + + + odmg + odmg + + + c3p0 + c3p0 + + + javax.transaction + jta + + + javax.media + jai-core + + + com.sun + jai_codec + + + opensymphony + webwork + + + opensymphony + xwork + + + ognl + ognl + + + opensymphony + oscore + + + oscache + oscache + + + osuser + osuser + + + opensymphony + propertyset + + + org.apache.velocity + velocity + + + javax.servlet + servlet-api + + + javax.mail + mail + + + org.springframework + spring-core + + + org.springframework + spring-web + + + org.springframework + spring-support + + + org.springframework + spring-aop + + + org.springframework + spring-hibernate2 + + + org.springframework + spring-beans + + + org.springframework + spring-jdbc + + + org.springframework + spring-dao + + + org.springframework + spring-jmx + + + com.atlassian.paddle + atlassian-paddle + + + org.aspectj + aspectjweaver + + + net.sf.ldaptemplate + ldaptemplate + + + opensymphony + sitemesh + + + velocity-tools + velocity-tools + + + radeox + radeox + + + org.apache.lucene + lucene-core + + + org.apache.lucene + lucene-analyzers + + + org.apache.lucene + lucene-misc + + + org.apache.lucene + lucene-highlighter + + + commons-digester + commons-digester + + + batik + batik-all + + + net.sourceforge.cssparser + cssparser + + + org.hibernate + jtidy + + + org.quartz-scheduler + quartz + + + org.hsqldb + hsqldb + + + mockobjects + mockobjects-core + + + org.mockito + mockito-all + + + org.springframework + spring-mock + + + rome + rome + + + jdom + jdom + + + commons-jrcs + commons-jrcs + + + commons-httpclient + commons-httpclient + + + xerces + xercesImpl + + + xmlrpc + xmlrpc + + + glue + glue + + + exml + exml + + + axis + axis + + + axis + axis-jaxrpc + + + axis + axis-saaj + + + commons-discovery + commons-discovery + + + commons-codec + commons-codec + + + oro + oro + + + slide + slide + + + com.thoughtworks.xstream + xstream + + + jfree + jfreechart + + + xalan + xalan + + + com.octo.captcha + jcaptcha-all + + + net.java.dev.urlrewrite + urlrewrite + + + commons-collections + commons-collections + + + javax.xml.stream + stax-api + + + org.codehaus.woodstox + wstx-asl + + + org.codehaus.xfire + xfire-core + + + org.codehaus.xfire + xfire-aegis + + + net.jcip + jcip-annotations + + + com.atlassian.cache + atlassian-cache-api + + + com.atlassian.sal + sal-spi + + + com.atlassian.sal + sal-spring + + + com.atlassian.sal + sal-api + + + com.atlassian.cache + atlassian-cache-memory + + + net.sourceforge.findbugs + jsr305 + + + opensymphony + pell-multipart + + + ch.qos.logback + logback-classic + com.atlassian.jira jira-core - 4.4 + 4.4.5 provided jar - - com.atlassian.jira - jira-api - - - com.atlassian.multitenant - multitenant-core - - - com.atlassian.multitenant - multitenant-utils - - - com.atlassian.crowd - atlassian-embedded-crowd-ofbiz - - - com.atlassian.crowd - embedded-crowd-core - - - com.atlassian.crowd - embedded-crowd-spi - - - com.atlassian.crowd - crowd-api - - - com.atlassian.crowd - crowd-core - - - com.atlassian.crowd - crowd-integration-api - - - com.atlassian.crowd - crowd-integration-client-rest - - - com.atlassian.crowd - crowd-persistence - - - com.atlassian.crowd - crowd-events - - - com.atlassian.crowd - crowd-ldap - - - com.atlassian.crowd - crowd-remote - - - com.atlassian.crowd - crowd-server-common - - - com.atlassian.crowd - crowd-password-encoders - - - com.atlassian.security - atlassian-password-encoder - - - org.springframework.security - spring-security-core - - - org.springframework - spring-core - - - org.springframework - spring-beans - - - org.springframework.ldap - spring-ldap-core - - - org.springframework - spring-tx - - - com.atlassian.crowd - crowd-integration-client - - - wsdl4j - wsdl4j - - - org.codehaus.xfire - xfire-core - - - org.codehaus.xfire - xfire-aegis - - - sal-spi - com.atlassian.sal - - - com.atlassian.sal - sal-core - - - com.atlassian.gadgets - atlassian-gadgets-api - - - com.atlassian.gadgets - atlassian-gadgets-spi - - - com.atlassian.oauth - atlassian-oauth-api - - - com.atlassian.p4package - atlassian-p4package - - - com.atlassian.extras - atlassian-extras - - - com.atlassian.cache - atlassian-cache-api - - - com.atlassian.cache - atlassian-cache-memory - - - joda-time - joda-time - - - com.sun - jai_core - - - com.sun - jai_codec - - - commons-lang - commons-lang - - - commons-collections - commons-collections - - - commons-io - commons-io - - - com.atlassian.activeobjects - activeobjects-spi - - - log4j - log4j - - - dom4j - dom4j - - - oro - oro - - - com.atlassian.util.concurrent - atlassian-util-concurrent - - - com.atlassian.profiling - atlassian-profiling - - - org.slf4j - slf4j-api - - - org.slf4j - slf4j-log4j12 - - - org.slf4j - jul-to-slf4j - - - org.slf4j - jcl-over-slf4j - - - com.atlassian.jdk.utilities - atlassian-jdk-utilities - - - com.atlassian.scheduler - atlassian-scheduler - - - com.atlassian.johnson - atlassian-johnson - - - com.atlassian.plugins - atlassian-plugins-core - - - com.atlassian.plugins - atlassian-plugins-servlet - - - com.atlassian.plugins - atlassian-plugins-webfragment - - - com.atlassian.plugins - atlassian-plugins-webresource - - - com.atlassian.plugins - atlassian-plugins-osgi - - - com.atlassian.plugins - atlassian-plugins-osgi-events - - - com.atlassian.seraph - atlassian-seraph - - - com.atlassian.security - atlassian-secure-random - - - com.atlassian.security.auth.trustedapps - atlassian-trusted-apps-core - - - com.atlassian.security.auth.trustedapps - atlassian-trusted-apps-seraph-integration - - - bouncycastle - bcprov-jdk15 - - - com.atlassian.renderer - atlassian-renderer - - - com.atlassian.gzipfilter - atlassian-gzipfilter - - - com.atlassian.event - atlassian-event - - - opensymphony - oscore - - - opensymphony - sitemesh - - - commons-digester - commons-digester - - - commons-beanutils - commons-beanutils - - - commons-configuration - commons-configuration - - - org.apache.lucene - lucene-analyzers - - - velocity - velocity - - - org.apache.velocity - velocity-tools - - - javax.activation - activation - - - javax.mail - mail - - - glue - glue - - - bsf - bsf - - - bsh - bsh - - - com.atlassian.ofbiz - entityengine-share - - - com.atlassian.ofbiz - entityengine - - - csv - csv - - - quartz - quartz - - - picocontainer - picocontainer - - - jzlib - jzlib - - - jsch - jsch - - - com.octo.captcha - jcaptcha - - - com.octo.captcha - jcaptcha-api - - - com.jhlabs - filters - - - javacvs - javacvs - - - statcvs - statcvs - - - commons-dbcp - commons-dbcp - - - commons-pool - commons-pool - - - hsqldb - hsqldb - - - jndi - jndi - - - jta - jta - - - ots-jts - ots-jts - - - jotm - jotm - - - jotm - jotm-jrmp_stubs - - - jotm - jotm-iiop_stubs - - - jotm - jonas_timer - - - jotm - objectweb-datasource - - - carol - carol - - - carol - carol-properties - - - xapool - xapool - - - xml-apis - xml-apis - - - saxon - saxon-noaelfred - - - commons-jelly - commons-jelly - - - commons-jelly - commons-jelly-tags-junit - - - commons-jelly - commons-jelly-tags-util - - - commons-jelly - commons-jelly-tags-email - - - commons-jelly - commons-jelly-tags-log - - - commons-jelly - commons-jelly-tags-http - - - commons-jelly - commons-jelly-tags-soap - - - commons-jelly - commons-jelly-tags-sql - - - commons-jelly - commons-jelly-tags-regexp - - - commons-jexl - commons-jexl - - - commons-httpclient - commons-httpclient - - - commons-codec - commons-codec - - - xmlrpc - xmlrpc - - - axis - axis - - - axis - axis-jaxrpc - - - axis - axis-saaj - - - commons-discovery - commons-discovery - - - xerces - xercesImpl - - - xalan - xalan - - - xml-security - xmlsec - - - datafile - datafile - - - xpp3 - xpp3 - - - com.thoughtworks.xstream - xstream - - - jfree - jfreechart - - - jfree - jcommon - - - net.java.dev.urlrewrite - urlrewrite - - - radeox - radeox - - - jtidy - jtidy - - - jdom - jdom - - - net.sf.ehcache - ehcache - - - org.codehaus.woodstox - wstx-asl - - - javax.servlet - servlet-api - - - javax.servlet - jsp-api - - - com.atlassian.modzdetector - modz-detector - - - org.antlr - antlr-runtime - - - commons-jrcs - commons-jrcs - - - com.google.collections - google-collections - - - com.atlassian.jira - jira-lang-ca_ES - - - com.atlassian.jira - jira-lang-cs_CZ - - - com.atlassian.jira - jira-lang-da_DK - - - com.atlassian.jira - jira-lang-de_CH - - - com.atlassian.jira - jira-lang-de_DE - - - com.atlassian.jira - jira-lang-en_UK - - - com.atlassian.jira - jira-lang-en_US - - - com.atlassian.jira - jira-lang-es_ES - - - com.atlassian.jira - jira-lang-fr_FR - - - com.atlassian.jira - jira-lang-hu_HU - - - com.atlassian.jira - jira-lang-it_IT - - - com.atlassian.jira - jira-lang-ja_JP - - - com.atlassian.jira - jira-lang-nl_BE - - - com.atlassian.jira - jira-lang-no_NO - - - com.atlassian.jira - jira-lang-pl_PL - - - com.atlassian.jira - jira-lang-pt_BR - - - com.atlassian.jira - jira-lang-ru_RU - - - com.atlassian.jira - jira-lang-sk_SK - - - com.atlassian.jira - jira-lang-tr_TR - - - com.atlassian.jira - jira-lang-zh_CN - - - com.atlassian.jira - jira-lang-zh_TW - - - com.google.code.findbugs - jsr305 - - - com.google.code.findbugs - annotations - - - cglib - cglib-nodep - - - com.atlassian.sal - sal-api - - - com.atlassian.applinks - applinks-api - - - com.atlassian.applinks - applinks-spi - - - com.atlassian.applinks - applinks-host - - - rhino - js - + + commons-logging + commons-logging + + + com.atlassian.jira + jira-api + + + com.atlassian.multitenant + multitenant-core + + + com.atlassian.multitenant + multitenant-utils + + + com.atlassian.crowd + atlassian-embedded-crowd-ofbiz + + + com.atlassian.crowd + embedded-crowd-core + + + com.atlassian.crowd + embedded-crowd-spi + + + com.atlassian.crowd + crowd-api + + + com.atlassian.crowd + crowd-core + + + com.atlassian.crowd + crowd-integration-api + + + com.atlassian.crowd + crowd-integration-client-rest + + + com.atlassian.crowd + crowd-persistence + + + com.atlassian.crowd + crowd-events + + + com.atlassian.crowd + crowd-ldap + + + com.atlassian.crowd + crowd-remote + + + com.atlassian.crowd + crowd-server-common + + + com.atlassian.crowd + crowd-password-encoders + + + com.atlassian.security + atlassian-password-encoder + + + org.springframework.security + spring-security-core + + + org.springframework + spring-core + + + org.springframework + spring-beans + + + org.springframework.ldap + spring-ldap-core + + + org.springframework + spring-tx + + + com.atlassian.crowd + crowd-integration-client + + + wsdl4j + wsdl4j + + + org.codehaus.xfire + xfire-core + + + org.codehaus.xfire + xfire-aegis + + + sal-spi + com.atlassian.sal + + + com.atlassian.sal + sal-core + + + com.atlassian.gadgets + atlassian-gadgets-api + + + com.atlassian.gadgets + atlassian-gadgets-spi + + + com.atlassian.oauth + atlassian-oauth-api + + + com.atlassian.p4package + atlassian-p4package + + + com.atlassian.extras + atlassian-extras + + + com.atlassian.cache + atlassian-cache-api + + + com.atlassian.cache + atlassian-cache-memory + + + joda-time + joda-time + + + com.sun + jai_core + + + com.sun + jai_codec + + + commons-lang + commons-lang + + + commons-collections + commons-collections + + + commons-io + commons-io + + + com.atlassian.activeobjects + activeobjects-spi + + + log4j + log4j + + + dom4j + dom4j + + + oro + oro + + + com.atlassian.util.concurrent + atlassian-util-concurrent + + + com.atlassian.profiling + atlassian-profiling + + + org.slf4j + slf4j-api + + + org.slf4j + slf4j-log4j12 + + + org.slf4j + jul-to-slf4j + + + org.slf4j + jcl-over-slf4j + + + com.atlassian.jdk.utilities + atlassian-jdk-utilities + + + com.atlassian.scheduler + atlassian-scheduler + + + com.atlassian.johnson + atlassian-johnson + + + com.atlassian.plugins + atlassian-plugins-core + + + com.atlassian.plugins + atlassian-plugins-servlet + + + com.atlassian.plugins + atlassian-plugins-webfragment + + + com.atlassian.plugins + atlassian-plugins-webresource + + + com.atlassian.plugins + atlassian-plugins-osgi + + + com.atlassian.plugins + atlassian-plugins-osgi-events + + + com.atlassian.seraph + atlassian-seraph + + + com.atlassian.security + atlassian-secure-random + + + com.atlassian.security.auth.trustedapps + atlassian-trusted-apps-core + + + com.atlassian.security.auth.trustedapps + atlassian-trusted-apps-seraph-integration + + + bouncycastle + bcprov-jdk15 + + + com.atlassian.renderer + atlassian-renderer + + + com.atlassian.gzipfilter + atlassian-gzipfilter + + + com.atlassian.event + atlassian-event + + + opensymphony + oscore + + + opensymphony + sitemesh + + + commons-digester + commons-digester + + + commons-beanutils + commons-beanutils + + + commons-configuration + commons-configuration + + + org.apache.lucene + lucene-analyzers + + + velocity + velocity + + + org.apache.velocity + velocity-tools + + + javax.activation + activation + + + javax.mail + mail + + + glue + glue + + + bsf + bsf + + + bsh + bsh + + + com.atlassian.ofbiz + entityengine-share + + + com.atlassian.ofbiz + entityengine + + + csv + csv + + + quartz + quartz + + + picocontainer + picocontainer + + + jzlib + jzlib + + + jsch + jsch + + + com.octo.captcha + jcaptcha + + + com.octo.captcha + jcaptcha-api + + + com.jhlabs + filters + + + javacvs + javacvs + + + statcvs + statcvs + + + commons-dbcp + commons-dbcp + + + commons-pool + commons-pool + + + hsqldb + hsqldb + + + jndi + jndi + + + jta + jta + + + ots-jts + ots-jts + + + jotm + jotm + + + jotm + jotm-jrmp_stubs + + + jotm + jotm-iiop_stubs + + + jotm + jonas_timer + + + jotm + objectweb-datasource + + + carol + carol + + + carol + carol-properties + + + xapool + xapool + + + xml-apis + xml-apis + + + saxon + saxon-noaelfred + + + commons-jelly + commons-jelly + + + commons-jelly + commons-jelly-tags-junit + + + commons-jelly + commons-jelly-tags-util + + + commons-jelly + commons-jelly-tags-email + + + commons-jelly + commons-jelly-tags-log + + + commons-jelly + commons-jelly-tags-http + + + commons-jelly + commons-jelly-tags-soap + + + commons-jelly + commons-jelly-tags-sql + + + commons-jelly + commons-jelly-tags-regexp + + + commons-jexl + commons-jexl + + + commons-httpclient + commons-httpclient + + + commons-codec + commons-codec + + + xmlrpc + xmlrpc + + + axis + axis + + + axis + axis-jaxrpc + + + axis + axis-saaj + + + commons-discovery + commons-discovery + + + xerces + xercesImpl + + + xalan + xalan + + + xml-security + xmlsec + + + datafile + datafile + + + xpp3 + xpp3 + + + com.thoughtworks.xstream + xstream + + + jfree + jfreechart + + + jfree + jcommon + + + net.java.dev.urlrewrite + urlrewrite + + + radeox + radeox + + + jtidy + jtidy + + + jdom + jdom + + + net.sf.ehcache + ehcache + + + org.codehaus.woodstox + wstx-asl + + + javax.servlet + servlet-api + + + javax.servlet + jsp-api + + + com.atlassian.modzdetector + modz-detector + + + org.antlr + antlr-runtime + + + commons-jrcs + commons-jrcs + + + com.google.collections + google-collections + + + com.atlassian.jira + jira-lang-ca_ES + + + com.atlassian.jira + jira-lang-cs_CZ + + + com.atlassian.jira + jira-lang-da_DK + + + com.atlassian.jira + jira-lang-de_CH + + + com.atlassian.jira + jira-lang-de_DE + + + com.atlassian.jira + jira-lang-en_UK + + + com.atlassian.jira + jira-lang-en_US + + + com.atlassian.jira + jira-lang-es_ES + + + com.atlassian.jira + jira-lang-fr_FR + + + com.atlassian.jira + jira-lang-hu_HU + + + com.atlassian.jira + jira-lang-it_IT + + + com.atlassian.jira + jira-lang-ja_JP + + + com.atlassian.jira + jira-lang-nl_BE + + + com.atlassian.jira + jira-lang-no_NO + + + com.atlassian.jira + jira-lang-pl_PL + + + com.atlassian.jira + jira-lang-pt_BR + + + com.atlassian.jira + jira-lang-ru_RU + + + com.atlassian.jira + jira-lang-sk_SK + + + com.atlassian.jira + jira-lang-tr_TR + + + com.atlassian.jira + jira-lang-zh_CN + + + com.atlassian.jira + jira-lang-zh_TW + + + com.google.code.findbugs + jsr305 + + + com.google.code.findbugs + annotations + + + cglib + cglib-nodep + + + com.atlassian.sal + sal-api + + + com.atlassian.applinks + applinks-api + + + com.atlassian.applinks + applinks-spi + + + com.atlassian.applinks + applinks-host + + + rhino + js + @@ -1371,7 +1435,13 @@ atlassian Atlassian Repository - https://maven.atlassian.com/repository/public + https://maven.atlassian.com/content/repositories/atlassian-public/ + + atlassian-3rdparty + Atlassian 3rd Party Repository + https://maven.atlassian.com/3rdparty/ + + diff --git a/pom.xml b/pom.xml index 46ca4ae..4d9df01 100644 --- a/pom.xml +++ b/pom.xml @@ -127,6 +127,7 @@ + com.mycila.maven-license-plugin maven-license-plugin @@ -206,6 +207,11 @@ + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + @@ -261,5 +267,6 @@ 2.2.0 3.0.2 1.7.1 + 2.8.8.1