Skip to content

Commit 2ad6a47

Browse files
committed
WIP_APPLICATION_LINKS_TODO_SWAGGER
1 parent b2bde52 commit 2ad6a47

21 files changed

+132
-189
lines changed

commons/src/main/java/com/deftdevs/bootstrapi/commons/model/ApplicationLinkModel.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import lombok.Data;
55
import lombok.NoArgsConstructor;
66

7-
import javax.validation.constraints.NotNull;
87
import javax.xml.bind.annotation.XmlElement;
98
import javax.xml.bind.annotation.XmlRootElement;
109
import java.net.URI;
@@ -43,19 +42,15 @@ public enum ApplicationLinkStatus {
4342
private UUID uuid;
4443

4544
@XmlElement
46-
@NotNull
4745
private String name;
4846

4947
@XmlElement
50-
@NotNull
5148
private ApplicationLinkType type;
5249

5350
@XmlElement
54-
@NotNull
5551
private URI displayUrl;
5652

5753
@XmlElement
58-
@NotNull
5954
private URI rpcUrl;
6055

6156
@XmlElement
@@ -65,11 +60,14 @@ public enum ApplicationLinkStatus {
6560
private ApplicationLinkAuthType incomingAuthType;
6661

6762
@XmlElement
68-
private boolean primary;
63+
private Boolean primary;
6964

7065
@XmlElement
7166
private ApplicationLinkStatus status;
7267

68+
@XmlElement
69+
private Boolean ignoreSetupErrors;
70+
7371
// Example instances for documentation and tests
7472

7573
public static final ApplicationLinkModel EXAMPLE_1;

commons/src/main/java/com/deftdevs/bootstrapi/commons/model/util/ApplicationLinkModelUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public static ApplicationLinkDetails toApplicationLinkDetails(
7979
.name(applicationLinkModel.getName())
8080
.displayUrl(applicationLinkModel.getDisplayUrl())
8181
.rpcUrl(applicationLinkModel.getRpcUrl())
82-
.isPrimary(applicationLinkModel.isPrimary())
82+
.isPrimary(applicationLinkModel.getPrimary())
8383
.build();
8484
}
8585

commons/src/main/java/com/deftdevs/bootstrapi/commons/rest/AbstractApplicationLinkResourceImpl.java

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.deftdevs.bootstrapi.commons.rest.api.ApplicationLinkResource;
55
import com.deftdevs.bootstrapi.commons.service.api.ApplicationLinksService;
66

7-
import javax.ws.rs.core.Response;
87
import java.util.UUID;
98

109
public abstract class AbstractApplicationLinkResourceImpl implements ApplicationLinkResource {
@@ -18,39 +17,31 @@ public AbstractApplicationLinkResourceImpl(
1817
}
1918

2019
@Override
21-
public Response getApplicationLink(
20+
public ApplicationLinkModel getApplicationLink(
2221
final UUID uuid) {
2322

24-
final ApplicationLinkModel linkModel = applicationLinksService.getApplicationLink(uuid);
25-
return Response.ok(linkModel).build();
23+
return applicationLinksService.getApplicationLink(uuid);
2624
}
2725

2826
@Override
29-
public Response createApplicationLink(
30-
final boolean ignoreSetupErrors,
31-
final ApplicationLinkModel linkModel) {
27+
public ApplicationLinkModel createApplicationLink(
28+
final ApplicationLinkModel applicationLinkModel) {
3229

33-
final ApplicationLinkModel addedApplicationLink = applicationLinksService.addApplicationLink(
34-
linkModel, ignoreSetupErrors);
35-
return Response.ok(addedApplicationLink).build();
30+
return applicationLinksService.addApplicationLink(applicationLinkModel);
3631
}
3732

3833
@Override
39-
public Response updateApplicationLink(
34+
public ApplicationLinkModel updateApplicationLink(
4035
final UUID uuid,
41-
final boolean ignoreSetupErrors,
42-
final ApplicationLinkModel linkModel) {
36+
final ApplicationLinkModel applicationLinkModel) {
4337

44-
final ApplicationLinkModel updatedLinkModel = applicationLinksService.setApplicationLink(
45-
uuid, linkModel, ignoreSetupErrors);
46-
return Response.ok(updatedLinkModel).build();
38+
return applicationLinksService.setApplicationLink(uuid, applicationLinkModel);
4739
}
4840

4941
@Override
50-
public Response deleteApplicationLink(
42+
public void deleteApplicationLink(
5143
final UUID uuid) {
5244

5345
applicationLinksService.deleteApplicationLink(uuid);
54-
return Response.ok().build();
5546
}
5647
}

commons/src/main/java/com/deftdevs/bootstrapi/commons/rest/AbstractApplicationLinksResourceImpl.java

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44
import com.deftdevs.bootstrapi.commons.rest.api.ApplicationLinksResource;
55
import com.deftdevs.bootstrapi.commons.service.api.ApplicationLinksService;
66

7-
import javax.ws.rs.core.Response;
8-
import java.util.List;
7+
import java.util.Map;
98

109
public abstract class AbstractApplicationLinksResourceImpl implements ApplicationLinksResource {
1110

@@ -18,26 +17,21 @@ public AbstractApplicationLinksResourceImpl(
1817
}
1918

2019
@Override
21-
public Response getApplicationLinks() {
22-
final List<ApplicationLinkModel> applicationLinkModels = applicationLinksService.getApplicationLinks();
23-
return Response.ok(applicationLinkModels).build();
20+
public Map<String, ApplicationLinkModel> getApplicationLinks() {
21+
return applicationLinksService.getApplicationLinks();
2422
}
2523

2624
@Override
27-
public Response setApplicationLinks(
28-
final boolean ignoreSetupErrors,
29-
final List<ApplicationLinkModel> applicationLinkModels) {
25+
public Map<String, ApplicationLinkModel> setApplicationLinks(
26+
final Map<String, ApplicationLinkModel> applicationLinkModels) {
3027

31-
final List<ApplicationLinkModel> updatedApplicationLinkModels = applicationLinksService.setApplicationLinks(
32-
applicationLinkModels, ignoreSetupErrors);
33-
return Response.ok(updatedApplicationLinkModels).build();
28+
return applicationLinksService.setApplicationLinks(applicationLinkModels);
3429
}
3530

3631
@Override
37-
public Response deleteApplicationLinks(
32+
public void deleteApplicationLinks(
3833
final boolean force) {
3934

4035
applicationLinksService.deleteApplicationLinks(force);
41-
return Response.ok().build();
4236
}
4337
}

commons/src/main/java/com/deftdevs/bootstrapi/commons/rest/api/ApplicationLinkResource.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,15 @@
88
import io.swagger.v3.oas.annotations.media.Schema;
99
import io.swagger.v3.oas.annotations.responses.ApiResponse;
1010

11-
import javax.ws.rs.*;
11+
import javax.ws.rs.Consumes;
12+
import javax.ws.rs.DELETE;
13+
import javax.ws.rs.GET;
14+
import javax.ws.rs.POST;
15+
import javax.ws.rs.PUT;
16+
import javax.ws.rs.Path;
17+
import javax.ws.rs.PathParam;
18+
import javax.ws.rs.Produces;
1219
import javax.ws.rs.core.MediaType;
13-
import javax.ws.rs.core.Response;
1420
import java.util.UUID;
1521

1622
public interface ApplicationLinkResource {
@@ -33,7 +39,7 @@ public interface ApplicationLinkResource {
3339
),
3440
}
3541
)
36-
Response getApplicationLink(
42+
ApplicationLinkModel getApplicationLink(
3743
@PathParam("uuid") final UUID uuid);
3844

3945
@POST
@@ -53,8 +59,7 @@ Response getApplicationLink(
5359
),
5460
}
5561
)
56-
Response createApplicationLink(
57-
@QueryParam("ignore-setup-errors") @DefaultValue("false") final boolean ignoreSetupErrors,
62+
ApplicationLinkModel createApplicationLink(
5863
final ApplicationLinkModel linkModel);
5964

6065
@PUT
@@ -75,9 +80,8 @@ Response createApplicationLink(
7580
),
7681
}
7782
)
78-
Response updateApplicationLink(
83+
ApplicationLinkModel updateApplicationLink(
7984
@PathParam("uuid") final UUID uuid,
80-
@QueryParam("ignore-setup-errors") @DefaultValue("false") final boolean ignoreSetupErrors,
8185
final ApplicationLinkModel linksModelModels);
8286

8387
@DELETE
@@ -96,7 +100,7 @@ Response updateApplicationLink(
96100
),
97101
}
98102
)
99-
Response deleteApplicationLink(
103+
void deleteApplicationLink(
100104
@PathParam("uuid") final UUID uuid);
101105

102106
}

commons/src/main/java/com/deftdevs/bootstrapi/commons/rest/api/ApplicationLinksResource.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,14 @@
99
import io.swagger.v3.oas.annotations.media.Schema;
1010
import io.swagger.v3.oas.annotations.responses.ApiResponse;
1111

12-
import javax.ws.rs.*;
12+
import javax.ws.rs.Consumes;
13+
import javax.ws.rs.DELETE;
14+
import javax.ws.rs.GET;
15+
import javax.ws.rs.PUT;
16+
import javax.ws.rs.Produces;
17+
import javax.ws.rs.QueryParam;
1318
import javax.ws.rs.core.MediaType;
14-
import javax.ws.rs.core.Response;
15-
import java.util.List;
19+
import java.util.Map;
1620

1721
public interface ApplicationLinksResource {
1822

@@ -32,7 +36,7 @@ public interface ApplicationLinksResource {
3236
),
3337
}
3438
)
35-
Response getApplicationLinks();
39+
Map<String, ApplicationLinkModel> getApplicationLinks();
3640

3741
@PUT
3842
@Consumes(MediaType.APPLICATION_JSON)
@@ -52,9 +56,8 @@ public interface ApplicationLinksResource {
5256
),
5357
}
5458
)
55-
Response setApplicationLinks(
56-
@QueryParam("ignore-setup-errors") @DefaultValue("false") final boolean ignoreSetupErrors,
57-
final List<ApplicationLinkModel> applicationLinkModels);
59+
Map<String, ApplicationLinkModel> setApplicationLinks(
60+
final Map<String, ApplicationLinkModel> applicationLinkModels);
5861

5962
@DELETE
6063
@Operation(
@@ -72,7 +75,7 @@ Response setApplicationLinks(
7275
),
7376
}
7477
)
75-
Response deleteApplicationLinks(
78+
void deleteApplicationLinks(
7679
@QueryParam("force") final boolean force);
7780

7881
}

commons/src/main/java/com/deftdevs/bootstrapi/commons/service/DefaultApplicationLinksServiceImpl.java

Lines changed: 19 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,16 @@
3131
import org.slf4j.Logger;
3232
import org.slf4j.LoggerFactory;
3333

34-
import java.net.URI;
35-
import java.util.List;
3634
import java.util.Map;
3735
import java.util.UUID;
36+
import java.util.function.Function;
3837
import java.util.stream.Collectors;
3938
import java.util.stream.StreamSupport;
4039

4140
import static com.atlassian.applinks.internal.status.error.ApplinkErrorType.CONNECTION_REFUSED;
42-
import static com.deftdevs.bootstrapi.commons.model.ApplicationLinkModel.ApplicationLinkStatus.*;
41+
import static com.deftdevs.bootstrapi.commons.model.ApplicationLinkModel.ApplicationLinkStatus.AVAILABLE;
4342
import static com.deftdevs.bootstrapi.commons.model.ApplicationLinkModel.ApplicationLinkStatus.CONFIGURATION_ERROR;
43+
import static com.deftdevs.bootstrapi.commons.model.ApplicationLinkModel.ApplicationLinkStatus.UNAVAILABLE;
4444

4545
public class DefaultApplicationLinksServiceImpl implements ApplicationLinksService {
4646

@@ -67,12 +67,12 @@ public DefaultApplicationLinksServiceImpl(
6767
}
6868

6969
@Override
70-
public List<ApplicationLinkModel> getApplicationLinks() {
70+
public Map<String, ApplicationLinkModel> getApplicationLinks() {
7171
final Iterable<ApplicationLink> applicationLinksIterable = mutatingApplicationLinkService.getApplicationLinks();
7272

7373
return StreamSupport.stream(applicationLinksIterable.spliterator(),false)
7474
.map(this::getApplicationLinkModel)
75-
.collect(Collectors.toList());
75+
.collect(Collectors.toMap(ApplicationLinkModel::getName, Function.identity()));
7676
}
7777

7878
@Override
@@ -95,37 +95,31 @@ public ApplicationLinkModel getApplicationLink(
9595
}
9696

9797
@Override
98-
public List<ApplicationLinkModel> setApplicationLinks(
99-
final List<ApplicationLinkModel> applicationLinkModels,
100-
final boolean ignoreSetupErrors) {
98+
public Map<String, ApplicationLinkModel> setApplicationLinks(
99+
final Map<String, ApplicationLinkModel> applicationLinkModels) {
101100

102101
// existing application links map
103-
final Map<URI, ApplicationLinkModel> linkModelMap = getApplicationLinks().stream()
104-
.collect(Collectors.toMap(ApplicationLinkModel::getRpcUrl, link -> link));
102+
final Map<String, ApplicationLinkModel> linkModelMap = getApplicationLinks();
105103

106104
// find existing link by rpcUrl
107-
for (ApplicationLinkModel applicationLink : applicationLinkModels) {
108-
URI key = applicationLink.getRpcUrl();
109-
if (linkModelMap.containsKey(key)) {
110-
setApplicationLink(linkModelMap.get(key).getUuid(), applicationLink, ignoreSetupErrors);
105+
for (Map.Entry<String, ApplicationLinkModel> applicationLinkModelEntry : applicationLinkModels.entrySet()) {
106+
final ApplicationLinkModel applicationLinkModel = applicationLinkModelEntry.getValue();
107+
final String name = applicationLinkModel.getName();
108+
109+
if (linkModelMap.containsKey(name)) {
110+
setApplicationLink(linkModelMap.get(name).getUuid(), applicationLinkModel);
111111
} else {
112-
addApplicationLink(applicationLink, ignoreSetupErrors);
112+
addApplicationLink(applicationLinkModel);
113113
}
114114
}
115115

116116
return getApplicationLinks();
117117
}
118118

119-
@Override
120-
public Map<String, ApplicationLinkModel> setApplicationLinks(Map<String, ApplicationLinkModel> applicationLinkModels) {
121-
return Map.of();
122-
}
123-
124119
@Override
125120
public ApplicationLinkModel setApplicationLink(
126121
final UUID uuid,
127-
final ApplicationLinkModel applicationLinkModel,
128-
final boolean ignoreSetupErrors) {
122+
final ApplicationLinkModel applicationLinkModel) {
129123

130124
final ApplicationId applicationId = new ApplicationId(uuid.toString());
131125

@@ -144,7 +138,7 @@ public ApplicationLinkModel setApplicationLink(
144138

145139
// configuring authentication might fail if setup is incorrect or remote app is unavailable
146140
setOutgoingOAuthConfig(applicationLink, outgoingOAuthConfig);
147-
setIncomingOAuthConfig(applicationLink, incomingOAuthConfig, ignoreSetupErrors);
141+
setIncomingOAuthConfig(applicationLink, incomingOAuthConfig, applicationLinkModel.getIgnoreSetupErrors());
148142

149143
return getApplicationLinkModel(recreatedApplicationLink);
150144
} catch (TypeNotInstalledException e) {
@@ -154,8 +148,7 @@ public ApplicationLinkModel setApplicationLink(
154148

155149
@Override
156150
public ApplicationLinkModel addApplicationLink(
157-
final ApplicationLinkModel applicationLinkModel,
158-
final boolean ignoreSetupErrors) {
151+
final ApplicationLinkModel applicationLinkModel) {
159152

160153
final ApplicationLinkDetails applicationLinkDetails = ApplicationLinkModelUtil.toApplicationLinkDetails(applicationLinkModel);
161154
final OAuthConfig outgoingOAuthConfig = ApplicationLinkModelUtil.toOAuthConfig(applicationLinkModel.getOutgoingAuthType());
@@ -181,7 +174,7 @@ public ApplicationLinkModel addApplicationLink(
181174

182175
// configuring authentication might fail if setup is incorrect or remote app is unavailable
183176
setOutgoingOAuthConfig(applicationLink, outgoingOAuthConfig);
184-
setIncomingOAuthConfig(applicationLink, incomingOAuthConfig, ignoreSetupErrors);
177+
setIncomingOAuthConfig(applicationLink, incomingOAuthConfig, applicationLinkModel.getIgnoreSetupErrors());
185178

186179
return getApplicationLinkModel(applicationLink);
187180
}

0 commit comments

Comments
 (0)