Skip to content

Commit 1ab7270

Browse files
authored
Release 5.13.0
2 parents a538392 + 3276ccd commit 1ab7270

File tree

49 files changed

+2041
-1044
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+2041
-1044
lines changed

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ on:
1111

1212
env:
1313
GH_USER_NAME: github.actor
14-
SCRIPTS_VERSION: 5.12.1
15-
BOM_VERSION: 5.13.0
14+
SCRIPTS_VERSION: 5.14.0
15+
BOM_VERSION: 5.14.2
1616

1717
jobs:
1818
release:

.openapi-generator-ignore

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
docs/*.md
2+
api/*.yaml
3+
4+
5+
## Exclude APIs
6+
/**/MyselfApi.java
7+
/**/Bulk**Api.java
8+
/**/Work**Api.java
9+
/**/Screens**Api.java
10+
/**/Project**Api.java
11+
12+
## Exclude broken model
13+
/**/ApprovalConfiguration.java
14+
15+
#Force generate
16+
!/**/ProjectsApi.java

build.gradle

Lines changed: 44 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
plugins {
2-
id "io.spring.dependency-management" version "1.1.4"
2+
id 'io.spring.dependency-management' version '1.1.7'
33
id 'java'
44
id 'jacoco'
55
id "com.github.node-gradle.node" version "2.2.1"
6+
id "org.openapi.generator" version "7.12.0"
7+
id "org.springframework.boot" version "3.4.2" apply false
68
}
79

10+
import org.openapitools.generator.gradle.plugin.tasks.GenerateTask
11+
812
apply from: 'project-properties.gradle'
913

1014
def scriptsUrl = 'https://raw.githubusercontent.com/reportportal/gradle-scripts/' +
@@ -15,8 +19,8 @@ apply from: scriptsUrl + '/release-fat.gradle'
1519
apply from: scriptsUrl + '/signing.gradle'
1620

1721
repositories {
18-
maven { url "https://packages.atlassian.com/maven/repository/public" }
1922
mavenCentral { url "https://repo1.maven.org/maven2" }
23+
maven { url "https://packages.atlassian.com/maven/repository/public" }
2024

2125
if (!releaseMode) {
2226
maven { url 'https://jitpack.io' }
@@ -25,9 +29,10 @@ repositories {
2529

2630
dependencyManagement {
2731
imports {
28-
mavenBom(releaseMode ? 'com.epam.reportportal:commons-bom:5.12.1' : 'com.epam.reportportal:commons-bom:5.12.1')
32+
mavenBom(releaseMode ? 'com.epam.reportportal:commons-bom:' + getProperty('bom.version') : 'com.epam.reportportal:commons-bom:5.14.2')
2933
}
3034
}
35+
ext['spring-boot.version'] = "${springBootVersion}"
3136

3237
dependencies {
3338
// ALL new dependencies should be included in shadowJar plugin!
@@ -37,16 +42,44 @@ dependencies {
3742
implementation 'com.epam.reportportal:plugin-api'
3843
annotationProcessor 'com.epam.reportportal:plugin-api'
3944
} else {
40-
implementation 'com.github.reportportal:commons-dao:8dcc514'
41-
implementation 'com.github.reportportal:plugin-api:815c74a'
42-
annotationProcessor 'com.github.reportportal:plugin-api:815c74a'
45+
implementation 'com.github.reportportal:commons-dao:6298e53'
46+
implementation 'com.github.reportportal:plugin-api:8874441'
47+
annotationProcessor 'com.github.reportportal:plugin-api:8874441'
4348
}
4449

45-
implementation 'org.hibernate:hibernate-core:5.6.15.Final'
46-
implementation("com.atlassian.jira:jira-rest-java-client-core:6.0.1")
47-
implementation "io.atlassian.fugue:fugue:6.0.1"
50+
implementation("org.apache.httpcomponents.client5:httpclient5:5.4.2") // supports gzip encoding
51+
implementation "org.hibernate.validator:hibernate-validator:8.0.2.Final"
52+
implementation 'jakarta.el:jakarta.el-api:6.0.1'
53+
implementation 'org.glassfish:jakarta.el:4.0.2'
54+
implementation "org.springdoc:springdoc-openapi-common:1.8.0"
55+
56+
compileOnly "org.projectlombok:lombok:${lombokVersion}"
57+
annotationProcessor "org.projectlombok:lombok:${lombokVersion}"
58+
testCompileOnly "org.projectlombok:lombok:${lombokVersion}"
59+
testAnnotationProcessor "org.projectlombok:lombok:${lombokVersion}"
60+
61+
testImplementation('org.junit.jupiter:junit-jupiter:5.11.4')
62+
testImplementation "org.mockito:mockito-junit-jupiter:5.14.2"
4863

49-
testImplementation('org.junit.jupiter:junit-jupiter:5.11.0')
64+
}
65+
66+
sourceSets {
67+
main {
68+
java {
69+
srcDirs "$buildDir/generated/src/main/java"
70+
exclude("$buildDir/generated/src/main/java/com/epam/reportportal/api/jira/MyselfApi.java")
71+
}
72+
}
73+
}
74+
75+
76+
tasks.register('generateJiraApi', GenerateTask) {
77+
generatorName.set("java")
78+
inputSpec.set("$rootDir/src/main/resources/openapi/swagger-v3.v3.json")
79+
outputDir.set("$buildDir/generated")
80+
configFile.set("$rootDir/src/main/resources/openapi/config.json")
81+
ignoreFileOverride = "${projectDir.path}/.openapi-generator-ignore"
82+
skipOverwrite.set(true)
5083
}
5184

5285
test {
@@ -104,29 +137,8 @@ shadowJar {
104137
configurations = [project.configurations.compileClasspath]
105138
zip64 true
106139
dependencies {
107-
include(dependency("com.atlassian.jira:jira-rest-java-client-api:.*"))
108-
include(dependency("com.atlassian.jira:jira-rest-java-client-core:.*"))
109-
include(dependency("com.atlassian.httpclient:atlassian-httpclient-api:.*"))
110-
include(dependency("com.atlassian.httpclient:atlassian-httpclient-library:.*"))
111-
include(dependency("com.atlassian.sal:sal-api:.*"))
112-
include(dependency("com.atlassian.event:atlassian-event:.*"))
113-
include(dependency("io.atlassian.util.concurrent:atlassian-util-concurrent:.*"))
114-
include(dependency("io.atlassian.fugue:fugue:.*"))
115-
include(dependency("org.apache.httpcomponents:httpasyncclient:.*"))
116-
include(dependency("org.apache.httpcomponents:httpasyncclient-cache:.*"))
117-
include(dependency("org.apache.httpcomponents:httpclient:.*"))
118-
include(dependency("org.apache.httpcomponents:httpclient-cache:.*"))
119-
include(dependency("org.apache.httpcomponents:httpcore:.*"))
120-
include(dependency("org.apache.httpcomponents:httpcore-nio:.*"))
121-
include(dependency("org.apache.httpcomponents:httpmime:.*"))
122-
include(dependency("org.glassfish.jersey.core:jersey-server:.*"))
123-
include(dependency("org.glassfish.jersey.core:jersey-common:.*"))
124140
include(dependency("jakarta.ws.rs:jakarta.ws.rs-api:.*"))
125-
//include(dependency("jakarta.annotation:jakarta.annotation-api:.*"))
126141
include(dependency("org.apache.tomcat:tomcat-annotations-api:.*"))
127-
include(dependency("org.glassfish.hk2.external:jakarta.inject:.*"))
128-
include(dependency("org.glassfish.hk2:osgi-resource-locator:.*"))
129-
include(dependency("org.glassfish.jaxb:jaxb-runtime:.*"))
130142
}
131143
}
132144

@@ -150,5 +162,4 @@ task assemblePlugins(type: Copy) {
150162
dependsOn subprojects.assemblePlugin
151163
}
152164

153-
compileJava.dependsOn npm_run_build
154-
165+
compileJava.dependsOn npm_run_build, generateJiraApi

gradle.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1-
version=5.12.1
1+
version=5.13.0
22
description=EPAM Report Portal. Cloud Jira plugin
33
pluginId = JIRA Cloud
4+
5+
springBootVersion=3.4.2
6+
lombokVersion=1.18.36

jooq.gradle

Lines changed: 0 additions & 34 deletions
This file was deleted.

src/main/java/com/epam/reportportal/extension/jira/CloudJiraExtension.java

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,8 @@
3030
import com.epam.reportportal.extension.jira.command.PostTicketCommand;
3131
import com.epam.reportportal.extension.jira.command.RetrieveCreationParamsCommand;
3232
import com.epam.reportportal.extension.jira.command.RetrieveUpdateParamsCommand;
33+
import com.epam.reportportal.extension.jira.command.TestConnectionCommand;
3334
import com.epam.reportportal.extension.jira.command.UserSearchCommand;
34-
import com.epam.reportportal.extension.jira.command.atlassian.CloudJiraClientProviderExtended;
35-
import com.epam.reportportal.extension.jira.command.connection.TestConnectionCommand;
3635
import com.epam.reportportal.extension.jira.command.utils.CloudJiraClientProvider;
3736
import com.epam.reportportal.extension.jira.command.utils.JIRATicketDescriptionService;
3837
import com.epam.reportportal.extension.jira.event.launch.StartLaunchEventListener;
@@ -52,15 +51,16 @@
5251
import com.fasterxml.jackson.databind.DeserializationFeature;
5352
import com.fasterxml.jackson.databind.MapperFeature;
5453
import com.fasterxml.jackson.databind.ObjectMapper;
54+
import com.fasterxml.jackson.databind.SerializationFeature;
5555
import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector;
5656
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
57+
import jakarta.annotation.PostConstruct;
5758
import java.util.ArrayList;
5859
import java.util.HashMap;
5960
import java.util.List;
6061
import java.util.Map;
6162
import java.util.function.Supplier;
6263
import java.util.stream.Collectors;
63-
import javax.annotation.PostConstruct;
6464
import org.jasypt.util.text.BasicTextEncryptor;
6565
import org.pf4j.Extension;
6666
import org.springframework.beans.factory.DisposableBean;
@@ -76,12 +76,17 @@
7676
*/
7777
@Extension
7878
public class CloudJiraExtension implements ReportPortalExtensionPoint, DisposableBean {
79-
private static final String DOCUMENTATION_LINK_FIELD = "documentationLink";
80-
private static final String DOCUMENTATION_LINK = "https://reportportal.io/docs/plugins/AtlassianJiraCloud";
81-
public static final String BINARY_DATA_PROPERTIES_FILE_ID = "binary-data.properties";
79+
80+
private static final String DOCUMENTATION_LINK_FIELD = "documentationLink";
81+
private static final String DOCUMENTATION_LINK = "https://reportportal.io/docs/plugins/AtlassianJiraCloud";
82+
public static final String BINARY_DATA_PROPERTIES_FILE_ID = "binary-data.properties";
8283

8384
private static final String PLUGIN_ID = "JIRA Cloud";
8485

86+
private static final String NAME_FIELD = "name";
87+
88+
private static final String PLUGIN_NAME = "Jira Cloud";
89+
8590
private final String resourcesDir;
8691

8792
private final Supplier<Map<String, PluginCommand<?>>> pluginCommandMapping =
@@ -96,7 +101,6 @@ public class CloudJiraExtension implements ReportPortalExtensionPoint, Disposabl
96101
private final Supplier<ApplicationListener<StartLaunchEvent>> startLaunchEventListenerSupplier;
97102

98103
private final Supplier<CloudJiraClientProvider> cloudJiraClientProviderSupplier;
99-
private final Supplier<CloudJiraClientProvider> cloudJiraClientProviderExtendedSupplier;
100104

101105
private final Supplier<JIRATicketDescriptionService> jiraTicketDescriptionServiceSupplier;
102106

@@ -131,9 +135,8 @@ public class CloudJiraExtension implements ReportPortalExtensionPoint, Disposabl
131135
private DataStoreService dataStoreService;
132136

133137
public CloudJiraExtension(Map<String, Object> initParams) {
134-
resourcesDir =
135-
IntegrationTypeProperties.RESOURCES_DIRECTORY.getValue(initParams).map(String::valueOf)
136-
.orElse("");
138+
resourcesDir = IntegrationTypeProperties.RESOURCES_DIRECTORY.getValue(initParams).map(String::valueOf)
139+
.orElse("");
137140
objectMapper = configureObjectMapper();
138141

139142
pluginLoadedListenerSupplier = new MemoizingSupplier<>(() -> new PluginEventListener(
@@ -145,9 +148,7 @@ PLUGIN_ID, new PluginEventHandlerFactory(integrationTypeRepository, integrationR
145148

146149
requestEntityConverter = new RequestEntityConverter(objectMapper);
147150

148-
cloudJiraClientProviderSupplier =
149-
new MemoizingSupplier<>(() -> new CloudJiraClientProvider(textEncryptor));
150-
cloudJiraClientProviderExtendedSupplier = new MemoizingSupplier<>(() -> new CloudJiraClientProviderExtended(textEncryptor));
151+
cloudJiraClientProviderSupplier = new MemoizingSupplier<>(() -> new CloudJiraClientProvider(textEncryptor));
151152

152153
jiraTicketDescriptionServiceSupplier = new MemoizingSupplier<>(
153154
() -> new JIRATicketDescriptionService(logRepository, testItemRepository));
@@ -158,6 +159,7 @@ protected ObjectMapper configureObjectMapper() {
158159
om.setAnnotationIntrospector(new JacksonAnnotationIntrospector());
159160
om.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);
160161
om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
162+
om.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
161163
om.registerModule(new JavaTimeModule());
162164
return om;
163165
}
@@ -167,6 +169,7 @@ protected ObjectMapper configureObjectMapper() {
167169
Map<String, Object> params = new HashMap<>();
168170
params.put(ALLOWED_COMMANDS, new ArrayList<>(pluginCommandMapping.get().keySet()));
169171
params.put(DOCUMENTATION_LINK_FIELD, DOCUMENTATION_LINK);
172+
params.put(NAME_FIELD, PLUGIN_NAME);
170173
params.put(COMMON_COMMANDS, new ArrayList<>(commonPluginCommandMapping.get().keySet()));
171174
return params;
172175
}
@@ -224,19 +227,15 @@ private Map<String, CommonPluginCommand<?>> getCommonCommands() {
224227
return commands.stream().collect(Collectors.toMap(NamedPluginCommand::getName, it -> it));
225228
}
226229

227-
private Map<String, PluginCommand<?>> getCommands() {
228-
List<PluginCommand<?>> commands = new ArrayList<>();
229-
commands.add(new UserSearchCommand(projectRepository, cloudJiraClientProviderSupplier.get()));
230-
commands.add(new TestConnectionCommand(cloudJiraClientProviderSupplier.get()));
231-
commands.add(new GetIssueFieldsCommand(projectRepository, cloudJiraClientProviderExtendedSupplier.get()));
232-
commands.add(new GetIssueTypesCommand(projectRepository, cloudJiraClientProviderSupplier.get()));
233-
commands.add(new PostTicketCommand(projectRepository,
234-
requestEntityConverter,
235-
cloudJiraClientProviderExtendedSupplier.get(),
236-
jiraTicketDescriptionServiceSupplier.get(),
237-
dataStoreService
238-
));
239-
return commands.stream().collect(Collectors.toMap(NamedPluginCommand::getName, it -> it));
230+
private Map<String, PluginCommand<?>> getCommands() {
231+
List<PluginCommand<?>> commands = new ArrayList<>();
232+
commands.add(new UserSearchCommand(projectRepository, cloudJiraClientProviderSupplier.get()));
233+
commands.add(new TestConnectionCommand(cloudJiraClientProviderSupplier.get()));
234+
commands.add(new GetIssueFieldsCommand(projectRepository, cloudJiraClientProviderSupplier.get()));
235+
commands.add(new GetIssueTypesCommand(projectRepository, cloudJiraClientProviderSupplier.get()));
236+
commands.add(new PostTicketCommand(projectRepository, requestEntityConverter, cloudJiraClientProviderSupplier.get(),
237+
jiraTicketDescriptionServiceSupplier.get(), dataStoreService));
238+
return commands.stream().collect(Collectors.toMap(NamedPluginCommand::getName, it -> it));
240239

241240
}
242241
}

0 commit comments

Comments
 (0)