From 5e623d89b759fca0a31c1dbd378e33fd6b80eac4 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 3 Aug 2023 15:51:54 +0200 Subject: [PATCH] Remove RootResourceDiscoveryService This interface has only a single implementation, fold it into the sole user. Also fixup whitespace formatting and improve the test a bit. JIRA: NETCONF-1117 Change-Id: I462f541fcce99a178a237762a0d7b544adf6dbf6 Signed-off-by: Robert Varga --- .../nb/rfc8040/RootFoundApplication.java | 3 +- .../api/RootResourceDiscoveryService.java | 44 ------------------- .../RootResourceDiscoveryServiceImpl.java | 43 +++++++++++++----- .../RootResourceDiscoveryServiceImplTest.java | 40 +++++++++++++++++ .../RootResourceDiscoveryServiceTest.java | 33 -------------- 5 files changed, 74 insertions(+), 89 deletions(-) delete mode 100644 restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/api/RootResourceDiscoveryService.java create mode 100644 restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RootResourceDiscoveryServiceImplTest.java delete mode 100644 restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RootResourceDiscoveryServiceTest.java diff --git a/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/RootFoundApplication.java b/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/RootFoundApplication.java index 4e48492455..0b9eb60910 100644 --- a/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/RootFoundApplication.java +++ b/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/RootFoundApplication.java @@ -10,11 +10,10 @@ package org.opendaylight.restconf.nb.rfc8040; import java.util.Set; import javax.ws.rs.core.Application; import org.opendaylight.restconf.nb.rfc8040.jersey.providers.errors.RestconfDocumentedExceptionMapper; -import org.opendaylight.restconf.nb.rfc8040.rests.services.api.RootResourceDiscoveryService; import org.opendaylight.restconf.nb.rfc8040.rests.services.impl.RootResourceDiscoveryServiceImpl; public class RootFoundApplication extends Application { - private final RootResourceDiscoveryService rrds; + private final RootResourceDiscoveryServiceImpl rrds; public RootFoundApplication(final String restconfRoot) { rrds = new RootResourceDiscoveryServiceImpl(restconfRoot); diff --git a/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/api/RootResourceDiscoveryService.java b/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/api/RootResourceDiscoveryService.java deleted file mode 100644 index 563e698800..0000000000 --- a/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/api/RootResourceDiscoveryService.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2020 ZTE Corp. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.restconf.nb.rfc8040.rests.services.api; - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import org.opendaylight.restconf.nb.rfc8040.MediaTypes; - -/** - * Controller for determining the {@code Root Resource} of the RESTCONF API. This interface serves up a - * {@code host-meta} document as defined in - * RFC6415 section 3. - */ -// FIXME: this really should be the endpoint's job to aggregate these. Once JAX-RS (or any other wiring) can provide it, -// integrate with that framework, so we co-exist with others. -public interface RootResourceDiscoveryService { - /** - * Root Resource Discovery as an XRD. - * - * @see RFC8040, section 3.1 - */ - @GET - @Path("/host-meta") - @Produces(MediaTypes.APPLICATION_XRD_XML) - Response readXrdData(); - - /** - * Root Resource Discovery as a JRD. - * - * @see RFC6415, appendix A - */ - @GET - @Path("/host-meta.json") - @Produces(MediaType.APPLICATION_JSON) - Response readJsonData(); -} diff --git a/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RootResourceDiscoveryServiceImpl.java b/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RootResourceDiscoveryServiceImpl.java index 5e0e47ba7c..38268d0ba4 100644 --- a/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RootResourceDiscoveryServiceImpl.java +++ b/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RootResourceDiscoveryServiceImpl.java @@ -9,38 +9,61 @@ package org.opendaylight.restconf.nb.rfc8040.rests.services.impl; import static java.util.Objects.requireNonNull; +import javax.ws.rs.GET; import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; -import org.opendaylight.restconf.nb.rfc8040.rests.services.api.RootResourceDiscoveryService; +import org.opendaylight.restconf.nb.rfc8040.MediaTypes; +/** + * Controller for determining the {@code Root Resource} of the RESTCONF API. This interface serves up a + * {@code host-meta} document as defined in + * RFC6415 section 3. + */ +// FIXME: this really should be the endpoint's job to aggregate these. Once JAX-RS (or any other wiring) can provide it, +// integrate with that framework, so we co-exist with others. @Path("/") -public final class RootResourceDiscoveryServiceImpl implements RootResourceDiscoveryService { +public final class RootResourceDiscoveryServiceImpl { private final String restconfRoot; public RootResourceDiscoveryServiceImpl(final String restconfRoot) { this.restconfRoot = requireNonNull(restconfRoot); } - @Override + /** + * Root Resource Discovery as an XRD. + * + * @see RFC8040, section 3.1 + */ + @GET + @Path("/host-meta") + @Produces(MediaTypes.APPLICATION_XRD_XML) public Response readXrdData() { return Response.status(Status.OK) .entity("\n" + "\n" - + " \n" + + " \n" + "") .build(); } - @Override + /** + * Root Resource Discovery as a JRD. + * + * @see RFC6415, appendix A + */ + @GET + @Path("/host-meta.json") + @Produces(MediaType.APPLICATION_JSON) public Response readJsonData() { return Response.status(Status.OK) .entity("{\n" - + " \"links\" :\n" - + " {\n" - + " \"rel\" : \"restconf\",\n" - + " \"href\" : \"/" + restconfRoot + "\"\n" - + " }\n" + + " \"links\" : {\n" + + " \"rel\" : \"restconf\",\n" + + " \"href\" : \"/" + restconfRoot + "\"\n" + + " }\n" + "}") .build(); } diff --git a/restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RootResourceDiscoveryServiceImplTest.java b/restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RootResourceDiscoveryServiceImplTest.java new file mode 100644 index 0000000000..9b1d73d254 --- /dev/null +++ b/restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RootResourceDiscoveryServiceImplTest.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.restconf.nb.rfc8040.rests.services.impl; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +public class RootResourceDiscoveryServiceImplTest { + private final RootResourceDiscoveryServiceImpl svc = new RootResourceDiscoveryServiceImpl("fooBarBaz"); + + @Test + public void testJsonData() { + final var response = svc.readJsonData(); + assertEquals(200, response.getStatus()); + assertEquals(""" + { + "links" : { + "rel" : "restconf", + "href" : "/fooBarBaz" + } + }""", response.getEntity()); + } + + @Test + public void testXrdData() { + final var response = svc.readXrdData(); + assertEquals(200, response.getStatus()); + assertEquals(""" + + + + """, response.getEntity()); + } +} diff --git a/restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RootResourceDiscoveryServiceTest.java b/restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RootResourceDiscoveryServiceTest.java deleted file mode 100644 index b705292da9..0000000000 --- a/restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RootResourceDiscoveryServiceTest.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.restconf.nb.rfc8040.rests.services.impl; - -import static org.junit.Assert.assertEquals; - -import org.junit.Test; - -public class RootResourceDiscoveryServiceTest { - @Test - public void testJsonData() { - assertEquals("{\n" - + " \"links\" :\n" - + " {\n" - + " \"rel\" : \"restconf\",\n" - + " \"href\" : \"/fooBarBaz\"\n" - + " }\n" - + "}", new RootResourceDiscoveryServiceImpl("fooBarBaz").readJsonData().getEntity()); - } - - @Test - public void testXrdData() { - assertEquals("\n" - + "\n" - + " \n" - + "", new RootResourceDiscoveryServiceImpl("fooBarBaz").readXrdData().getEntity()); - } -} -- 2.36.6