Skip to content
This repository was archived by the owner on Jan 20, 2024. It is now read-only.

Commit 673c399

Browse files
committed
fixes #72 cascade delete service endpoints if the service is deteted
1 parent c9fa70d commit 673c399

File tree

4 files changed

+15
-4
lines changed

4 files changed

+15
-4
lines changed

service/src/main/java/com/networknt/oauth/service/handler/Oauth2ServiceServiceIdDeleteHandler.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,33 @@
33
import com.hazelcast.core.IMap;
44
import com.networknt.oauth.cache.CacheStartupHookProvider;
55
import com.networknt.oauth.cache.model.Service;
6+
import com.networknt.oauth.cache.model.ServiceEndpoint;
67
import com.networknt.status.Status;
78
import io.undertow.server.HttpHandler;
89
import io.undertow.server.HttpServerExchange;
910
import org.slf4j.Logger;
1011
import org.slf4j.LoggerFactory;
1112

13+
/**
14+
* Delete a service by a serviceId, if there are endpoints associated with the service
15+
* delete endpoints before deleting the service.
16+
*
17+
* @author Steve Hu
18+
*/
1219
public class Oauth2ServiceServiceIdDeleteHandler implements HttpHandler {
1320
static final String SERVICE_NOT_FOUND = "ERR12015";
1421
static Logger logger = LoggerFactory.getLogger(Oauth2ServiceServiceIdGetHandler.class);
1522
@Override
1623
public void handleRequest(HttpServerExchange exchange) throws Exception {
1724
String serviceId = exchange.getQueryParameters().get("serviceId").getFirst();
25+
IMap<String, ServiceEndpoint> serviceEndpoints = CacheStartupHookProvider.hz.getMap("serviceEndpoints");
1826
IMap<String, Service> services = CacheStartupHookProvider.hz.getMap("services");
1927
if(services.get(serviceId) == null) {
2028
Status status = new Status(SERVICE_NOT_FOUND, serviceId);
2129
exchange.setStatusCode(status.getStatusCode());
2230
exchange.getResponseSender().send(status.toString());
2331
} else {
32+
serviceEndpoints.delete(serviceId);
2433
services.delete(serviceId);
2534
}
2635
}

service/src/test/java/com/networknt/oauth/service/handler/Oauth2ServicePostHandlerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class Oauth2ServicePostHandlerTest {
3636

3737
@Test
3838
public void testOauth2ServicePostHandler() throws ClientException, ApiException, UnsupportedEncodingException {
39-
String service = "{\"serviceId\":\"AACT0003\",\"serviceType\":\"swagger\",\"serviceName\":\"Retail Account\",\"serviceDesc\":\"Microservices for Retail Account\",\"scope\":\"act.r act.w\",\"ownerId\":\"admin\"}";
39+
String service = "{\"serviceId\":\"AACT0005\",\"serviceType\":\"swagger\",\"serviceName\":\"Retail Account\",\"serviceDesc\":\"Microservices for Retail Account\",\"scope\":\"act.r act.w\",\"ownerId\":\"admin\"}";
4040
final AtomicReference<ClientResponse> reference = new AtomicReference<>();
4141
final Http2Client client = Http2Client.getInstance();
4242
final CountDownLatch latch = new CountDownLatch(1);

service/src/test/java/com/networknt/oauth/service/handler/Oauth2ServiceServiceIdEndpointDeleteHandlerTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public void testOauth2ServiceServiceIdEndpointDeleteHandlerTest() throws ClientE
4949
}
5050
final AtomicReference<ClientResponse> reference = new AtomicReference<>();
5151
try {
52-
ClientRequest request = new ClientRequest().setPath("/oauth2/service/AACT0002/endpoint").setMethod(Methods.DELETE);
52+
ClientRequest request = new ClientRequest().setPath("/oauth2/service/AACT0003/endpoint").setMethod(Methods.DELETE);
5353

5454
connection.sendRequest(request, client.createClientCallback(reference, latch));
5555

@@ -78,7 +78,7 @@ public void testServiceEndpointNotFound() throws ClientException, IOException {
7878
}
7979
final AtomicReference<ClientResponse> reference = new AtomicReference<>();
8080
try {
81-
ClientRequest request = new ClientRequest().setPath("/oauth2/service/AACT0003/endpoint").setMethod(Methods.DELETE);
81+
ClientRequest request = new ClientRequest().setPath("/oauth2/service/AACT0004/endpoint").setMethod(Methods.DELETE);
8282

8383
connection.sendRequest(request, client.createClientCallback(reference, latch));
8484

service/src/test/resources/create_h2.sql

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,10 @@ INSERT INTO client (client_id, client_type, client_secret, client_profile, clien
7676

7777
INSERT INTO service (service_id, service_type, service_name, service_desc, scope, owner_id) VALUES ('AACT0001', 'openapi', 'Account Service', 'A microservice that serves account information', 'a.r b.r', 'admin');
7878
INSERT INTO service (service_id, service_type, service_name, service_desc, scope, owner_id) VALUES ('AACT0002', 'openapi', 'Account Service', 'A microservice that serves account information', 'a.r b.r', 'admin');
79+
INSERT INTO service (service_id, service_type, service_name, service_desc, scope, owner_id) VALUES ('AACT0003', 'openapi', 'Account Service', 'A microservice that serves account information', 'a.r b.r', 'admin');
7980

8081
INSERT INTO service_endpoint(service_id, endpoint, operation, scope) VALUES ('AACT0001', '/v1/getData@get', 'retrieve data', 'data.r');
8182
INSERT INTO service_endpoint(service_id, endpoint, operation, scope) VALUES ('AACT0001', '/v1/postData@post', 'create data', 'data.w');
8283

83-
INSERT INTO service_endpoint(service_id, endpoint, operation, scope) VALUES ('AACT0002', '/v1/deleteData@delete', 'deleteData', 'data.w');
84+
INSERT INTO service_endpoint(service_id, endpoint, operation, scope) VALUES ('AACT0002', '/v1/deleteData@delete', 'deleteData', 'data.w');
85+
INSERT INTO service_endpoint(service_id, endpoint, operation, scope) VALUES ('AACT0003', '/v1/deleteData@delete', 'deleteData', 'data.w');

0 commit comments

Comments
 (0)