diff --git a/.project b/.project index e4c3ce9..211a366 100644 --- a/.project +++ b/.project @@ -5,6 +5,11 @@ + + org.eclipse.jdt.core.javabuilder + + + org.eclipse.m2e.core.maven2Builder @@ -12,6 +17,18 @@ + org.eclipse.jdt.core.javanature org.eclipse.m2e.core.maven2Nature + + + 1742539507100 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + diff --git a/maven_dependency_tree.gv b/maven_dependency_tree.gv new file mode 100644 index 0000000..e15cb2a --- /dev/null +++ b/maven_dependency_tree.gv @@ -0,0 +1,558 @@ +digraph "com.leapwork:leapwork-integration-for-bamboo:atlassian-plugin:5.0.1-SNAPSHOT" { + "com.leapwork:leapwork-integration-for-bamboo:atlassian-plugin:5.0.1-SNAPSHOT" -> "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" ; + "com.leapwork:leapwork-integration-for-bamboo:atlassian-plugin:5.0.1-SNAPSHOT" -> "com.atlassian.plugin:atlassian-spring-scanner-annotation:jar:1.2.13:provided" ; + "com.leapwork:leapwork-integration-for-bamboo:atlassian-plugin:5.0.1-SNAPSHOT" -> "javax.inject:javax.inject:jar:1:provided" ; + "com.leapwork:leapwork-integration-for-bamboo:atlassian-plugin:5.0.1-SNAPSHOT" -> "junit:junit:jar:4.10:test" ; + "com.leapwork:leapwork-integration-for-bamboo:atlassian-plugin:5.0.1-SNAPSHOT" -> "com.atlassian.sal:sal-api:jar:3.0.8:provided" ; + "com.leapwork:leapwork-integration-for-bamboo:atlassian-plugin:5.0.1-SNAPSHOT" -> "com.atlassian.plugins:atlassian-plugins-osgi-testrunner:jar:2.0.2:test" ; + "com.leapwork:leapwork-integration-for-bamboo:atlassian-plugin:5.0.1-SNAPSHOT" -> "javax.ws.rs:jsr311-api:jar:1.1.1:provided" ; + "com.leapwork:leapwork-integration-for-bamboo:atlassian-plugin:5.0.1-SNAPSHOT" -> "com.google.code.gson:gson:jar:2.2.2-atlassian-1:provided" ; + "com.leapwork:leapwork-integration-for-bamboo:atlassian-plugin:5.0.1-SNAPSHOT" -> "org.asynchttpclient:async-http-client:jar:3.0.1:compile" ; + "com.leapwork:leapwork-integration-for-bamboo:atlassian-plugin:5.0.1-SNAPSHOT" -> "io.netty:netty-common:jar:4.1.119.Final:compile" ; + "com.leapwork:leapwork-integration-for-bamboo:atlassian-plugin:5.0.1-SNAPSHOT" -> "io.netty:netty-handler:jar:4.1.119.Final:compile" ; + "com.leapwork:leapwork-integration-for-bamboo:atlassian-plugin:5.0.1-SNAPSHOT" -> "com.atlassian.bamboo.plugins.testresultparser:atlassian-bamboo-plugin-testresultparser:jar:6.6.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-persistence:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-migration:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.security.serialblocklist:serialblocklist:jar:2.0.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.security.objectfilter:java11-objectfilter:jar:1.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-language:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-charts:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-upgrader:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-license:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-agent-classserver:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-agent-local:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-agent-elastic-server:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-maven-embedder:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-import-export:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-embedded-crowd-atlassian-user:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian:webwork-compat:jar:1.33:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.applinks:applinks-api:jar:10.0.15:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.applinks:applinks-host:jar:10.0.15:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.applinks:applinks-spi:jar:10.0.15:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.beehive:beehive-api:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.beehive:beehive-single-node:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.beehive:beehive-db:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.core:atlassian-core:jar:9.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.html:atlassian-html-encoder:jar:1.5:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.velocity.htmlsafe:velocity-htmlsafe:jar:5.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "commons-pool:commons-pool:jar:1.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.fugue:fugue:jar:2.7.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.http:atlassian-http:jar:4.1.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.json:atlassian-json-api:jar:1.1.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.johnson:atlassian-johnson-core:jar:5.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.oauth:atlassian-oauth-api:jar:6.0.5:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.plugins:atlassian-plugins-schema:jar:8.0.15:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.plugins:atlassian-whitelist-api-plugin:jar:6.1.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.profiling:atlassian-profiling:jar:5.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.sal:sal-spi:jar:6.0.4:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.sal:sal-spring:jar:6.0.4:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.sal:sal-trust-api:jar:6.0.4:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.scheduler:atlassian-scheduler-api:jar:5.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.scheduler:atlassian-scheduler-core:jar:5.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.scheduler:atlassian-scheduler-quartz2:jar:5.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.security:atlassian-secure-utils:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.xwork:atlassian-xwork-12:jar:2.5.32-struts-4:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "io.atlassian.util.concurrent:atlassian-util-concurrent:jar:4.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.oauth2:oauth2-client-api:jar:4.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.oauth2:oauth2-provider-api:jar:4.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.oauth2:oauth2-scopes-api:jar:4.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian:atlassian-localhost:jar:1.2.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.atlassian.ip:atlassian-ip:jar:3.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.hibernate:hibernate-core:jar:5.6.15.Final-atlassian-2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.hibernate:hibernate-hikaricp:jar:5.6.15.Final:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.zaxxer:HikariCP:jar:4.0.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.hibernate:hibernate-ehcache:jar:5.6.15.Final:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.slf4j:jul-to-slf4j:jar:2.0.13:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.apache.logging.log4j:log4j-slf4j2-impl:jar:2.23.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.springframework:spring-beans:jar:5.3.38-atlassian-2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.springframework:spring-context:jar:5.3.37:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.springframework:spring-core:jar:5.3.38-atlassian-2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.rometools:rome:jar:2.1.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "de.schlichtherle.truezip:truezip-file:jar:7.7.10:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "de.schlichtherle.truezip:truezip-driver-zip:jar:7.7.10:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.jdom:jdom2:jar:2.0.6.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.dom4j:dom4j:jar:2.1.4:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "javax.transaction:jta:jar:1.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.github.ziplet:ziplet:jar:2.4.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.apache.struts:struts2-core:jar:2.5.33-atlassian-1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.freemarker:freemarker:jar:2.3.31-atlassian-2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "opensymphony:sitemesh:jar:2.5-atlassian-11:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.tuckey:urlrewritefilter:jar:4.0.4:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.hamcrest:hamcrest-all:jar:1.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "javax.xml.stream:stax-api:jar:1.0-2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.apache.maven:maven-embedder:jar:3.9.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.apache.maven:maven-model:jar:3.9.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.octo.captcha:jcaptcha:jar:2.0-alpha-1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.octo.captcha:jcaptcha-api:jar:2.0-alpha-1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.jhlabs:filters:jar:2.0.235:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.apache.struts:struts2-sitemesh-plugin:jar:2.1.8.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.apache.httpcomponents:httpmime:jar:4.5.14:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.reflections:reflections:jar:0.9.11:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.apache.felix:org.apache.felix.framework:jar:7.0.5:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "biz.aQute.bnd:biz.aQute.bndlib:jar:3.5.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "jakarta.ws.rs:jakarta.ws.rs-api:jar:2.1.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.glassfish.jersey.core:jersey-server:jar:2.42:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.glassfish.jersey.core:jersey-common:jar:2.42:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.glassfish.jersey.containers:jersey-container-servlet:jar:2.42:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.glassfish.jersey.inject:jersey-hk2:jar:2.42:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.glassfish.jersey.media:jersey-media-json-jackson:jar:2.42:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.glassfish.jersey.core:jersey-client:jar:2.42:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.glassfish.jersey.media:jersey-media-jaxb:jar:2.42:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.fasterxml.jackson.core:jackson-core:jar:2.16.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.fasterxml.jackson.core:jackson-databind:jar:2.16.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.fasterxml.jackson.core:jackson-annotations:jar:2.16.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.16.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.17.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:jar:2.17.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.16.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:2.16.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.fasterxml.jackson.datatype:jackson-datatype-joda:jar:2.16.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.17.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.16.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.17.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "org.ow2.asm:asm:jar:9.5:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "net.bytebuddy:byte-buddy:jar:1.14.18:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-web:jar:10.0.0:provided" -> "xerces:xercesImpl:jar:2.12.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-crypto:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-deployments-api:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.bamboo:bamboo-specs:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-core-agent-bootstrap:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-utils:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-xml-utils:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.analytics:analytics-api:jar:9.0.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.diagnostics:atlassian-diagnostics-api:jar:4.0.4:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.audit:atlassian-audit-api:jar:2.0.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.audit:atlassian-audit-spi:jar:2.0.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.audit:atlassian-audit-core:jar:2.0.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.bamboo.security.classlist:security-classlist-api:jar:1.0.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.cache:atlassian-cache-ehcache:jar:7.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.cache:atlassian-cache-memory:jar:7.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.plugins:atlassian-plugins-spring:jar:8.0.15:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.plugins:atlassian-plugins-webfragment:jar:7.0.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.security:atlassian-secure-random:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.security:atlassian-secure-xml:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.security.auth.trustedapps:atlassian-trusted-apps-seraph-integration:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.security.auth.trustedapps:atlassian-trusted-apps-core:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.spring:atlassian-spring:jar:3.0.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.utils:atlassian-processutils:jar:1.8.7:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.apache.velocity:velocity:jar:1.6.4-atlassian-36:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.velocity:atlassian-velocity:jar:1.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.config:atlassian-config-internal:jar:2.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.util.concurrent:atlassian-util-concurrent:jar:3.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "javax.xml.bind:jaxb-api:jar:2.3.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "javax.annotation:javax.annotation-api:jar:1.3.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "javax.activation:javax.activation-api:jar:1.2.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.sun.activation:javax.activation:jar:1.2.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.glassfish.jaxb:jaxb-runtime:jar:2.3.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.apache.commons:commons-collections4:jar:4.4:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "commons-lang:commons-lang:jar:2.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "commons-codec:commons-codec:jar:1.16.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "commons-validator:commons-validator:jar:1.7:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "jaxen:jaxen:jar:1.1.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.apache.commons:commons-lang3:jar:3.14.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.springframework:spring-jms:jar:5.3.37:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.springframework:spring-context-support:jar:5.3.38-atlassian-2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "commons-digester:commons-digester:jar:2.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.aspectj:aspectjrt:jar:1.9.19:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.aspectj:aspectjweaver:jar:1.9.19:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.hibernate:hibernate-jpamodelgen:jar:5.6.15.Final:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "cglib:cglib-nodep:jar:2.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.sun.mail:javax.mail:jar:1.6.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.igniterealtime.smack:smack-java8-full:jar:4.4.4:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "joda-time:joda-time:jar:2.12.7:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.apache.logging.log4j:log4j-1.2-api:jar:2.23.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.apache.logging.log4j:log4j-api:jar:2.23.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.apache.logging.log4j:log4j-core:jar:2.23.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.quartz-scheduler:quartz:jar:2.3.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.tmatesoft.svnkit:svnkit:jar:1.10.11:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.thoughtworks.xstream:xstream:jar:1.4.20:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.thoughtworks.xstream:xstream-hibernate:jar:1.4.20:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.mail:atlassian-mail:jar:7.0.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.apache.activemq:activemq-broker:jar:5.18.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.apache.xbean:xbean-spring:jar:3.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.slf4j:slf4j-api:jar:2.0.13:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.apache.sshd:sshd-core:jar:2.12.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "net.i2p.crypto:eddsa:jar:0.3.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.botocss:botocss:jar:3.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.scala-lang:scala-library:jar:2.10.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.tdunning:t-digest:jar:3.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.plugins:atlassian-plugins-webresource:jar:7.1.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.plugins:atlassian-plugins-webresource-common:jar:8.0.15:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "org.codehaus.jackson:jackson-mapper-asl:jar:1.9.14-atlassian-6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.crowd:embedded-crowd-spi:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.crowd:embedded-crowd-api:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.crowd:embedded-crowd-core:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.profiling:atlassian-profiling-api:jar:5.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.google.protobuf:protobuf-java:jar:3.24.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "io.grpc:grpc-netty-shaded:jar:1.58.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "io.grpc:grpc-protobuf:jar:1.58.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "io.grpc:grpc-stub:jar:1.58.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.squareup:tape:jar:1.2.3-atlassian-5:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-core:jar:10.0.0:provided" -> "com.atlassian.atlassian-stats:atlassian-stats:jar:1.11:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-api-agent-bootstrap:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "com.atlassian.extras:atlassian-extras-api:jar:3.4.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "opensymphony:oscore:jar:2.3.0-atlassian-5:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "com.atlassian.plugins:atlassian-plugins-servlet:jar:8.0.15:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "com.atlassian.plugins:atlassian-plugins-webfragment-api:jar:7.0.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "com.atlassian.bandana:atlassian-bandana:jar:3.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "com.atlassian.cache:atlassian-cache-api:jar:7.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "org.apache.ant:ant:jar:1.10.12:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "org.apache.commons:commons-text:jar:1.11.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "org.apache.commons:commons-pool2:jar:2.11.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "commons-configuration:commons-configuration:jar:1.4-atlassian-1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "commons-beanutils:commons-beanutils:jar:1.9.4:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "com.atlassian.seraph:atlassian-seraph:jar:4.2.5:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "org.acegisecurity:acegi-security:jar:1.0.7:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "com.atlassian.soy:soy-template-renderer-plugin-api:jar:7.0.5:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "org.fusesource.jansi:jansi:jar:1.18:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-api:jar:10.0.0:provided" -> "org.bouncycastle:bcprov-jdk18on:jar:1.78:provided" ; + "opensymphony:oscore:jar:2.3.0-atlassian-5:provided" -> "javax.ejb:ejb-api:jar:3.0:provided" ; + "opensymphony:oscore:jar:2.3.0-atlassian-5:provided" -> "xalan:xalan:jar:2.7.3:provided" ; + "opensymphony:oscore:jar:2.3.0-atlassian-5:provided" -> "xalan:serializer:jar:2.7.3:provided" ; + "org.apache.ant:ant:jar:1.10.12:provided" -> "org.apache.ant:ant-launcher:jar:1.10.12:provided" ; + "commons-configuration:commons-configuration:jar:1.4-atlassian-1:provided" -> "commons-jxpath:commons-jxpath:jar:1.2:provided" ; + "com.atlassian.soy:soy-template-renderer-plugin-api:jar:7.0.5:provided" -> "com.atlassian.soy:soy-template-renderer-api:jar:7.0.5:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-crypto:jar:10.0.0:provided" -> "org.bouncycastle:bcpkix-jdk18on:jar:1.78:provided" ; + "org.bouncycastle:bcpkix-jdk18on:jar:1.78:provided" -> "org.bouncycastle:bcutil-jdk18on:jar:1.78:provided" ; + "com.atlassian.bamboo:bamboo-specs:jar:10.0.0:provided" -> "com.google.code.findbugs:jsr305:jar:3.0.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-utils:jar:10.0.0:provided" -> "org.jsoup:jsoup:jar:1.17.2:provided" ; + "com.atlassian.audit:atlassian-audit-core:jar:2.0.3:provided" -> "net.sf.supercsv:super-csv:jar:2.1.0:provided" ; + "com.atlassian.cache:atlassian-cache-ehcache:jar:7.0.1:provided" -> "com.atlassian.cache:atlassian-cache-common-impl:jar:7.0.1:provided" ; + "com.atlassian.cache:atlassian-cache-memory:jar:7.0.1:provided" -> "com.atlassian.instrumentation:atlassian-instrumentation-core:jar:4.0.0:provided" ; + "com.atlassian.spring:atlassian-spring:jar:3.0.2:provided" -> "org.springframework:spring-jdbc:jar:2.0.6:provided" ; + "com.atlassian.spring:atlassian-spring:jar:3.0.2:provided" -> "commons-logging:commons-logging:jar:1.3.1:provided" ; + "org.springframework:spring-jdbc:jar:2.0.6:provided" -> "org.springframework:spring-dao:jar:2.0.6:provided" ; + "com.atlassian.utils:atlassian-processutils:jar:1.8.7:provided" -> "org.jvnet.winp:winp:jar:1.28:provided" ; + "org.apache.velocity:velocity:jar:1.6.4-atlassian-36:provided" -> "commons-collections:commons-collections:jar:3.2.2:provided" ; + "org.apache.velocity:velocity:jar:1.6.4-atlassian-36:provided" -> "oro:oro:jar:2.0.8:provided" ; + "com.atlassian.config:atlassian-config-internal:jar:2.0.0:provided" -> "com.atlassian.config:atlassian-config:jar:2.0.0:provided" ; + "com.atlassian.config:atlassian-config-internal:jar:2.0.0:provided" -> "net.jcip:jcip-annotations:jar:1.0:provided" ; + "org.glassfish.jaxb:jaxb-runtime:jar:2.3.6:provided" -> "org.glassfish.jaxb:txw2:jar:2.3.6:provided" ; + "org.glassfish.jaxb:jaxb-runtime:jar:2.3.6:provided" -> "com.sun.istack:istack-commons-runtime:jar:3.0.12:provided" ; + "org.springframework:spring-jms:jar:5.3.37:provided" -> "org.springframework:spring-messaging:jar:5.3.37:provided" ; + "org.springframework:spring-jms:jar:5.3.37:provided" -> "org.springframework:spring-tx:jar:5.3.37:provided" ; + "org.igniterealtime.smack:smack-java8-full:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-bosh:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-java8-full:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-debug:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-java8-full:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-experimental:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-java8-full:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-extensions:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-java8-full:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-java8:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-java8-full:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-legacy:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-java8-full:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-omemo:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-java8-full:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-openpgp:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-java8-full:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-resolver-minidns:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-java8-full:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-resolver-minidns-dox:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-java8-full:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-tcp:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-bosh:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-core:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-bosh:jar:4.4.4:provided" -> "org.igniterealtime.jbosh:jbosh:jar:0.9.2:provided" ; + "org.igniterealtime.smack:smack-core:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-xmlparser:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-core:jar:4.4.4:provided" -> "org.jxmpp:jxmpp-core:jar:1.0.3:provided" ; + "org.igniterealtime.smack:smack-core:jar:4.4.4:provided" -> "org.jxmpp:jxmpp-jid:jar:1.0.3:provided" ; + "org.igniterealtime.smack:smack-core:jar:4.4.4:provided" -> "org.minidns:minidns-core:jar:1.0.5:provided" ; + "org.igniterealtime.jbosh:jbosh:jar:0.9.2:provided" -> "xpp3:xpp3:jar:1.1.4c:provided" ; + "org.igniterealtime.smack:smack-experimental:jar:4.4.4:provided" -> "org.hsluv:hsluv:jar:0.2:provided" ; + "org.igniterealtime.smack:smack-extensions:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-im:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-java8:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-resolver-javax:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-java8:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-sasl-javax:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-java8:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-xmlparser-stax:jar:4.4.4:provided" ; + "org.igniterealtime.smack:smack-openpgp:jar:4.4.4:provided" -> "org.pgpainless:pgpainless-core:jar:0.1.0:provided" ; + "org.igniterealtime.smack:smack-resolver-minidns:jar:4.4.4:provided" -> "org.minidns:minidns-hla:jar:1.0.5:provided" ; + "org.igniterealtime.smack:smack-resolver-minidns:jar:4.4.4:provided" -> "org.jxmpp:jxmpp-util-cache:jar:1.0.3:provided" ; + "org.minidns:minidns-hla:jar:1.0.5:provided" -> "org.minidns:minidns-dnssec:jar:1.0.5:provided" ; + "org.minidns:minidns-dnssec:jar:1.0.5:provided" -> "org.minidns:minidns-client:jar:1.0.5:provided" ; + "org.minidns:minidns-dnssec:jar:1.0.5:provided" -> "org.minidns:minidns-iterative-resolver:jar:1.0.5:provided" ; + "org.igniterealtime.smack:smack-tcp:jar:4.4.4:provided" -> "org.igniterealtime.smack:smack-streammanagement:jar:4.4.4:provided" ; + "org.quartz-scheduler:quartz:jar:2.3.2:provided" -> "com.mchange:mchange-commons-java:jar:0.2.15:provided" ; + "org.tmatesoft.svnkit:svnkit:jar:1.10.11:provided" -> "de.regnis.q.sequence:sequence-library:jar:1.0.4:provided" ; + "org.tmatesoft.svnkit:svnkit:jar:1.10.11:provided" -> "org.tmatesoft.sqljet:sqljet:jar:1.1.15:provided" ; + "org.tmatesoft.svnkit:svnkit:jar:1.10.11:provided" -> "net.java.dev.jna:jna:jar:5.6.0:provided" ; + "org.tmatesoft.svnkit:svnkit:jar:1.10.11:provided" -> "net.java.dev.jna:jna-platform:jar:5.6.0:provided" ; + "org.tmatesoft.svnkit:svnkit:jar:1.10.11:provided" -> "com.trilead:trilead-ssh2:jar:1.0.0-build222:provided" ; + "org.tmatesoft.svnkit:svnkit:jar:1.10.11:provided" -> "com.jcraft:jsch.agentproxy.connector-factory:jar:0.0.9:provided" ; + "org.tmatesoft.svnkit:svnkit:jar:1.10.11:provided" -> "com.jcraft:jsch.agentproxy.svnkit-trilead-ssh2:jar:0.0.9:provided" ; + "org.tmatesoft.svnkit:svnkit:jar:1.10.11:provided" -> "org.lz4:lz4-java:jar:1.4.1:provided" ; + "com.jcraft:jsch.agentproxy.connector-factory:jar:0.0.9:provided" -> "com.jcraft:jsch.agentproxy.core:jar:0.0.9:provided" ; + "com.jcraft:jsch.agentproxy.connector-factory:jar:0.0.9:provided" -> "com.jcraft:jsch.agentproxy.usocket-jna:jar:0.0.9:provided" ; + "com.jcraft:jsch.agentproxy.connector-factory:jar:0.0.9:provided" -> "com.jcraft:jsch.agentproxy.usocket-nc:jar:0.0.9:provided" ; + "com.jcraft:jsch.agentproxy.connector-factory:jar:0.0.9:provided" -> "com.jcraft:jsch.agentproxy.sshagent:jar:0.0.9:provided" ; + "com.jcraft:jsch.agentproxy.connector-factory:jar:0.0.9:provided" -> "com.jcraft:jsch.agentproxy.pageant:jar:0.0.9:provided" ; + "com.thoughtworks.xstream:xstream:jar:1.4.20:provided" -> "io.github.x-stream:mxparser:jar:1.2.2:provided" ; + "io.github.x-stream:mxparser:jar:1.2.2:provided" -> "xmlpull:xmlpull:jar:1.1.3.1:provided" ; + "com.atlassian.mail:atlassian-mail:jar:7.0.2:provided" -> "jakarta.mail:jakarta.mail-api:jar:1.6.7:provided" ; + "org.apache.activemq:activemq-broker:jar:5.18.3:provided" -> "org.apache.activemq:activemq-client:jar:5.18.3:provided" ; + "org.apache.activemq:activemq-broker:jar:5.18.3:provided" -> "org.apache.activemq:activemq-openwire-legacy:jar:5.18.3:provided" ; + "org.apache.activemq:activemq-client:jar:5.18.3:provided" -> "jakarta.jms:jakarta.jms-api:jar:2.0.3:provided" ; + "org.apache.activemq:activemq-client:jar:5.18.3:provided" -> "org.fusesource.hawtbuf:hawtbuf:jar:1.11:provided" ; + "org.apache.sshd:sshd-core:jar:2.12.1:provided" -> "org.apache.sshd:sshd-common:jar:2.12.1:provided" ; + "org.apache.sshd:sshd-core:jar:2.12.1:provided" -> "org.slf4j:jcl-over-slf4j:jar:1.7.32:provided" ; + "com.atlassian.botocss:botocss:jar:3.0:provided" -> "org.antlr:antlr-runtime:jar:3.4:provided" ; + "org.antlr:antlr-runtime:jar:3.4:provided" -> "org.antlr:stringtemplate:jar:3.2.1:provided" ; + "com.atlassian.plugins:atlassian-plugins-webresource:jar:7.1.1:provided" -> "com.atlassian.plugins:atlassian-plugins-webresource-api:jar:7.1.1:provided" ; + "com.atlassian.plugins:atlassian-plugins-webresource:jar:7.1.1:provided" -> "com.atlassian.plugins:atlassian-plugins-webresource-spi:jar:7.0.2:provided" ; + "com.atlassian.plugins:atlassian-plugins-webresource:jar:7.1.1:provided" -> "com.atlassian.sourcemap:sourcemap:jar:2.0.0:provided" ; + "com.atlassian.plugins:atlassian-plugins-webresource:jar:7.1.1:provided" -> "org.jgrapht:jgrapht-core:jar:1.4.0:provided" ; + "com.atlassian.plugins:atlassian-plugins-webresource:jar:7.1.1:provided" -> "org.jgrapht:jgrapht-io:jar:1.4.0:provided" ; + "org.jgrapht:jgrapht-core:jar:1.4.0:provided" -> "org.jheaps:jheaps:jar:0.11:provided" ; + "org.jgrapht:jgrapht-io:jar:1.4.0:provided" -> "org.antlr:antlr4-runtime:jar:4.7.2:provided" ; + "com.atlassian.plugins:atlassian-plugins-webresource-common:jar:8.0.15:provided" -> "com.atlassian.plugins:atlassian-plugins-core:jar:8.0.15:provided" ; + "com.atlassian.plugins:atlassian-plugins-core:jar:8.0.15:provided" -> "com.atlassian.plugins:atlassian-plugins-api:jar:8.0.15:provided" ; + "com.atlassian.plugins:atlassian-plugins-core:jar:8.0.15:provided" -> "net.jcip:com.springsource.net.jcip.annotations:jar:1.0.0:provided" ; + "org.codehaus.jackson:jackson-mapper-asl:jar:1.9.14-atlassian-6:provided" -> "org.codehaus.jackson:jackson-core-asl:jar:1.9.14-atlassian-6:provided" ; + "com.atlassian.crowd:embedded-crowd-api:jar:6.0.0:provided" -> "com.atlassian.annotations:atlassian-annotations:jar:5.0.0:provided" ; + "com.atlassian.annotations:atlassian-annotations:jar:5.0.0:provided" -> "org.checkerframework:checker-qual:jar:3.28.0:provided" ; + "com.atlassian.crowd:embedded-crowd-core:jar:6.0.0:provided" -> "com.atlassian.crowd:crowd-events:jar:6.0.0:provided" ; + "com.atlassian.crowd:embedded-crowd-core:jar:6.0.0:provided" -> "com.atlassian.crowd:crowd-ldap:jar:6.0.0:provided" ; + "com.atlassian.crowd:embedded-crowd-core:jar:6.0.0:provided" -> "com.atlassian.crowd:crowd-azure-ad:jar:6.0.0:provided" ; + "com.atlassian.crowd:embedded-crowd-core:jar:6.0.0:provided" -> "com.atlassian.crowd:crowd-remote:jar:6.0.0:provided" ; + "com.atlassian.crowd:embedded-crowd-core:jar:6.0.0:provided" -> "com.atlassian.crowd:crowd-core-tiny:jar:6.0.0:provided" ; + "com.atlassian.crowd:embedded-crowd-core:jar:6.0.0:provided" -> "opensymphony:propertyset:jar:1.3-21Nov03:provided" ; + "com.atlassian.crowd:crowd-ldap:jar:6.0.0:provided" -> "com.atlassian.crowd:crowd-common:jar:6.0.0:provided" ; + "com.atlassian.crowd:crowd-ldap:jar:6.0.0:provided" -> "com.atlassian.crowd:crowd-synchronisation:jar:6.0.0:provided" ; + "com.atlassian.crowd:crowd-ldap:jar:6.0.0:provided" -> "org.springframework.ldap:spring-ldap-core:jar:2.4.1:provided" ; + "com.atlassian.crowd:crowd-ldap:jar:6.0.0:provided" -> "com.atlassian.scheduler:atlassian-scheduler-caesium:jar:5.0.1:provided" ; + "com.atlassian.crowd:crowd-ldap:jar:6.0.0:provided" -> "com.github.ben-manes.caffeine:caffeine:jar:2.9.3:provided" ; + "com.atlassian.crowd:crowd-azure-ad:jar:6.0.0:provided" -> "com.microsoft.azure:msal4j:jar:1.15.0:provided" ; + "com.atlassian.crowd:crowd-azure-ad:jar:6.0.0:provided" -> "net.minidev:json-smart:jar:2.4.11:provided" ; + "com.atlassian.crowd:crowd-azure-ad:jar:6.0.0:provided" -> "org.springframework:spring-web:jar:5.3.36:provided" ; + "com.microsoft.azure:msal4j:jar:1.15.0:provided" -> "com.nimbusds:oauth2-oidc-sdk:jar:11.9.1:provided" ; + "com.nimbusds:oauth2-oidc-sdk:jar:11.9.1:provided" -> "com.nimbusds:content-type:jar:2.3:provided" ; + "com.nimbusds:oauth2-oidc-sdk:jar:11.9.1:provided" -> "com.nimbusds:lang-tag:jar:1.7:provided" ; + "com.nimbusds:oauth2-oidc-sdk:jar:11.9.1:provided" -> "com.nimbusds:nimbus-jose-jwt:jar:9.37.3:provided" ; + "net.minidev:json-smart:jar:2.4.11:provided" -> "net.minidev:accessors-smart:jar:2.4.11:provided" ; + "com.atlassian.crowd:crowd-remote:jar:6.0.0:provided" -> "com.atlassian.crowd:crowd-integration-client-rest:jar:6.0.0:provided" ; + "com.atlassian.crowd:crowd-integration-client-rest:jar:6.0.0:provided" -> "org.apache.httpcomponents:httpclient-cache:jar:4.5.14:provided" ; + "io.grpc:grpc-netty-shaded:jar:1.58.0:provided" -> "com.google.errorprone:error_prone_annotations:jar:2.20.0:provided" ; + "io.grpc:grpc-netty-shaded:jar:1.58.0:provided" -> "io.perfmark:perfmark-api:jar:0.26.0:provided" ; + "io.grpc:grpc-netty-shaded:jar:1.58.0:provided" -> "io.grpc:grpc-core:jar:1.58.0:provided" ; + "io.grpc:grpc-core:jar:1.58.0:provided" -> "io.grpc:grpc-context:jar:1.58.0:provided" ; + "io.grpc:grpc-core:jar:1.58.0:provided" -> "io.grpc:grpc-util:jar:1.58.0:provided" ; + "io.grpc:grpc-protobuf:jar:1.58.0:provided" -> "io.grpc:grpc-api:jar:1.58.0:provided" ; + "io.grpc:grpc-protobuf:jar:1.58.0:provided" -> "com.google.api.grpc:proto-google-common-protos:jar:2.22.0:provided" ; + "io.grpc:grpc-protobuf:jar:1.58.0:provided" -> "io.grpc:grpc-protobuf-lite:jar:1.58.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-persistence:jar:10.0.0:provided" -> "com.atlassian.user:atlassian-user-hibernate3:jar:5.5.10:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-persistence:jar:10.0.0:provided" -> "org.springframework:spring-orm:jar:5.3.38-atlassian-2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-persistence:jar:10.0.0:provided" -> "com.atlassian.crowd:crowd-persistence-hibernate5:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-persistence:jar:10.0.0:provided" -> "com.atlassian.secrets:atlassian-secrets-api:jar:3.2.5:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-persistence:jar:10.0.0:provided" -> "com.atlassian.secrets:atlassian-secrets-store:jar:3.2.5:provided" ; + "com.atlassian.user:atlassian-user-hibernate3:jar:5.5.10:provided" -> "com.atlassian.security:atlassian-password-encoder:jar:3.0:provided" ; + "com.atlassian.user:atlassian-user-hibernate3:jar:5.5.10:provided" -> "com.opensymphony.propertyset:core:jar:1.6.0-atlassian-8:provided" ; + "com.atlassian.user:atlassian-user-hibernate3:jar:5.5.10:provided" -> "com.opensymphony.propertyset.providers:hibernate5:jar:1.6.0-atlassian-8:provided" ; + "com.atlassian.crowd:crowd-persistence-hibernate5:jar:6.0.0:provided" -> "com.atlassian.crowd:crowd-persistence:jar:6.0.0:provided" ; + "com.atlassian.crowd:crowd-persistence-hibernate5:jar:6.0.0:provided" -> "org.liquibase:liquibase-core:jar:4.16.1:provided" ; + "com.atlassian.crowd:crowd-persistence-hibernate5:jar:6.0.0:provided" -> "com.atlassian.crowd:crowd-server-api:jar:6.0.0:provided" ; + "com.atlassian.crowd:crowd-persistence-hibernate5:jar:6.0.0:provided" -> "com.atlassian.crowd:crowd-hibernate5-dialects:jar:6.0.0:provided" ; + "com.atlassian.crowd:crowd-persistence-hibernate5:jar:6.0.0:provided" -> "com.atlassian.db.config:password-cipher-api:jar:1.4.1:provided" ; + "com.atlassian.crowd:crowd-persistence-hibernate5:jar:6.0.0:provided" -> "com.google.code.findbugs:findbugs-annotations:jar:3.0.1:provided" ; + "com.atlassian.crowd:crowd-persistence-hibernate5:jar:6.0.0:provided" -> "org.hibernate:hibernate-c3p0:jar:5.4.33.Final:provided" ; + "com.atlassian.crowd:crowd-persistence-hibernate5:jar:6.0.0:provided" -> "com.atlassian.hibernate:atlassian-hibernate5.2-extras:jar:6.1.1:provided" ; + "org.liquibase:liquibase-core:jar:4.16.1:provided" -> "com.opencsv:opencsv:jar:5.6:provided" ; + "com.atlassian.crowd:crowd-server-api:jar:6.0.0:provided" -> "jakarta.servlet:jakarta.servlet-api:jar:4.0.4:provided" ; + "com.atlassian.crowd:crowd-server-api:jar:6.0.0:provided" -> "org.springframework.security:spring-security-core:jar:5.8.12:provided" ; + "org.springframework.security:spring-security-core:jar:5.8.12:provided" -> "org.springframework.security:spring-security-crypto:jar:5.8.12:provided" ; + "org.hibernate:hibernate-c3p0:jar:5.4.33.Final:provided" -> "com.mchange:c3p0:jar:0.9.5.5:provided" ; + "com.atlassian.secrets:atlassian-secrets-store:jar:3.2.5:provided" -> "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" ; + "com.atlassian.secrets:atlassian-secrets-store:jar:3.2.5:provided" -> "org.springframework.vault:spring-vault-core:jar:2.3.4:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:aws-json-protocol:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:protocol-core:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:http-auth-aws:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:sdk-core:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:auth:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:http-auth-spi:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:http-auth:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:identity-spi:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:http-client-spi:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:regions:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:annotations:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:utils:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:aws-core:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:metrics-spi:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:json-utils:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:endpoints-spi:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:apache-client:jar:2.25.28:provided" ; + "software.amazon.awssdk:secretsmanager:jar:2.25.28:provided" -> "software.amazon.awssdk:netty-nio-client:jar:2.25.28:provided" ; + "software.amazon.awssdk:aws-json-protocol:jar:2.25.28:provided" -> "software.amazon.awssdk:third-party-jackson-core:jar:2.25.28:provided" ; + "software.amazon.awssdk:http-auth-aws:jar:2.25.28:provided" -> "software.amazon.awssdk:checksums-spi:jar:2.25.28:provided" ; + "software.amazon.awssdk:http-auth-aws:jar:2.25.28:provided" -> "software.amazon.awssdk:checksums:jar:2.25.28:provided" ; + "software.amazon.awssdk:sdk-core:jar:2.25.28:provided" -> "software.amazon.awssdk:profiles:jar:2.25.28:provided" ; + "software.amazon.awssdk:sdk-core:jar:2.25.28:provided" -> "org.reactivestreams:reactive-streams:jar:1.0.4:provided" ; + "software.amazon.awssdk:auth:jar:2.25.28:provided" -> "software.amazon.eventstream:eventstream:jar:1.0.1:provided" ; + "software.amazon.awssdk:netty-nio-client:jar:2.25.28:provided" -> "io.netty:netty-codec-http2:jar:4.1.108.Final:provided" ; + "software.amazon.awssdk:netty-nio-client:jar:2.25.28:provided" -> "io.netty:netty-transport-classes-epoll:jar:4.1.108.Final:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-migration:jar:10.0.0:provided" -> "com.atlassian.activeobjects:activeobjects-spi:jar:6.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-migration:jar:10.0.0:provided" -> "com.fasterxml.woodstox:woodstox-core:jar:6.6.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-migration:jar:10.0.0:provided" -> "com.fasterxml.staxmate:staxmate:jar:2.4.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-charts:jar:10.0.0:provided" -> "jfree:jfreechart:jar:1.0.9:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-charts:jar:10.0.0:provided" -> "jfree:jcommon:jar:1.0.12:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-license:jar:10.0.0:provided" -> "com.atlassian.extras:atlassian-extras-core:jar:3.4.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-license:jar:10.0.0:provided" -> "com.atlassian.extras:atlassian-extras-common:jar:3.4.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-license:jar:10.0.0:provided" -> "com.atlassian.extras:atlassian-extras-legacy:jar:3.4.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-license:jar:10.0.0:provided" -> "io.atlassian.fugue:fugue:jar:6.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-license:jar:10.0.0:provided" -> "xpp3:xpp3_min:jar:1.1.4c:provided" ; + "com.atlassian.extras:atlassian-extras-core:jar:3.4.6:provided" -> "com.atlassian.extras:atlassian-extras-decoder-v2:jar:3.4.6:provided" ; + "com.atlassian.extras:atlassian-extras-decoder-v2:jar:3.4.6:provided" -> "com.atlassian.extras:atlassian-extras-key-manager:jar:3.4.6:provided" ; + "com.atlassian.extras:atlassian-extras-legacy:jar:3.4.6:provided" -> "com.atlassian.extras:atlassian-extras-decoder-api:jar:3.4.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-agent-classserver:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-agent-remote:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-agent-classserver:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-agent-bootstrap:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-agent-classserver:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-agent-elastic:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-agent-remote:jar:10.0.0:provided" -> "org.apache.activemq:activemq-pool:jar:5.18.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-agent-remote:jar:10.0.0:provided" -> "com.esotericsoftware:kryo:jar:3.0.3:provided" ; + "org.apache.activemq:activemq-pool:jar:5.18.3:provided" -> "org.apache.activemq:activemq-jms-pool:jar:5.18.3:provided" ; + "org.apache.activemq:activemq-pool:jar:5.18.3:provided" -> "org.apache.geronimo.specs:geronimo-jta_1.1_spec:jar:1.1.1:provided" ; + "com.esotericsoftware:kryo:jar:3.0.3:provided" -> "com.esotericsoftware:reflectasm:jar:1.10.1:provided" ; + "com.esotericsoftware:kryo:jar:3.0.3:provided" -> "com.esotericsoftware:minlog:jar:1.3.0:provided" ; + "com.esotericsoftware:kryo:jar:3.0.3:provided" -> "org.objenesis:objenesis:jar:2.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-agent-elastic:jar:10.0.0:provided" -> "com.atlassian.aws:atlassian-aws-bootstrap:jar:1.0.201:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-agent-elastic:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-agent-bootstrap-shared:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-agent-local:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-agent-core:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-agent-core:jar:10.0.0:provided" -> "com.atlassian.bamboo.plugins:atlassian-bamboo-plugin-ssh:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-agent-core:jar:10.0.0:provided" -> "org.apache.activemq:activemq-ra:jar:5.18.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-agent-core:jar:10.0.0:provided" -> "org.apache.activemq:activemq-http:jar:5.18.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-agent-core:jar:10.0.0:provided" -> "org.apache.geronimo.components:geronimo-transaction:jar:3.1.5:provided" ; + "org.apache.activemq:activemq-ra:jar:5.18.3:provided" -> "org.apache.activemq:activemq-kahadb-store:jar:5.18.3:provided" ; + "org.apache.activemq:activemq-ra:jar:5.18.3:provided" -> "org.apache.geronimo.specs:geronimo-j2ee-connector_1.5_spec:jar:2.0.0:provided" ; + "org.apache.activemq:activemq-kahadb-store:jar:5.18.3:provided" -> "org.apache.activemq.protobuf:activemq-protobuf:jar:1.1:provided" ; + "org.apache.activemq:activemq-http:jar:5.18.3:provided" -> "org.apache.activemq:activemq-spring:jar:5.18.3:provided" ; + "org.apache.geronimo.components:geronimo-transaction:jar:3.1.5:provided" -> "org.apache.geronimo.specs:geronimo-j2ee-connector_1.6_spec:jar:1.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-agent-elastic-server:jar:10.0.0:provided" -> "com.atlassian.aws:atlassian-aws:jar:1.0.201:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-agent-elastic-server:jar:10.0.0:provided" -> "com.atlassian.bamboo:atlassian-bamboo-agent-elastic-shared:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-agent-elastic-server:jar:10.0.0:provided" -> "com.atlassian.tunnel:atlassian-tunnel:jar:1.8.8:provided" ; + "com.atlassian.aws:atlassian-aws:jar:1.0.201:provided" -> "com.amazonaws:aws-java-sdk-core:jar:1.12.696:provided" ; + "com.atlassian.aws:atlassian-aws:jar:1.0.201:provided" -> "com.amazonaws:aws-java-sdk-ec2:jar:1.12.696:provided" ; + "com.atlassian.aws:atlassian-aws:jar:1.0.201:provided" -> "com.amazonaws:aws-java-sdk-s3:jar:1.12.696:provided" ; + "com.atlassian.aws:atlassian-aws:jar:1.0.201:provided" -> "com.amazonaws:aws-java-sdk-codedeploy:jar:1.12.696:provided" ; + "com.atlassian.aws:atlassian-aws:jar:1.0.201:provided" -> "com.amazonaws:aws-java-sdk-iam:jar:1.12.696:provided" ; + "com.amazonaws:aws-java-sdk-ec2:jar:1.12.696:provided" -> "com.amazonaws:jmespath-java:jar:1.12.696:provided" ; + "com.amazonaws:aws-java-sdk-s3:jar:1.12.696:provided" -> "com.amazonaws:aws-java-sdk-kms:jar:1.12.696:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-maven-embedder:jar:10.0.0:provided" -> "org.apache.maven:maven-core:jar:3.9.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-maven-embedder:jar:10.0.0:provided" -> "org.apache.maven:maven-compat:jar:3.9.6:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-maven-embedder:jar:10.0.0:provided" -> "com.google.inject:guice:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-maven-embedder:jar:10.0.0:provided" -> "jakarta.inject:jakarta.inject-api:jar:2.0.1:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-maven-embedder:jar:10.0.0:provided" -> "org.apache.maven.wagon:wagon-provider-api:jar:3.5.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-maven-embedder:jar:10.0.0:provided" -> "org.apache.maven.wagon:wagon-file:jar:3.5.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-maven-embedder:jar:10.0.0:provided" -> "org.apache.maven.wagon:wagon-http:jar:3.5.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-maven-embedder:jar:10.0.0:provided" -> "org.apache.maven.resolver:maven-resolver-connector-basic:jar:1.9.18:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-maven-embedder:jar:10.0.0:provided" -> "org.apache.maven.resolver:maven-resolver-transport-wagon:jar:1.9.18:provided" ; + "org.apache.maven:maven-core:jar:3.9.6:provided" -> "org.apache.maven:maven-repository-metadata:jar:3.9.6:provided" ; + "org.apache.maven:maven-core:jar:3.9.6:provided" -> "org.apache.maven:maven-artifact:jar:3.9.6:provided" ; + "org.apache.maven:maven-core:jar:3.9.6:provided" -> "org.apache.maven:maven-resolver-provider:jar:3.9.6:provided" ; + "org.apache.maven:maven-core:jar:3.9.6:provided" -> "org.apache.maven.resolver:maven-resolver-impl:jar:1.9.18:provided" ; + "org.apache.maven:maven-core:jar:3.9.6:provided" -> "org.apache.maven.resolver:maven-resolver-spi:jar:1.9.18:provided" ; + "org.apache.maven:maven-core:jar:3.9.6:provided" -> "org.eclipse.sisu:org.eclipse.sisu.inject:jar:0.9.0.M2:provided" ; + "org.apache.maven:maven-core:jar:3.9.6:provided" -> "org.codehaus.plexus:plexus-component-annotations:jar:2.1.0:provided" ; + "org.apache.maven.resolver:maven-resolver-impl:jar:1.9.18:provided" -> "org.apache.maven.resolver:maven-resolver-named-locks:jar:1.9.18:provided" ; + "com.google.inject:guice:jar:6.0.0:provided" -> "aopalliance:aopalliance:jar:1.0:provided" ; + "org.apache.maven.wagon:wagon-http:jar:3.5.3:provided" -> "org.apache.maven.wagon:wagon-http-shared:jar:3.5.3:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-import-export:jar:10.0.0:provided" -> "org.yaml:snakeyaml:jar:2.2:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-import-export:jar:10.0.0:provided" -> "com.atlassian.bamboo:bamboo-specs-api:jar:10.0.0:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-import-export:jar:10.0.0:provided" -> "com.spotify:docker-client:jar:shaded:8.16.1-atlassian-15:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-import-export:jar:10.0.0:provided" -> "com.github.jnr:jffi:jar:1.3.11:provided" ; + "com.atlassian.bamboo:atlassian-bamboo-import-export:jar:10.0.0:provided" -> "com.github.jnr:jnr-ffi:jar:2.2.14:provided" ; + "com.github.jnr:jnr-ffi:jar:2.2.14:provided" -> "com.github.jnr:jffi:jar:native:1.3.11:provided" ; + "com.github.jnr:jnr-ffi:jar:2.2.14:provided" -> "org.ow2.asm:asm-commons:jar:9.2:provided" ; + "com.github.jnr:jnr-ffi:jar:2.2.14:provided" -> "org.ow2.asm:asm-analysis:jar:9.2:provided" ; + "com.github.jnr:jnr-ffi:jar:2.2.14:provided" -> "org.ow2.asm:asm-tree:jar:9.2:provided" ; + "com.github.jnr:jnr-ffi:jar:2.2.14:provided" -> "org.ow2.asm:asm-util:jar:9.2:provided" ; + "com.github.jnr:jnr-ffi:jar:2.2.14:provided" -> "com.github.jnr:jnr-a64asm:jar:1.0.0:provided" ; + "com.github.jnr:jnr-ffi:jar:2.2.14:provided" -> "com.github.jnr:jnr-x86asm:jar:1.0.2:provided" ; + "com.atlassian.bamboo:atlassian-embedded-crowd-atlassian-user:jar:10.0.0:provided" -> "com.atlassian.bucket:atlassian-bucket:jar:5.2.6:provided" ; + "com.atlassian.bamboo:atlassian-embedded-crowd-atlassian-user:jar:10.0.0:provided" -> "com.atlassian.crowd:crowd-integration-seraph:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-embedded-crowd-atlassian-user:jar:10.0.0:provided" -> "com.atlassian.crowd:crowd-api:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-embedded-crowd-atlassian-user:jar:10.0.0:provided" -> "com.atlassian.crowd:crowd-core:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-embedded-crowd-atlassian-user:jar:10.0.0:provided" -> "com.atlassian.crowd:crowd-integration-api:jar:6.0.0:provided" ; + "com.atlassian.bamboo:atlassian-embedded-crowd-atlassian-user:jar:10.0.0:provided" -> "com.atlassian.user:atlassian-user-api:jar:5.5.10:provided" ; + "com.atlassian.bamboo:atlassian-embedded-crowd-atlassian-user:jar:10.0.0:provided" -> "com.atlassian.user:atlassian-user-core:jar:5.5.10:provided" ; + "com.atlassian.crowd:crowd-integration-seraph:jar:6.0.0:provided" -> "com.atlassian.crowd:crowd-integration-client-common:jar:6.0.0:provided" ; + "com.atlassian.crowd:crowd-core:jar:6.0.0:provided" -> "com.atlassian.crowd:crowd-password-encoders:jar:6.0.0:provided" ; + "com.atlassian.crowd:crowd-core:jar:6.0.0:provided" -> "com.atlassian.crowd:crowd-server-common:jar:6.0.0:provided" ; + "com.atlassian.crowd:crowd-core:jar:6.0.0:provided" -> "com.atlassian.sal:sal-core:jar:6.0.1:provided" ; + "com.atlassian.crowd:crowd-core:jar:6.0.0:provided" -> "com.atlassian.plugins:panopticon-api:jar:2.0.1:provided" ; + "com.atlassian.crowd:crowd-core:jar:6.0.0:provided" -> "com.atlassian.ccev:cloud-compatible-email-validation:jar:1.0.2:provided" ; + "com.atlassian.crowd:crowd-core:jar:6.0.0:provided" -> "com.sun.mail:jakarta.mail:jar:1.6.7:provided" ; + "com.atlassian.user:atlassian-user-api:jar:5.5.10:provided" -> "com.opensymphony.propertyset:api:jar:1.6.0-atlassian-8:provided" ; + "com.atlassian:webwork-compat:jar:1.33:provided" -> "javax.servlet:javax.servlet-api:jar:3.0.1:provided" ; + "com.atlassian.beehive:beehive-single-node:jar:6.0.0:provided" -> "com.atlassian.beehive:beehive-core:jar:6.0.0:provided" ; + "com.atlassian.http:atlassian-http:jar:4.1.0:provided" -> "org.apache.tika:tika-core:jar:2.9.1:provided" ; + "com.atlassian.plugins:atlassian-plugins-schema:jar:8.0.15:provided" -> "com.atlassian.plugins:atlassian-plugins-osgi:jar:8.0.15:provided" ; + "com.atlassian.plugins:atlassian-plugins-osgi:jar:8.0.15:provided" -> "com.atlassian.plugins:atlassian-plugins-osgi-events:jar:8.0.15:provided" ; + "com.atlassian.plugins:atlassian-plugins-osgi:jar:8.0.15:provided" -> "io.github.classgraph:classgraph:jar:4.8.143:provided" ; + "com.atlassian.plugins:atlassian-plugins-osgi:jar:8.0.15:provided" -> "org.twdata.pkgscanner:package-scanner:jar:0.9.5:provided" ; + "com.atlassian.xwork:atlassian-xwork-12:jar:2.5.32-struts-4:provided" -> "com.atlassian.xwork:atlassian-xwork-core:jar:2.5.32-struts-4:provided" ; + "com.atlassian.oauth2:oauth2-provider-api:jar:4.0.1:provided" -> "com.atlassian.event:atlassian-event:jar:6.0.0-m02:provided" ; + "org.hibernate:hibernate-core:jar:5.6.15.Final-atlassian-2:provided" -> "org.jboss.logging:jboss-logging:jar:3.4.3.Final:provided" ; + "org.hibernate:hibernate-core:jar:5.6.15.Final-atlassian-2:provided" -> "javax.persistence:javax.persistence-api:jar:2.2:provided" ; + "org.hibernate:hibernate-core:jar:5.6.15.Final-atlassian-2:provided" -> "antlr:antlr:jar:2.7.7:provided" ; + "org.hibernate:hibernate-core:jar:5.6.15.Final-atlassian-2:provided" -> "org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.1.1.Final:provided" ; + "org.hibernate:hibernate-core:jar:5.6.15.Final-atlassian-2:provided" -> "org.jboss:jandex:jar:2.4.2.Final:provided" ; + "org.hibernate:hibernate-core:jar:5.6.15.Final-atlassian-2:provided" -> "com.fasterxml:classmate:jar:1.5.1:provided" ; + "org.hibernate:hibernate-core:jar:5.6.15.Final-atlassian-2:provided" -> "org.hibernate.common:hibernate-commons-annotations:jar:5.1.2.Final:provided" ; + "org.hibernate:hibernate-ehcache:jar:5.6.15.Final:provided" -> "net.sf.ehcache:ehcache:jar:2.10.6:provided" ; + "org.springframework:spring-context:jar:5.3.37:provided" -> "org.springframework:spring-aop:jar:5.3.37:provided" ; + "org.springframework:spring-context:jar:5.3.37:provided" -> "org.springframework:spring-expression:jar:5.3.37:provided" ; + "org.springframework:spring-core:jar:5.3.38-atlassian-2:provided" -> "org.springframework:spring-jcl:jar:5.3.38-atlassian-2:provided" ; + "com.rometools:rome:jar:2.1.0:provided" -> "com.rometools:rome-utils:jar:2.1.0:provided" ; + "de.schlichtherle.truezip:truezip-file:jar:7.7.10:provided" -> "de.schlichtherle.truezip:truezip-driver-file:jar:7.7.10:provided" ; + "de.schlichtherle.truezip:truezip-file:jar:7.7.10:provided" -> "de.schlichtherle.truezip:truezip-kernel:jar:7.7.10:provided" ; + "de.schlichtherle.truezip:truezip-driver-zip:jar:7.7.10:provided" -> "de.schlichtherle.truezip:truezip-swing:jar:7.7.10:provided" ; + "de.schlichtherle.truezip:truezip-driver-zip:jar:7.7.10:provided" -> "org.apache.commons:commons-compress:jar:1.9:provided" ; + "org.apache.struts:struts2-core:jar:2.5.33-atlassian-1:provided" -> "ognl:ognl:jar:3.1.29:provided" ; + "org.apache.struts:struts2-core:jar:2.5.33-atlassian-1:provided" -> "commons-fileupload:commons-fileupload:jar:1.4:provided" ; + "org.freemarker:freemarker:jar:2.3.31-atlassian-2:provided" -> "logkit:logkit:jar:1.2:provided" ; + "org.freemarker:freemarker:jar:2.3.31-atlassian-2:provided" -> "com.google.code.findbugs:annotations:jar:3.0.0:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "org.apache.maven:maven-settings:jar:3.9.6:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "org.apache.maven:maven-settings-builder:jar:3.9.6:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "org.apache.maven:maven-plugin-api:jar:3.9.6:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "org.apache.maven:maven-model-builder:jar:3.9.6:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "org.apache.maven:maven-builder-support:jar:3.9.6:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "org.apache.maven.resolver:maven-resolver-api:jar:1.9.18:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "org.apache.maven.resolver:maven-resolver-util:jar:1.9.18:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "org.apache.maven.shared:maven-shared-utils:jar:3.3.4:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "com.google.guava:guava:jar:32.0.1-jre:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "com.google.guava:failureaccess:jar:1.0.1:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "org.codehaus.plexus:plexus-utils:jar:3.5.1:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "org.codehaus.plexus:plexus-classworlds:jar:2.7.0:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "org.eclipse.sisu:org.eclipse.sisu.plexus:jar:0.9.0.M2:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "org.codehaus.plexus:plexus-sec-dispatcher:jar:2.0:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "org.codehaus.plexus:plexus-cipher:jar:2.0:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "org.codehaus.plexus:plexus-interpolation:jar:1.26:provided" ; + "org.apache.maven:maven-embedder:jar:3.9.6:provided" -> "commons-cli:commons-cli:jar:1.5.0:provided" ; + "org.apache.httpcomponents:httpmime:jar:4.5.14:provided" -> "org.apache.httpcomponents:httpclient:jar:4.5.14:provided" ; + "org.apache.httpcomponents:httpclient:jar:4.5.14:provided" -> "org.apache.httpcomponents:httpcore:jar:4.4.16:provided" ; + "org.reflections:reflections:jar:0.9.11:provided" -> "org.javassist:javassist:jar:3.21.0-GA:provided" ; + "org.apache.felix:org.apache.felix.framework:jar:7.0.5:provided" -> "org.codehaus.mojo:animal-sniffer-annotations:jar:1.9:provided" ; + "org.glassfish.jersey.core:jersey-server:jar:2.42:provided" -> "jakarta.annotation:jakarta.annotation-api:jar:1.3.5:provided" ; + "org.glassfish.jersey.core:jersey-server:jar:2.42:provided" -> "jakarta.validation:jakarta.validation-api:jar:2.0.2:provided" ; + "org.glassfish.jersey.core:jersey-common:jar:2.42:provided" -> "org.glassfish.hk2:osgi-resource-locator:jar:1.0.3:provided" ; + "org.glassfish.jersey.containers:jersey-container-servlet:jar:2.42:provided" -> "org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.42:provided" ; + "org.glassfish.jersey.inject:jersey-hk2:jar:2.42:provided" -> "org.glassfish.hk2:hk2-locator:jar:2.6.1:provided" ; + "org.glassfish.hk2:hk2-locator:jar:2.6.1:provided" -> "org.glassfish.hk2.external:aopalliance-repackaged:jar:2.6.1:provided" ; + "org.glassfish.hk2:hk2-locator:jar:2.6.1:provided" -> "org.glassfish.hk2:hk2-api:jar:2.6.1:provided" ; + "org.glassfish.hk2:hk2-locator:jar:2.6.1:provided" -> "org.glassfish.hk2:hk2-utils:jar:2.6.1:provided" ; + "org.glassfish.jersey.media:jersey-media-json-jackson:jar:2.42:provided" -> "org.glassfish.jersey.ext:jersey-entity-filtering:jar:2.42:provided" ; + "org.glassfish.jersey.core:jersey-client:jar:2.42:provided" -> "org.glassfish.hk2.external:jakarta.inject:jar:2.6.1:provided" ; + "com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.16.1:provided" -> "jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3:provided" ; + "com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.16.1:provided" -> "jakarta.activation:jakarta.activation-api:jar:1.2.2:provided" ; + "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:jar:2.17.2:provided" -> "org.codehaus.woodstox:stax2-api:jar:4.2.2:provided" ; + "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.16.1:provided" -> "com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.16.1:provided" ; + "xerces:xercesImpl:jar:2.12.2:provided" -> "xml-apis:xml-apis:jar:1.4.01:provided" ; + "junit:junit:jar:4.10:test" -> "org.hamcrest:hamcrest-core:jar:1.1:provided" ; + "com.atlassian.plugins:atlassian-plugins-osgi-testrunner:jar:2.0.2:test" -> "org.apache.wink:wink-client:jar:1.1.3-incubating:test" ; + "com.atlassian.plugins:atlassian-plugins-osgi-testrunner:jar:2.0.2:test" -> "commons-io:commons-io:jar:1.4:provided" ; + "com.atlassian.plugins:atlassian-plugins-osgi-testrunner:jar:2.0.2:test" -> "com.atlassian.upm:upm-api:jar:2.15:test" ; + "org.apache.wink:wink-client:jar:1.1.3-incubating:test" -> "org.apache.wink:wink-common:jar:1.1.3-incubating:test" ; + "org.apache.wink:wink-client:jar:1.1.3-incubating:test" -> "com.sun.xml.bind:jaxb-impl:jar:2.2.1.1:test" ; + "org.apache.wink:wink-client:jar:1.1.3-incubating:test" -> "javax.activation:activation:jar:1.1:test" ; + "org.apache.wink:wink-common:jar:1.1.3-incubating:test" -> "org.apache.geronimo.specs:geronimo-annotation_1.1_spec:jar:1.0:test" ; + "org.asynchttpclient:async-http-client:jar:3.0.1:compile" -> "io.netty:netty-buffer:jar:4.1.115.Final:compile" ; + "org.asynchttpclient:async-http-client:jar:3.0.1:compile" -> "io.netty:netty-codec-http:jar:4.1.115.Final:compile" ; + "org.asynchttpclient:async-http-client:jar:3.0.1:compile" -> "io.netty:netty-codec:jar:4.1.115.Final:compile" ; + "org.asynchttpclient:async-http-client:jar:3.0.1:compile" -> "io.netty:netty-codec-socks:jar:4.1.115.Final:compile" ; + "org.asynchttpclient:async-http-client:jar:3.0.1:compile" -> "io.netty:netty-handler-proxy:jar:4.1.115.Final:compile" ; + "org.asynchttpclient:async-http-client:jar:3.0.1:compile" -> "io.netty:netty-transport:jar:4.1.115.Final:compile" ; + "org.asynchttpclient:async-http-client:jar:3.0.1:compile" -> "io.netty:netty-resolver-dns:jar:4.1.115.Final:compile" ; + "org.asynchttpclient:async-http-client:jar:3.0.1:compile" -> "com.sun.activation:jakarta.activation:jar:2.0.1:compile" ; + "org.asynchttpclient:async-http-client:jar:3.0.1:compile" -> "org.jetbrains:annotations:jar:26.0.1:compile" ; + "io.netty:netty-resolver-dns:jar:4.1.115.Final:compile" -> "io.netty:netty-codec-dns:jar:4.1.115.Final:compile" ; + "io.netty:netty-handler:jar:4.1.119.Final:compile" -> "io.netty:netty-resolver:jar:4.1.119.Final:compile" ; + "io.netty:netty-handler:jar:4.1.119.Final:compile" -> "io.netty:netty-transport-native-unix-common:jar:4.1.119.Final:compile" ; + } \ No newline at end of file diff --git a/pom.xml b/pom.xml index 83b1e8c..71451d8 100644 --- a/pom.xml +++ b/pom.xml @@ -1,12 +1,11 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 com.leapwork leapwork-integration-for-bamboo - 1.0.0-SNAPSHOT + 5.0.2-SNAPSHOT Leapwork @@ -18,8 +17,8 @@ atlassian-plugin - 6.8.0 - 6.8.0 + 10.0.0 + 10.0.0 8.1.2 2.0.2 1.2.13 @@ -31,6 +30,23 @@ 1.8 + + + atlassian-public + https://maven.atlassian.com/repository/public + + true + + + + + + + atlassian-public + https://maven.atlassian.com/repository/public + + + com.atlassian.bamboo @@ -44,7 +60,7 @@ atlassian-spring-scanner-annotation ${atlassian.spring.scanner.version} provided - + javax.inject @@ -64,7 +80,7 @@ com.atlassian.sal sal-api 3.0.8 - provided + provided @@ -87,10 +103,37 @@ provided - com.ning + org.asynchttpclient async-http-client - 1.4.0 - compile + 3.0.1 + + + org.slf4j + slf4j-api + + + com.ning + async-http-client + + + io.netty + netty-common + + + io.netty + netty-handler + + + + + io.netty + netty-common + 4.1.119.Final + + + io.netty + netty-handler + 4.1.119.Final com.atlassian.bamboo.plugins.testresultparser @@ -103,7 +146,7 @@ - + com.atlassian.maven.plugins bamboo-maven-plugin ${amps.version} @@ -117,20 +160,19 @@ - ${atlassian.plugin.key} + ${atlassian.plugin.key} + + * - - org.springframework.osgi.*;resolution:="optional", - com.ning.http.client.*;resolution:="optional", - com.google.code.gson.*;resolution:="optional", - com.google.protobuf.*;resolution:="optional", - org.glassfish.grizzly.*;resolution:="optional", - org.osgi.service.log;resolution:="optional", - com.sun.org.apache.xerces.internal.dom;resolution:="optional", - com.atlassian.util.concurrent.NotNull;resolution:="optional", - org.eclipse.gemini.blueprint.*;resolution:="optional", - * + + com.google.*;resolution:="optional", + com.sun.org.apache.*;resolution:="optional", + com.atlassian.*;resolution:="optional", + com.leapwork.leapwork_integration_for_bamboo.*;resolution:="optional", + javax.*;resolution:="optional", + org.*;resolution:="optional", + *;resolution="optional" @@ -172,4 +214,4 @@ - + \ No newline at end of file diff --git a/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/LeapworkBambooBridgeTask.java b/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/LeapworkBambooBridgeTask.java index ea903e3..5d50dac 100644 --- a/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/LeapworkBambooBridgeTask.java +++ b/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/LeapworkBambooBridgeTask.java @@ -8,10 +8,11 @@ import com.atlassian.bamboo.task.*; import com.atlassian.plugin.spring.scanner.annotation.component.Scanned; import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport; -import com.ning.http.client.AsyncHttpClient; -import com.sun.javafx.scene.layout.region.Margins; +import org.asynchttpclient.AsyncHttpClient; +import org.asynchttpclient.Dsl; import org.springframework.beans.factory.annotation.Autowired; import java.io.File; +import java.io.IOException; import java.util.*; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; @@ -27,10 +28,9 @@ public class LeapworkBambooBridgeTask implements TaskType { private final TestCollationService testCollationService; @Autowired - public LeapworkBambooBridgeTask(@ComponentImport TestCollationService testCollationService) - { - this.testCollationService = testCollationService; - } + public LeapworkBambooBridgeTask(@ComponentImport TestCollationService testCollationService) { + this.testCollationService = testCollationService; + } @Override public TaskResult execute(final TaskContext taskContext) throws TaskException { @@ -40,6 +40,7 @@ public TaskResult execute(final TaskContext taskContext) throws TaskException { // get fields value final String leapworkHostname = taskContext.getConfigurationMap().get("leapworkHostname"); + final String leapworkHttps = taskContext.getConfigurationMap().get("leapworkHttps"); final String leapworkPort = taskContext.getConfigurationMap().get("leapworkPort"); final String leapworkAccessKey = taskContext.getConfigurationMap().get("leapworkAccessKey"); final String leapworkDelay = taskContext.getConfigurationMap().get("leapworkDelay"); @@ -59,12 +60,14 @@ public TaskResult execute(final TaskContext taskContext) throws TaskException { final LinkedHashMap repeatedNameMapCounter = new LinkedHashMap<>(); ArrayList rawScheduleList = pluginHandler.getRawScheduleList(leapworkSchIds, leapworkSchNames); - printPluginInputs(leapworkHostname, leapworkPort, leapworkDelay, leapworkDoneStatusAs, leapworkReport, + printPluginInputs(leapworkHostname, leapworkHttps, leapworkPort, leapworkDelay, leapworkDoneStatusAs, + leapworkReport, leapworkSchNames, leapworkSchIds, leapworkScheduleVariables, String.valueOf(leapworkWritePassedFlowKeyFrames), buildLogger); - String controllerApiHttpAddress = pluginHandler.getControllerApiHttpAdderess(leapworkHostname, leapworkPort, - buildLogger); + boolean isHttpsEnabled = Utils.defaultBooleanIfNull(leapworkHttps, false); + String controllerApiHttpAddress = pluginHandler.getControllerApiHttpAdderess(leapworkHostname, isHttpsEnabled, + leapworkPort, buildLogger); int timeDelay = pluginHandler.getTimeDelay(leapworkDelay, buildLogger); boolean isAutoReportEnabled = Utils.defaultBooleanIfNull(leapworkAutoReport, false); @@ -75,7 +78,7 @@ public TaskResult execute(final TaskContext taskContext) throws TaskException { String scheduleVariablesRequestPart = pluginHandler.getScheduleVariablesRequestPart(leapworkScheduleVariables, buildLogger); - AsyncHttpClient mainClient = new AsyncHttpClient(); + AsyncHttpClient mainClient = Dsl.asyncHttpClient(); try { // Get schedule titles (or/and ids in case of pipeline) LinkedHashMap schedulesIdTitleHashMap = pluginHandler.getSchedulesIdTitleHashMap(mainClient, @@ -183,7 +186,11 @@ public TaskResult execute(final TaskContext taskContext) throws TaskException { buildLogger.addErrorLogEntry("FAILURE"); result = taskResultBuilder.failedWithError().build(); } finally { - mainClient.close(); + try { + mainClient.close(); + } catch (IOException closeException) { + buildLogger.addErrorLogEntry("Error closing HTTP client: " + closeException.getMessage()); + } return result; } } @@ -195,7 +202,7 @@ private static void CollectScheduleRunResults(String controllerApiHttpAddress, S List runItemsId = new ArrayList<>(); Object waiter = new Object(); // get statuses - AsyncHttpClient client = new AsyncHttpClient(); + AsyncHttpClient client = Dsl.asyncHttpClient(); try { boolean isStillRunning = true; @@ -218,50 +225,50 @@ private static void CollectScheduleRunResults(String controllerApiHttpAddress, S resultRun.addTime(runItem.getElapsedTime()); switch (status) { - case "NoStatus": - case "Initializing": - case "Connecting": - case "Connected": - case "Running": - case "IsProcessing": - iter.remove(); - break; - case "Passed": - - runItem.setCaseName( - pluginHandler.correctRepeatedTitles(repeatedNameMapCounter, runItem.getCaseName())); - resultRun.incPassed(); - resultRun.runItems.add(runItem); - resultRun.incTotal(); - break; - case "Failed": - - runItem.setCaseName( - pluginHandler.correctRepeatedTitles(repeatedNameMapCounter, runItem.getCaseName())); - resultRun.incFailed(); - resultRun.runItems.add(runItem); - resultRun.incTotal(); - break; - case "Error": - case "Inconclusive": - case "Timeout": - case "Cancelled": - runItem.setCaseName( - pluginHandler.correctRepeatedTitles(repeatedNameMapCounter, runItem.getCaseName())); - resultRun.incErrors(); - resultRun.runItems.add(runItem); - resultRun.incTotal(); - break; - case "Done": - runItem.setCaseName( - pluginHandler.correctRepeatedTitles(repeatedNameMapCounter, runItem.getCaseName())); - resultRun.runItems.add(runItem); - if (isDoneStatusAsSuccess) + case "NoStatus": + case "Initializing": + case "Connecting": + case "Connected": + case "Running": + case "IsProcessing": + iter.remove(); + break; + case "Passed": + + runItem.setCaseName( + pluginHandler.correctRepeatedTitles(repeatedNameMapCounter, runItem.getCaseName())); resultRun.incPassed(); - else + resultRun.runItems.add(runItem); + resultRun.incTotal(); + break; + case "Failed": + + runItem.setCaseName( + pluginHandler.correctRepeatedTitles(repeatedNameMapCounter, runItem.getCaseName())); resultRun.incFailed(); - resultRun.incTotal(); - break; + resultRun.runItems.add(runItem); + resultRun.incTotal(); + break; + case "Error": + case "Inconclusive": + case "Timeout": + case "Cancelled": + runItem.setCaseName( + pluginHandler.correctRepeatedTitles(repeatedNameMapCounter, runItem.getCaseName())); + resultRun.incErrors(); + resultRun.runItems.add(runItem); + resultRun.incTotal(); + break; + case "Done": + runItem.setCaseName( + pluginHandler.correctRepeatedTitles(repeatedNameMapCounter, runItem.getCaseName())); + resultRun.runItems.add(runItem); + if (isDoneStatusAsSuccess) + resultRun.incPassed(); + else + resultRun.incFailed(); + resultRun.incTotal(); + break; } @@ -302,11 +309,18 @@ private static void CollectScheduleRunResults(String controllerApiHttpAddress, S resultRun.incErrors(); resultRun.runItems.add(invalidItem); } finally { - client.close(); + if (client != null) { + try { + client.close(); + } catch (IOException e) { + buildLogger.addErrorLogEntry("Error while closing client: " + e.getMessage()); + } + } } } - private void printPluginInputs(String leapworkHostname, String leapworkPort, String leapworkDelay, + private void printPluginInputs(String leapworkHostname, String leapworkHttps, String leapworkPort, + String leapworkDelay, String leapworkDoneStatusAs, String leapworkReport, String leapworkSchNames, String leapworkSchIds, String leapworkScheduleVariables, String leapworkWritePassedFlowKeyFrames, final BuildLogger buildLogger) { String[] Names = leapworkSchNames.split(PluginHandler.scheduleSeparatorRegex); @@ -315,6 +329,7 @@ private void printPluginInputs(String leapworkHostname, String leapworkPort, Str buildLogger.addBuildLogEntry(Messages.INPUT_VALUES_MESSAGE); buildLogger.addBuildLogEntry(Messages.CASE_CONSOLE_LOG_SEPARATOR); buildLogger.addBuildLogEntry(String.format(Messages.INPUT_HOSTNAME_VALUE, leapworkHostname)); + buildLogger.addBuildLogEntry(String.format(Messages.INPUT_HTTPS, leapworkHttps)); buildLogger.addBuildLogEntry(String.format(Messages.INPUT_PORT_VALUE, leapworkPort)); buildLogger.addBuildLogEntry(String.format(Messages.INPUT_REPORT_VALUE, leapworkReport)); buildLogger.addBuildLogEntry(Messages.INPUT_SCHEDULE_NAMES_VALUE); @@ -327,7 +342,5 @@ private void printPluginInputs(String leapworkHostname, String leapworkPort, Str buildLogger.addBuildLogEntry(String.format(Messages.INPUT_DONE_VALUE, leapworkDoneStatusAs)); buildLogger.addBuildLogEntry(String.format(Messages.INPUT_WRITE_PASSED, leapworkWritePassedFlowKeyFrames)); buildLogger.addBuildLogEntry(String.format(Messages.INPUT_VARIABLES, leapworkScheduleVariables)); - } - -} +} \ No newline at end of file diff --git a/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/LeapworkBambooBridgeTaskConfigurator.java b/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/LeapworkBambooBridgeTaskConfigurator.java index d90d898..731056f 100644 --- a/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/LeapworkBambooBridgeTaskConfigurator.java +++ b/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/LeapworkBambooBridgeTaskConfigurator.java @@ -4,9 +4,7 @@ import com.atlassian.bamboo.task.AbstractTaskConfigurator; import com.atlassian.bamboo.task.TaskDefinition; import com.atlassian.bamboo.util.TextProviderUtils; -import com.atlassian.util.concurrent.NotNull; - - +import org.jetbrains.annotations.NotNull; //import com.atlassian.util.concurrent.NotNull; import java.util.ArrayList; import java.util.Map; @@ -20,6 +18,7 @@ public Map generateTaskConfigMap(@NotNull final ActionParameters final Map config = super.generateTaskConfigMap(params, previousTaskDefinition); config.put("leapworkHostname", params.getString("leapworkHostname")); + config.put("leapworkHttps", Boolean.toString(params.getBoolean("leapworkHttps"))); config.put("leapworkPort", params.getString("leapworkPort")); config.put("leapworkAccessKey", params.getString("leapworkAccessKey")); config.put("leapworkDelay", params.getString("leapworkDelay")); @@ -58,6 +57,7 @@ public void populateContextForEdit(@NotNull final Map context, @ Map config = taskDefinition.getConfiguration(); context.put("leapworkHostname", config.get("leapworkHostname")); + context.put("leapworkHttps", Boolean.valueOf(config.get("leapworkHttps"))); context.put("leapworkPort",config.get("leapworkPort")); context.put("leapworkAccessKey", config.get("leapworkAccessKey")); context.put("leapworkDelay", config.get("leapworkDelay")); diff --git a/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/Messages.java b/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/Messages.java index 78b7dfb..e9f91b6 100644 --- a/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/Messages.java +++ b/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/Messages.java @@ -84,6 +84,7 @@ public final class Messages { public static final String INPUT_VALUES_MESSAGE = "LeapWork Plugin input parameters:"; public static final String INPUT_HOSTNAME_VALUE = "LEAPWORK controller hostname: %1$s"; public static final String INPUT_PORT_VALUE = "LEAPWORK controller port: %1$s"; + public static final String INPUT_HTTPS = "Leapwork Https port is enabled: %1$s"; public static final String INPUT_REPORT_VALUE = "JUnit report file name: %1$s"; public static final String INPUT_SCHEDULE_NAMES_VALUE = "Schedule names: "; public static final String INPUT_SCHEDULE_IDS_VALUE = "Schedule ids: "; diff --git a/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/PluginHandler.java b/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/PluginHandler.java index 87c70de..6fe69bc 100644 --- a/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/PluginHandler.java +++ b/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/PluginHandler.java @@ -8,9 +8,9 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; -import com.ning.http.client.AsyncHttpClient; -import com.ning.http.client.Response; - +import org.asynchttpclient.AsyncHttpClient; +import org.asynchttpclient.Response; +import org.asynchttpclient.Dsl; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; @@ -108,23 +108,41 @@ public boolean isDoneStatusAsSuccess(String doneStatusAs) { return doneStatusAs.contentEquals("Success"); } - public String getControllerApiHttpAdderess(String hostname, String rawPort, final BuildLogger buildLogger) { + public String getControllerApiHttpAdderess(String hostname, boolean isHttpsEnabled, String rawPort, + final BuildLogger buildLogger) { StringBuilder stringBuilder = new StringBuilder(); - int port = getPortNumber(rawPort, buildLogger); - stringBuilder.append("http://").append(hostname).append(":").append(port); + int port = getPortNumber(rawPort, isHttpsEnabled, buildLogger); + if (isHttpsEnabled) { + stringBuilder.append("https://").append(hostname).append(":").append(port); + } else { + stringBuilder.append("http://").append(hostname).append(":").append(port); + } + return stringBuilder.toString(); } - private int getPortNumber(String rawPortStr, final BuildLogger buildLogger) { - int defaultPortNumber = 9001; + private int getPortNumber(String rawPortStr, boolean isHttpsEnabled, final BuildLogger buildLogger) { + int defaultPortNumber; + int defaultHttpPortNumber = 9001; + int defaultHttpsPortNumber = 9002; try { if (!rawPortStr.isEmpty() || !"".equals(rawPortStr)) return Integer.parseInt(rawPortStr); else { + if (isHttpsEnabled) { + defaultPortNumber = defaultHttpsPortNumber; + } else { + defaultPortNumber = defaultHttpPortNumber; + } buildLogger.addErrorLogEntry(String.format(Messages.PORT_NUMBER_IS_INVALID, defaultPortNumber)); return defaultPortNumber; } } catch (Exception e) { + if (isHttpsEnabled) { + defaultPortNumber = defaultHttpsPortNumber; + } else { + defaultPortNumber = defaultHttpPortNumber; + } buildLogger.addErrorLogEntry(String.format(Messages.PORT_NUMBER_IS_INVALID, defaultPortNumber)); return defaultPortNumber; } @@ -142,87 +160,91 @@ public LinkedHashMap getSchedulesIdTitleHashMap(AsyncHttpClient cl Response response = client.prepareGet(scheduleListUri).setHeader("AccessKey", accessKey).execute().get(); switch (response.getStatusCode()) { - case 200: - JsonParser parser = new JsonParser(); - JsonArray jsonScheduleList = parser.parse(response.getResponseBody()).getAsJsonArray(); - - for (String rawSchedule : rawScheduleList) { - boolean successfullyMapped = false; - for (JsonElement jsonScheduleElement : jsonScheduleList) { - JsonObject jsonSchedule = jsonScheduleElement.getAsJsonObject(); - - if (jsonSchedule.get("Type").getAsString().contentEquals("TemporaryScheduleInfo")) - continue; - - UUID Id = Utils.defaultUuidIfNull(jsonSchedule.get("Id"), UUID.randomUUID()); - String Title = Utils.defaultStringIfNull(jsonSchedule.get("Title"), "null Title"); - - boolean isEnabled = Utils.defaultBooleanIfNull(jsonSchedule.get("IsEnabled"), false); - - if (Id.toString().contentEquals(rawSchedule)) { - if (!schedulesIdTitleHashMap.containsValue(Title)) { - if (tempRawScheduleList.contains(Id.toString())) { - tempRawScheduleList.remove(Id.toString()); - tempRawScheduleList.remove(Title); - if (isEnabled) { - schedulesIdTitleHashMap.put(Id, Title); - buildLogger.addBuildLogEntry( - String.format(Messages.SCHEDULE_DETECTED, Title, rawSchedule)); - } else { - invalidSchedules.add(new InvalidSchedule(rawSchedule, - String.format(Messages.SCHEDULE_DISABLED, Title, Id))); - buildLogger - .addBuildLogEntry(String.format(Messages.SCHEDULE_DISABLED, Title, Id)); + case 200: + JsonParser parser = new JsonParser(); + JsonArray jsonScheduleList = parser.parse(response.getResponseBody()).getAsJsonArray(); + + for (String rawSchedule : rawScheduleList) { + boolean successfullyMapped = false; + for (JsonElement jsonScheduleElement : jsonScheduleList) { + JsonObject jsonSchedule = jsonScheduleElement.getAsJsonObject(); + + if (jsonSchedule.get("Type").getAsString().contentEquals("TemporaryScheduleInfo")) + continue; + + UUID Id = Utils.defaultUuidIfNull(jsonSchedule.get("Id"), UUID.randomUUID()); + String Title = Utils.defaultStringIfNull(jsonSchedule.get("Title"), "null Title"); + + boolean isEnabled = Utils.defaultBooleanIfNull(jsonSchedule.get("IsEnabled"), false); + + if (Id.toString().contentEquals(rawSchedule)) { + if (!schedulesIdTitleHashMap.containsValue(Title)) { + if (tempRawScheduleList.contains(Id.toString())) { + tempRawScheduleList.remove(Id.toString()); + tempRawScheduleList.remove(Title); + if (isEnabled) { + schedulesIdTitleHashMap.put(Id, Title); + buildLogger.addBuildLogEntry( + String.format(Messages.SCHEDULE_DETECTED, Title, rawSchedule)); + } else { + invalidSchedules.add(new InvalidSchedule(rawSchedule, + String.format(Messages.SCHEDULE_DISABLED, Title, Id))); + buildLogger + .addBuildLogEntry( + String.format(Messages.SCHEDULE_DISABLED, Title, Id)); + } } } - } - successfullyMapped = true; - } + successfullyMapped = true; + } - if (Title.contentEquals(rawSchedule)) { - if (!schedulesIdTitleHashMap.containsKey(Id)) { - if (tempRawScheduleList.contains(Title)) { - tempRawScheduleList.remove(Id.toString()); - tempRawScheduleList.remove(Title); - if (isEnabled) { - schedulesIdTitleHashMap.put(Id, Title); - buildLogger.addBuildLogEntry( - String.format(Messages.SCHEDULE_DETECTED, Title, rawSchedule)); - - } else { - invalidSchedules.add(new InvalidSchedule(rawSchedule, - String.format(Messages.SCHEDULE_DISABLED, Title, Id))); + if (Title.contentEquals(rawSchedule)) { + if (!schedulesIdTitleHashMap.containsKey(Id)) { + if (tempRawScheduleList.contains(Title)) { + tempRawScheduleList.remove(Id.toString()); + tempRawScheduleList.remove(Title); + if (isEnabled) { + schedulesIdTitleHashMap.put(Id, Title); + buildLogger.addBuildLogEntry( + String.format(Messages.SCHEDULE_DETECTED, Title, rawSchedule)); + + } else { + invalidSchedules.add(new InvalidSchedule(rawSchedule, + String.format(Messages.SCHEDULE_DISABLED, Title, Id))); + } } } + + successfullyMapped = true; } - successfullyMapped = true; } + if (!successfullyMapped) + invalidSchedules.add(new InvalidSchedule(rawSchedule, Messages.NO_SUCH_SCHEDULE)); } - - if (!successfullyMapped) - invalidSchedules.add(new InvalidSchedule(rawSchedule, Messages.NO_SUCH_SCHEDULE)); - } - break; - - case 401: - StringBuilder errorMessage401 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage401, Messages.INVALID_ACCESS_KEY); - OnFailedToGetScheduleTitleIdMap(null, errorMessage401.toString(), buildLogger); - - case 500: - StringBuilder errorMessage500 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage500, Messages.CONTROLLER_RESPONDED_WITH_ERRORS); - OnFailedToGetScheduleTitleIdMap(null, errorMessage500.toString(), buildLogger); - - default: - StringBuilder errorMessage = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - OnFailedToGetScheduleTitleIdMap(null, errorMessage.toString(), buildLogger); + break; + + case 401: + StringBuilder errorMessage401 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + appendLine(errorMessage401, Messages.INVALID_ACCESS_KEY); + OnFailedToGetScheduleTitleIdMap(null, errorMessage401.toString(), buildLogger); + + case 500: + StringBuilder errorMessage500 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + appendLine(errorMessage500, Messages.CONTROLLER_RESPONDED_WITH_ERRORS); + OnFailedToGetScheduleTitleIdMap(null, errorMessage500.toString(), buildLogger); + + default: + StringBuilder errorMessage = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + OnFailedToGetScheduleTitleIdMap(null, errorMessage.toString(), buildLogger); } } catch (ConnectException | UnknownHostException e) { @@ -269,61 +291,66 @@ public UUID runSchedule(AsyncHttpClient client, String controllerApiHttpAddress, Response response = client.preparePut(uri).setHeader("AccessKey", accessKey).setBody("").execute().get(); switch (response.getStatusCode()) { - case 200: - String successMessage = String.format(Messages.SCHEDULE_RUN_SUCCESS, scheduleTitle, scheduleId); - buildLogger.addBuildLogEntry(Messages.SCHEDULE_CONSOLE_LOG_SEPARATOR); - buildLogger.addBuildLogEntry(successMessage); - JsonParser parser = new JsonParser(); - JsonObject jsonRunObject = parser.parse(response.getResponseBody()).getAsJsonObject(); - JsonElement jsonRunId = jsonRunObject.get("RunId"); - String runIdStr = Utils.defaultStringIfNull(jsonRunId); - UUID runId = UUID.fromString(runIdStr); - return runId; - - case 400: - StringBuilder errorMessage400 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage400, Messages.INVALID_VARIABLE_KEY_NAME); - return OnScheduleRunFailure(errorMessage400, run, scheduleId, buildLogger); - - case 401: - StringBuilder errorMessage401 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage401, Messages.INVALID_ACCESS_KEY); - return OnScheduleRunFailure(errorMessage401, run, scheduleId, buildLogger); - - case 404: - StringBuilder errorMessage404 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage404, - String.format(Messages.NO_SUCH_SCHEDULE_WAS_FOUND, scheduleTitle, scheduleId)); - return OnScheduleRunFailure(errorMessage404, run, scheduleId, buildLogger); - - case 446: - StringBuilder errorMessage446 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage446, Messages.NO_DISK_SPACE); - return OnScheduleRunFailure(errorMessage446, run, scheduleId, buildLogger); - - case 455: - StringBuilder errorMessage455 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage455, Messages.DATABASE_NOT_RESPONDING); - return OnScheduleRunFailure(errorMessage455, run, scheduleId, buildLogger); - - case 500: - StringBuilder errorMessage500 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage500, Messages.CONTROLLER_RESPONDED_WITH_ERRORS); - return OnScheduleRunFailure(errorMessage500, run, scheduleId, buildLogger); - - default: - StringBuilder errorMessage = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - return OnScheduleRunFailure(errorMessage, run, scheduleId, buildLogger); + case 200: + String successMessage = String.format(Messages.SCHEDULE_RUN_SUCCESS, scheduleTitle, scheduleId); + buildLogger.addBuildLogEntry(Messages.SCHEDULE_CONSOLE_LOG_SEPARATOR); + buildLogger.addBuildLogEntry(successMessage); + JsonParser parser = new JsonParser(); + JsonObject jsonRunObject = parser.parse(response.getResponseBody()).getAsJsonObject(); + JsonElement jsonRunId = jsonRunObject.get("RunId"); + String runIdStr = Utils.defaultStringIfNull(jsonRunId); + UUID runId = UUID.fromString(runIdStr); + return runId; + + case 400: + StringBuilder errorMessage400 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + appendLine(errorMessage400, Messages.INVALID_VARIABLE_KEY_NAME); + return OnScheduleRunFailure(errorMessage400, run, scheduleId, buildLogger); + + case 401: + StringBuilder errorMessage401 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + appendLine(errorMessage401, Messages.INVALID_ACCESS_KEY); + return OnScheduleRunFailure(errorMessage401, run, scheduleId, buildLogger); + + case 404: + StringBuilder errorMessage404 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + appendLine(errorMessage404, + String.format(Messages.NO_SUCH_SCHEDULE_WAS_FOUND, scheduleTitle, scheduleId)); + return OnScheduleRunFailure(errorMessage404, run, scheduleId, buildLogger); + + case 446: + StringBuilder errorMessage446 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + appendLine(errorMessage446, Messages.NO_DISK_SPACE); + return OnScheduleRunFailure(errorMessage446, run, scheduleId, buildLogger); + + case 455: + StringBuilder errorMessage455 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + appendLine(errorMessage455, Messages.DATABASE_NOT_RESPONDING); + return OnScheduleRunFailure(errorMessage455, run, scheduleId, buildLogger); + + case 500: + StringBuilder errorMessage500 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + appendLine(errorMessage500, Messages.CONTROLLER_RESPONDED_WITH_ERRORS); + return OnScheduleRunFailure(errorMessage500, run, scheduleId, buildLogger); + + default: + StringBuilder errorMessage = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + return OnScheduleRunFailure(errorMessage, run, scheduleId, buildLogger); } - } catch (ConnectException | UnknownHostException e) { - OnScheduleRunConnectionFailure(e, buildLogger); } catch (ExecutionException e) { if (e.getCause() instanceof ConnectException || e.getCause() instanceof UnknownHostException) { OnScheduleRunConnectionFailure(e, buildLogger); @@ -331,7 +358,6 @@ public UUID runSchedule(AsyncHttpClient client, String controllerApiHttpAddress, throw e; } return null; - } private static UUID OnScheduleRunFailure(StringBuilder errorMessage, LeapworkRun failedRun, UUID scheduleId, @@ -355,66 +381,85 @@ public boolean stopRun(String controllerApiHttpAddress, UUID runId, String sched buildLogger.addErrorLogEntry(String.format(Messages.STOPPING_RUN, scheduleTitle, runId)); String uri = String.format(Messages.STOP_RUN_URI, controllerApiHttpAddress, runId.toString()); - AsyncHttpClient client = new AsyncHttpClient(); + AsyncHttpClient client = Dsl.asyncHttpClient(); try { Response response = client.preparePut(uri).setBody("").setHeader("AccessKey", accessKey).execute().get(); client.close(); switch (response.getStatusCode()) { - case 200: - JsonParser parser = new JsonParser(); - JsonObject jsonStopRunObject = parser.parse(response.getResponseBody()).getAsJsonObject(); - JsonElement jsonStopSuccessfull = jsonStopRunObject.get("OperationCompleted"); - isSuccessfullyStopped = Utils.defaultBooleanIfNull(jsonStopSuccessfull, false); - if (isSuccessfullyStopped) + case 200: + JsonParser parser = new JsonParser(); + JsonObject jsonStopRunObject = parser.parse(response.getResponseBody()).getAsJsonObject(); + JsonElement jsonStopSuccessfull = jsonStopRunObject.get("OperationCompleted"); + isSuccessfullyStopped = Utils.defaultBooleanIfNull(jsonStopSuccessfull, false); + if (isSuccessfullyStopped) + buildLogger.addErrorLogEntry( + String.format(Messages.STOP_RUN_SUCCESS, scheduleTitle, runId.toString())); + else + buildLogger + .addErrorLogEntry( + String.format(Messages.STOP_RUN_FAIL, scheduleTitle, runId.toString())); + break; + + case 401: buildLogger.addErrorLogEntry( - String.format(Messages.STOP_RUN_SUCCESS, scheduleTitle, runId.toString())); - else + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + buildLogger.addErrorLogEntry(Messages.INVALID_ACCESS_KEY); buildLogger .addErrorLogEntry(String.format(Messages.STOP_RUN_FAIL, scheduleTitle, runId.toString())); - break; - case 401: - buildLogger.addErrorLogEntry( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - buildLogger.addErrorLogEntry(Messages.INVALID_ACCESS_KEY); - buildLogger.addErrorLogEntry(String.format(Messages.STOP_RUN_FAIL, scheduleTitle, runId.toString())); - - case 404: - buildLogger.addErrorLogEntry( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - buildLogger.addErrorLogEntry(String.format(Messages.NO_SUCH_RUN_WAS_FOUND, runId, scheduleTitle)); - buildLogger.addErrorLogEntry(String.format(Messages.STOP_RUN_FAIL, scheduleTitle, runId.toString())); + case 404: + buildLogger.addErrorLogEntry( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + buildLogger.addErrorLogEntry(String.format(Messages.NO_SUCH_RUN_WAS_FOUND, runId, scheduleTitle)); + buildLogger + .addErrorLogEntry(String.format(Messages.STOP_RUN_FAIL, scheduleTitle, runId.toString())); - case 446: - buildLogger.addErrorLogEntry( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - buildLogger.addErrorLogEntry(Messages.NO_DISK_SPACE); - buildLogger.addErrorLogEntry(String.format(Messages.STOP_RUN_FAIL, scheduleTitle, runId.toString())); + case 446: + buildLogger.addErrorLogEntry( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + buildLogger.addErrorLogEntry(Messages.NO_DISK_SPACE); + buildLogger + .addErrorLogEntry(String.format(Messages.STOP_RUN_FAIL, scheduleTitle, runId.toString())); - case 455: - buildLogger.addErrorLogEntry( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - buildLogger.addErrorLogEntry(Messages.DATABASE_NOT_RESPONDING); - buildLogger.addErrorLogEntry(String.format(Messages.STOP_RUN_FAIL, scheduleTitle, runId.toString())); + case 455: + buildLogger.addErrorLogEntry( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + buildLogger.addErrorLogEntry(Messages.DATABASE_NOT_RESPONDING); + buildLogger + .addErrorLogEntry(String.format(Messages.STOP_RUN_FAIL, scheduleTitle, runId.toString())); - case 500: - buildLogger.addErrorLogEntry( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - buildLogger.addErrorLogEntry(Messages.CONTROLLER_RESPONDED_WITH_ERRORS); - buildLogger.addErrorLogEntry(String.format(Messages.STOP_RUN_FAIL, scheduleTitle, runId.toString())); - default: - buildLogger.addErrorLogEntry( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - buildLogger.addErrorLogEntry(String.format(Messages.STOP_RUN_FAIL, scheduleTitle, runId.toString())); + case 500: + buildLogger.addErrorLogEntry( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + buildLogger.addErrorLogEntry(Messages.CONTROLLER_RESPONDED_WITH_ERRORS); + buildLogger + .addErrorLogEntry(String.format(Messages.STOP_RUN_FAIL, scheduleTitle, runId.toString())); + default: + buildLogger.addErrorLogEntry( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText())); + buildLogger + .addErrorLogEntry(String.format(Messages.STOP_RUN_FAIL, scheduleTitle, runId.toString())); } } catch (Exception e) { buildLogger.addErrorLogEntry(String.format(Messages.STOP_RUN_FAIL, scheduleTitle, runId.toString())); buildLogger.addErrorLogEntry(e.getMessage()); } finally { - client.close(); + if (client != null) { + try { + client.close(); + } catch (IOException e) { + buildLogger.addErrorLogEntry("Error while closing client: " + e.getMessage()); + } + } return isSuccessfullyStopped; } } @@ -496,41 +541,41 @@ public String getRunStatus(AsyncHttpClient client, String controllerApiHttpAddre Response response = client.prepareGet(uri).setHeader("AccessKey", accessKey).execute().get(); switch (response.getStatusCode()) { - case 200: - JsonParser parser = new JsonParser(); - JsonObject runStatusObject = parser.parse(response.getResponseBody()).getAsJsonObject(); - JsonElement jsonRunStatus = runStatusObject.get("Status"); - String runStatus = Utils.defaultStringIfNull(jsonRunStatus, "Queued"); - return runStatus; - - case 401: - StringBuilder errorMessage401 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage401, Messages.INVALID_ACCESS_KEY); - throw new Exception(errorMessage401.toString()); - - case 404: - StringBuilder errorMessage404 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage404, String.format(Messages.NO_SUCH_RUN, runId)); - throw new Exception(errorMessage404.toString()); - - case 455: - StringBuilder errorMessage455 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage455, Messages.DATABASE_NOT_RESPONDING); - throw new Exception(errorMessage455.toString()); - - case 500: - StringBuilder errorMessage500 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage500, Messages.CONTROLLER_RESPONDED_WITH_ERRORS); - throw new Exception(errorMessage500.toString()); - - default: - String errorMessage = String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), - response.getStatusText()); - throw new Exception(errorMessage); + case 200: + JsonParser parser = new JsonParser(); + JsonObject runStatusObject = parser.parse(response.getResponseBody()).getAsJsonObject(); + JsonElement jsonRunStatus = runStatusObject.get("Status"); + String runStatus = Utils.defaultStringIfNull(jsonRunStatus, "Queued"); + return runStatus; + + case 401: + StringBuilder errorMessage401 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + appendLine(errorMessage401, Messages.INVALID_ACCESS_KEY); + throw new Exception(errorMessage401.toString()); + + case 404: + StringBuilder errorMessage404 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + appendLine(errorMessage404, String.format(Messages.NO_SUCH_RUN, runId)); + throw new Exception(errorMessage404.toString()); + + case 455: + StringBuilder errorMessage455 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + appendLine(errorMessage455, Messages.DATABASE_NOT_RESPONDING); + throw new Exception(errorMessage455.toString()); + + case 500: + StringBuilder errorMessage500 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + appendLine(errorMessage500, Messages.CONTROLLER_RESPONDED_WITH_ERRORS); + throw new Exception(errorMessage500.toString()); + + default: + String errorMessage = String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText()); + throw new Exception(errorMessage); } } @@ -542,58 +587,58 @@ public List getRunRunItems(AsyncHttpClient client, String controllerApiHtt Response response = client.prepareGet(uri).setHeader("AccessKey", accessKey).execute().get(); switch (response.getStatusCode()) { - case 200: + case 200: - JsonParser parser = new JsonParser(); - JsonObject jsonRunItemsObject = parser.parse(response.getResponseBody()).getAsJsonObject(); - JsonElement jsonRunItemsElement = jsonRunItemsObject.get("RunItemIds"); + JsonParser parser = new JsonParser(); + JsonObject jsonRunItemsObject = parser.parse(response.getResponseBody()).getAsJsonObject(); + JsonElement jsonRunItemsElement = jsonRunItemsObject.get("RunItemIds"); - List runItems = new ArrayList<>(); + List runItems = new ArrayList<>(); - if (jsonRunItemsElement != null) { - JsonArray jsonRunItems = jsonRunItemsElement.getAsJsonArray(); - for (int i = 0; i < jsonRunItems.size(); i++) { - UUID runItemId = UUID.fromString(jsonRunItems.get(i).getAsString()); - runItems.add(runItemId); + if (jsonRunItemsElement != null) { + JsonArray jsonRunItems = jsonRunItemsElement.getAsJsonArray(); + for (int i = 0; i < jsonRunItems.size(); i++) { + UUID runItemId = UUID.fromString(jsonRunItems.get(i).getAsString()); + runItems.add(runItemId); + } } - } - return runItems; - - case 401: - StringBuilder errorMessage401 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage401, Messages.INVALID_ACCESS_KEY); - throw new Exception(errorMessage401.toString()); - - case 404: - StringBuilder errorMessage404 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage404, String.format(Messages.NO_SUCH_RUN, runId)); - throw new Exception(errorMessage404.toString()); - - case 446: - StringBuilder errorMessage446 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage446, Messages.NO_DISK_SPACE); - throw new Exception(errorMessage446.toString()); - - case 455: - StringBuilder errorMessage455 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage455, Messages.DATABASE_NOT_RESPONDING); - throw new Exception(errorMessage455.toString()); - - case 500: - StringBuilder errorMessage500 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage500, Messages.CONTROLLER_RESPONDED_WITH_ERRORS); - throw new Exception(errorMessage500.toString()); - - default: - String errorMessage = String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), - response.getStatusText()); - throw new Exception(errorMessage); + return runItems; + + case 401: + StringBuilder errorMessage401 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + appendLine(errorMessage401, Messages.INVALID_ACCESS_KEY); + throw new Exception(errorMessage401.toString()); + + case 404: + StringBuilder errorMessage404 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + appendLine(errorMessage404, String.format(Messages.NO_SUCH_RUN, runId)); + throw new Exception(errorMessage404.toString()); + + case 446: + StringBuilder errorMessage446 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + appendLine(errorMessage446, Messages.NO_DISK_SPACE); + throw new Exception(errorMessage446.toString()); + + case 455: + StringBuilder errorMessage455 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + appendLine(errorMessage455, Messages.DATABASE_NOT_RESPONDING); + throw new Exception(errorMessage455.toString()); + + case 500: + StringBuilder errorMessage500 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + appendLine(errorMessage500, Messages.CONTROLLER_RESPONDED_WITH_ERRORS); + throw new Exception(errorMessage500.toString()); + + default: + String errorMessage = String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText()); + throw new Exception(errorMessage); } } @@ -606,87 +651,90 @@ public RunItem getRunItem(AsyncHttpClient client, String controllerApiHttpAddres Response response = client.prepareGet(uri).setHeader("AccessKey", accessKey).execute().get(); switch (response.getStatusCode()) { - case 200: - - JsonParser parser = new JsonParser(); - JsonObject jsonRunItem = parser.parse(response.getResponseBody()).getAsJsonObject(); - parser = null; - - // FlowInfo - JsonElement jsonFlowInfo = jsonRunItem.get("FlowInfo"); - JsonObject flowInfo = jsonFlowInfo.getAsJsonObject(); - JsonElement jsonFlowId = flowInfo.get("FlowId"); - UUID flowId = Utils.defaultUuidIfNull(jsonFlowId, UUID.randomUUID()); - JsonElement jsonFlowTitle = flowInfo.get("FlowTitle"); - String flowTitle = Utils.defaultStringIfNull(jsonFlowTitle); - JsonElement jsonFlowStatus = flowInfo.get("Status"); - String flowStatus = Utils.defaultStringIfNull(jsonFlowStatus, "NoStatus"); - - // AgentInfo - JsonElement jsonEnvironmentInfo = jsonRunItem.get("AgentInfo"); - JsonObject environmentInfo = jsonEnvironmentInfo.getAsJsonObject(); - JsonElement jsonEnvironmentId = environmentInfo.get("AgentId"); - UUID environmentId = Utils.defaultUuidIfNull(jsonEnvironmentId, UUID.randomUUID()); - JsonElement jsonEnvironmentTitle = environmentInfo.get("AgentTitle"); - String environmentTitle = Utils.defaultStringIfNull(jsonEnvironmentTitle); - JsonElement jsonEnvironmentConnectionType = environmentInfo.get("ConnectionType"); - String environmentConnectionType = Utils.defaultStringIfNull(jsonEnvironmentConnectionType, "Not defined"); - - JsonElement jsonRunId = jsonRunItem.get("AutomationRunId"); - UUID runId = Utils.defaultUuidIfNull(jsonRunId, UUID.randomUUID()); - - String elapsed = Utils.defaultElapsedIfNull(jsonRunItem.get("Elapsed")); - double milliseconds = Utils.defaultDoubleIfNull(jsonRunItem.get("ElapsedMilliseconds"), 0); - - RunItem runItem = new RunItem(flowTitle, flowStatus, milliseconds, scheduleTitle); - - if (flowStatus.contentEquals("Initializing") || flowStatus.contentEquals("Connecting") - || flowStatus.contentEquals("Connected") || flowStatus.contentEquals("Running") - || flowStatus.contentEquals("IsProcessing") || flowStatus.contentEquals("NoStatus") - || (flowStatus.contentEquals("Passed") && !writePassedKeyframes) - || (flowStatus.contentEquals("Done") && doneStatusAsSuccess && !writePassedKeyframes)) { - return runItem; - } else { - Failure keyframes = getRunItemKeyFrames(client, controllerApiHttpAddress, accessKey, runItemId, runItem, - scheduleTitle, environmentTitle, buildLogger); - runItem.failure = keyframes; - return runItem; - } + case 200: + + JsonParser parser = new JsonParser(); + JsonObject jsonRunItem = parser.parse(response.getResponseBody()).getAsJsonObject(); + parser = null; + + // FlowInfo + JsonElement jsonFlowInfo = jsonRunItem.get("FlowInfo"); + JsonObject flowInfo = jsonFlowInfo.getAsJsonObject(); + JsonElement jsonFlowId = flowInfo.get("FlowId"); + UUID flowId = Utils.defaultUuidIfNull(jsonFlowId, UUID.randomUUID()); + JsonElement jsonFlowTitle = flowInfo.get("FlowTitle"); + String flowTitle = Utils.defaultStringIfNull(jsonFlowTitle); + JsonElement jsonFlowStatus = flowInfo.get("Status"); + String flowStatus = Utils.defaultStringIfNull(jsonFlowStatus, "NoStatus"); + + // AgentInfo + JsonElement jsonEnvironmentInfo = jsonRunItem.get("AgentInfo"); + JsonObject environmentInfo = jsonEnvironmentInfo.getAsJsonObject(); + JsonElement jsonEnvironmentId = environmentInfo.get("AgentId"); + UUID environmentId = Utils.defaultUuidIfNull(jsonEnvironmentId, UUID.randomUUID()); + JsonElement jsonEnvironmentTitle = environmentInfo.get("AgentTitle"); + String environmentTitle = Utils.defaultStringIfNull(jsonEnvironmentTitle); + JsonElement jsonEnvironmentConnectionType = environmentInfo.get("ConnectionType"); + String environmentConnectionType = Utils.defaultStringIfNull(jsonEnvironmentConnectionType, + "Not defined"); + + JsonElement jsonRunId = jsonRunItem.get("AutomationRunId"); + UUID runId = Utils.defaultUuidIfNull(jsonRunId, UUID.randomUUID()); + + String elapsed = Utils.defaultElapsedIfNull(jsonRunItem.get("Elapsed")); + double milliseconds = Utils.defaultDoubleIfNull(jsonRunItem.get("ElapsedMilliseconds"), 0); + + RunItem runItem = new RunItem(flowTitle, flowStatus, milliseconds, scheduleTitle); + + if (flowStatus.contentEquals("Initializing") || flowStatus.contentEquals("Connecting") + || flowStatus.contentEquals("Connected") || flowStatus.contentEquals("Running") + || flowStatus.contentEquals("IsProcessing") || flowStatus.contentEquals("NoStatus") + || (flowStatus.contentEquals("Passed") && !writePassedKeyframes) + || (flowStatus.contentEquals("Done") && doneStatusAsSuccess && !writePassedKeyframes)) { + return runItem; + } else { + Failure keyframes = getRunItemKeyFrames(client, controllerApiHttpAddress, accessKey, runItemId, + runItem, + scheduleTitle, environmentTitle, buildLogger); + runItem.failure = keyframes; + return runItem; + } + + case 401: + StringBuilder errorMessage401 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + appendLine(errorMessage401, Messages.INVALID_ACCESS_KEY); + throw new Exception(errorMessage401.toString()); - case 401: - StringBuilder errorMessage401 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage401, Messages.INVALID_ACCESS_KEY); - throw new Exception(errorMessage401.toString()); - - case 404: - StringBuilder errorMessage404 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage404, String.format(Messages.NO_SUCH_RUN_ITEM_WAS_FOUND, runItemId, scheduleTitle)); - throw new Exception(errorMessage404.toString()); - - case 446: - StringBuilder errorMessage446 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage446, Messages.NO_DISK_SPACE); - throw new Exception(errorMessage446.toString()); - - case 455: - StringBuilder errorMessage455 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage455, Messages.DATABASE_NOT_RESPONDING); - throw new Exception(errorMessage455.toString()); - - case 500: - StringBuilder errorMessage500 = new StringBuilder( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - appendLine(errorMessage500, Messages.CONTROLLER_RESPONDED_WITH_ERRORS); - throw new Exception(errorMessage500.toString()); - - default: - String errorMessage = String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), - response.getStatusText()); - throw new Exception(errorMessage); + case 404: + StringBuilder errorMessage404 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + appendLine(errorMessage404, + String.format(Messages.NO_SUCH_RUN_ITEM_WAS_FOUND, runItemId, scheduleTitle)); + throw new Exception(errorMessage404.toString()); + + case 446: + StringBuilder errorMessage446 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + appendLine(errorMessage446, Messages.NO_DISK_SPACE); + throw new Exception(errorMessage446.toString()); + + case 455: + StringBuilder errorMessage455 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + appendLine(errorMessage455, Messages.DATABASE_NOT_RESPONDING); + throw new Exception(errorMessage455.toString()); + + case 500: + StringBuilder errorMessage500 = new StringBuilder( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + appendLine(errorMessage500, Messages.CONTROLLER_RESPONDED_WITH_ERRORS); + throw new Exception(errorMessage500.toString()); + + default: + String errorMessage = String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), + response.getStatusText()); + throw new Exception(errorMessage); } } @@ -697,72 +745,73 @@ public Failure getRunItemKeyFrames(AsyncHttpClient client, String controllerApiH Response response = client.prepareGet(uri).setHeader("AccessKey", accessKey).execute().get(); switch (response.getStatusCode()) { - case 200: - JsonArray jsonKeyframes = TryParseKeyframeJson(response.getResponseBody(), buildLogger); - - if (jsonKeyframes != null) { - buildLogger.addBuildLogEntry(Messages.CASE_CONSOLE_LOG_SEPARATOR); - buildLogger.addBuildLogEntry(String.format(Messages.CASE_INFORMATION, runItem.getCaseName(), - runItem.getCaseStatus(), runItem.getElapsedTime())); - StringBuilder fullKeyframes = new StringBuilder(""); - - for (JsonElement jsonKeyFrame : jsonKeyframes) { - String level = Utils.defaultStringIfNull(jsonKeyFrame.getAsJsonObject().get("Level"), "Trace"); - if (!level.contentEquals("") && !level.contentEquals("Trace")) { - String keyFrameTimeStamp = jsonKeyFrame.getAsJsonObject().get("Timestamp").getAsJsonObject() - .get("Value").getAsString(); - String keyFrameLogMessage = jsonKeyFrame.getAsJsonObject().get("LogMessage").getAsString(); - String keyFrame = String.format(Messages.CASE_STACKTRACE_FORMAT, keyFrameTimeStamp, - keyFrameLogMessage); - buildLogger.addBuildLogEntry(keyFrame); - fullKeyframes.append(keyFrame); - fullKeyframes.append(" "); + case 200: + JsonArray jsonKeyframes = TryParseKeyframeJson(response.getResponseBody(), buildLogger); + + if (jsonKeyframes != null) { + buildLogger.addBuildLogEntry(Messages.CASE_CONSOLE_LOG_SEPARATOR); + buildLogger.addBuildLogEntry(String.format(Messages.CASE_INFORMATION, runItem.getCaseName(), + runItem.getCaseStatus(), runItem.getElapsedTime())); + StringBuilder fullKeyframes = new StringBuilder(""); + + for (JsonElement jsonKeyFrame : jsonKeyframes) { + String level = Utils.defaultStringIfNull(jsonKeyFrame.getAsJsonObject().get("Level"), "Trace"); + if (!level.contentEquals("") && !level.contentEquals("Trace")) { + String keyFrameTimeStamp = jsonKeyFrame.getAsJsonObject().get("Timestamp").getAsJsonObject() + .get("Value").getAsString(); + String keyFrameLogMessage = jsonKeyFrame.getAsJsonObject().get("LogMessage").getAsString(); + String keyFrame = String.format(Messages.CASE_STACKTRACE_FORMAT, keyFrameTimeStamp, + keyFrameLogMessage); + buildLogger.addBuildLogEntry(keyFrame); + fullKeyframes.append(keyFrame); + fullKeyframes.append(" "); + } } + + fullKeyframes.append("Environment: ").append(environmentTitle).append(" "); + fullKeyframes.append("Schedule: ").append(scheduleTitle); + buildLogger.addBuildLogEntry("Environment: " + environmentTitle); + buildLogger.addBuildLogEntry("Schedule: " + scheduleTitle); + + return new Failure(fullKeyframes.toString()); + } else { + buildLogger.addBuildLogEntry(String.format(Messages.FAILED_TO_PARSE_RESPONSE_KEYFRAME_JSON_ARRAY)); + return new Failure(Messages.FAILED_TO_PARSE_RESPONSE_KEYFRAME_JSON_ARRAY); } + case 401: + buildLogger.addErrorLogEntry( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + buildLogger.addErrorLogEntry(Messages.INVALID_ACCESS_KEY); + break; + case 404: + buildLogger.addErrorLogEntry( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + buildLogger + .addErrorLogEntry(String.format(Messages.NO_SUCH_RUN_ITEM_WAS_FOUND, runItemId, scheduleTitle)); + break; - fullKeyframes.append("Environment: ").append(environmentTitle).append(" "); - fullKeyframes.append("Schedule: ").append(scheduleTitle); - buildLogger.addBuildLogEntry("Environment: " + environmentTitle); - buildLogger.addBuildLogEntry("Schedule: " + scheduleTitle); + case 446: + buildLogger.addErrorLogEntry( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + buildLogger.addErrorLogEntry(Messages.NO_DISK_SPACE); + break; - return new Failure(fullKeyframes.toString()); - } else { - buildLogger.addBuildLogEntry(String.format(Messages.FAILED_TO_PARSE_RESPONSE_KEYFRAME_JSON_ARRAY)); - return new Failure(Messages.FAILED_TO_PARSE_RESPONSE_KEYFRAME_JSON_ARRAY); - } - case 401: - buildLogger.addErrorLogEntry( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - buildLogger.addErrorLogEntry(Messages.INVALID_ACCESS_KEY); - break; - case 404: - buildLogger.addErrorLogEntry( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - buildLogger.addErrorLogEntry(String.format(Messages.NO_SUCH_RUN_ITEM_WAS_FOUND, runItemId, scheduleTitle)); - break; - - case 446: - buildLogger.addErrorLogEntry( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - buildLogger.addErrorLogEntry(Messages.NO_DISK_SPACE); - break; - - case 455: - buildLogger.addErrorLogEntry( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - buildLogger.addErrorLogEntry(Messages.DATABASE_NOT_RESPONDING); - break; - - case 500: - buildLogger.addErrorLogEntry( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - buildLogger.addErrorLogEntry(Messages.CONTROLLER_RESPONDED_WITH_ERRORS); - break; - - default: - buildLogger.addErrorLogEntry( - String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); - break; + case 455: + buildLogger.addErrorLogEntry( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + buildLogger.addErrorLogEntry(Messages.DATABASE_NOT_RESPONDING); + break; + + case 500: + buildLogger.addErrorLogEntry( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + buildLogger.addErrorLogEntry(Messages.CONTROLLER_RESPONDED_WITH_ERRORS); + break; + + default: + buildLogger.addErrorLogEntry( + String.format(Messages.ERROR_CODE_MESSAGE, response.getStatusCode(), response.getStatusText())); + break; } return null; } @@ -800,4 +849,4 @@ public String correctRepeatedTitles(HashMap repeatedNameMapCoun public boolean isLeapworkWritePassedFlowKeyFrames(boolean leapworkWritePassedFlowKeyFrames) { return leapworkWritePassedFlowKeyFrames; } -} +} \ No newline at end of file diff --git a/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/Utils.java b/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/Utils.java index dd5c34b..593f339 100644 --- a/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/Utils.java +++ b/src/main/java/com/leapwork/leapwork_integration_for_bamboo/impl/Utils.java @@ -1,7 +1,6 @@ package com.leapwork.leapwork_integration_for_bamboo.impl; import com.google.gson.JsonElement; - import java.util.Map; import java.util.UUID; diff --git a/src/main/java/com/leapwork/leapwork_integration_for_bamboo/model/RunCollection.java b/src/main/java/com/leapwork/leapwork_integration_for_bamboo/model/RunCollection.java index 54c2462..54e7ba4 100644 --- a/src/main/java/com/leapwork/leapwork_integration_for_bamboo/model/RunCollection.java +++ b/src/main/java/com/leapwork/leapwork_integration_for_bamboo/model/RunCollection.java @@ -1,8 +1,7 @@ package com.leapwork.leapwork_integration_for_bamboo.model; - import javax.xml.bind.annotation.*; -;import java.util.ArrayList; +import java.util.ArrayList; @XmlRootElement(name = "testsuites") @XmlAccessorType(XmlAccessType.NONE) diff --git a/src/main/resources/atlassian-plugin-marketing.xml b/src/main/resources/atlassian-plugin-marketing.xml index a961631..1e6561a 100644 --- a/src/main/resources/atlassian-plugin-marketing.xml +++ b/src/main/resources/atlassian-plugin-marketing.xml @@ -2,7 +2,7 @@ - + diff --git a/src/main/resources/atlassian-plugin.xml b/src/main/resources/atlassian-plugin.xml index e61c476..f77be2e 100644 --- a/src/main/resources/atlassian-plugin.xml +++ b/src/main/resources/atlassian-plugin.xml @@ -7,25 +7,22 @@ images/pluginLogo.png images/vendorLogo.png images/vendorIcon.png + compatible + true + data-center - > - Choose Schedules, Run and Get result - + + Choose Schedules, Run and Get result - - - + + + - \ No newline at end of file diff --git a/src/main/resources/editLeapworkBambooBridgeTask.ftl b/src/main/resources/editLeapworkBambooBridgeTask.ftl index 6d774cd..5c3df94 100644 --- a/src/main/resources/editLeapworkBambooBridgeTask.ftl +++ b/src/main/resources/editLeapworkBambooBridgeTask.ftl @@ -1,6 +1,6 @@ - [@ww.textfield labelKey="leapwork.hostname.label" name="leapworkHostname" id="leapworkHostname" required=true style="max-width: 350px; "/] [@ww.textfield labelKey="leapwork.port.label" name="leapworkPort" id="leapworkPort" required=true style="max-width: 80px; "/] +[@ww.checkbox labelKey="leapwork.https.label" name="leapworkHttps" toggle="true" descriptionKey="leapwork.https.description" /] [@ww.textfield labelKey="leapwork.accessKey.label" name="leapworkAccessKey" id="leapworkAccessKey" required=true style="max-width: 350px; "/] [@ww.textfield labelKey="leapwork.delay.label" name="leapworkDelay" id="leapworkDelay" required=false style="width: 80px;"/] [@ww.select cssClass="builderSelectWidget" labelKey='leapwork.doneStatusAs.label' name='leapworkDoneStatusAs' list="statuses" id="leapworkDoneStatusAs" emptyOption=false style="width: 80px;"/] @@ -91,6 +91,7 @@ fieldArea_schIds.style.display='none'; function GetSch() { const leapworkHostname = document.getElementById("leapworkHostname").value; const leapworkPort = document.getElementById("leapworkPort").value; + const leapworkConnectionType = document.getElementById("leapworkHttps").checked ? "https" : "http"; if(!leapworkHostname || !leapworkPort) { @@ -98,7 +99,7 @@ fieldArea_schIds.style.display='none'; } else { - const address = "http://" + leapworkHostname + ":" + leapworkPort; + const address = leapworkConnectionType + "://" + leapworkHostname + ":" + leapworkPort; const accessKey = document.getElementById("leapworkAccessKey").value; if(document.getElementById('LeapworkContainer').innerHTML == "") @@ -113,7 +114,6 @@ fieldArea_schIds.style.display='none'; { const container = document.getElementById("LeapworkContainer"); - (jQuery)(document).click(function (event) { if ((jQuery)(event.target).closest('#LeapworkContainer').length == 0 && (jQuery)(event.target).attr('id') != 'mainButton') { (jQuery)("#LeapworkContainer input:checkbox").remove(); diff --git a/src/main/resources/leapwrok-integration-for-bamboo.properties b/src/main/resources/leapwork-integration-for-bamboo.properties similarity index 67% rename from src/main/resources/leapwrok-integration-for-bamboo.properties rename to src/main/resources/leapwork-integration-for-bamboo.properties index db60f64..558be00 100644 --- a/src/main/resources/leapwrok-integration-for-bamboo.properties +++ b/src/main/resources/leapwork-integration-for-bamboo.properties @@ -1,16 +1,18 @@ #put any key/value pairs here my.plugin.name=MyPlugin leapwork.hostname.label=Leapwork Controller Hostname +leapwork.https.label=Enable Https Protocol? +leapwork.https.description=This will enable Https protocol for APIs. Please ensure that Https protocol is enabled in Leapwork as well. Default port is 9002. leapwork.port.label=Leapwork Controller Port -leapwork.accessKey.label=Leapwork Key -leapwork.scheduleVariables.label=Leapwork Schedule Variables +leapwork.accessKey.label=Leapwork Access Key leapwork.delay.label=Time delay (in sec) leapwork.doneStatusAs.label=Flow Done status as leapwork.report.label=JUnit report file path +leapwork.scheduleVariables.label=Leapwork Schedule Variables leapwork.autoReport.label=Enable automatic result publisher? leapwork.autoReport.description=Do NOT require JUnit parser task. leapwork.writePassedFlowKeyFrames.label=Write Passed Flow KeyFrames? -leapwork.schNames.label=Schedules' names -leapwork.schIds.label=Schedules' ids +leapwork.schNames.label=Schedule names +leapwork.schIds.label=Schedule ids error.hostnameorport.empty=hostname or/and port is/are empty! error.tests.empty=No schedules! Select schedules to run! \ No newline at end of file diff --git a/src/main/resources/viewLeapworkBambooBridgeTask.ftl b/src/main/resources/viewLeapworkBambooBridgeTask.ftl index a013975..d5eb8ef 100644 --- a/src/main/resources/viewLeapworkBambooBridgeTask.ftl +++ b/src/main/resources/viewLeapworkBambooBridgeTask.ftl @@ -1,6 +1,6 @@ - [@ww.textfield labelKey="leapwork.hostname.label" name="leapworkHostname" id="leapworkHostname" required='true' style="max-width: 350px; "/] [@ww.textfield labelKey="leapwork.port.label" name="leapworkPort" id="leapworkPort" required='true' style="max-width: 80px; "/] +[@ww.checkbox labelKey="leapwork.https.label" name="leapworkHttps" toggle="false" descriptionKey="leapwork.https.description" /] [@ww.textfield labelKey="leapwork.accessKey.label" name="leapworkAccessKey" id="leapworkAccessKey" required='true' style="max-width: 350px; "/] [@ww.textfield labelKey="leapwork.delay.label" name="leapworkDelay" id="leapworkDelay" required='false' style="width: 80px;"/] [@ww.select cssClass="builderSelectWidget" labelKey='leapwork.doneStatusAs.label' name='leapworkDoneStatusAs' list="statuses" id="leapworkDoneStatusAs" emptyOption='false' style="width: 80px;"/] @@ -9,5 +9,4 @@ [@ww.checkbox labelKey="leapwork.autoReport.label" name="leapworkAutoReport" toggle="true" descriptionKey="leapwork.autoReport.description" /] [@ww.checkbox labelKey="leapwork.writePassedFlowKeyFrames.label" name="leapworkWritePassedFlowKeyFrames" toggle="false" /] [@ww.textarea labelKey="leapwork.schNames.label" name="leapworkSchNames" id="schNames" readonly='false' required='true' style="max-width: 350px; height:80px;" emptyOption='false'/] -[@ww.textarea labelKey="leapwork.schIds.label" name="leapworkSchIds" id="schIds" required='false' style="max-width: 350px;" readonly='true'/] - +[@ww.textarea labelKey="leapwork.schIds.label" name="leapworkSchIds" id="schIds" required='false' style="max-width: 350px;" readonly='true'/] \ No newline at end of file