Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit 807973d

Browse files
SORMAS-Foundation#3372 create new external resource config, move external resources to separate package
1 parent c230ac4 commit 807973d

3 files changed

Lines changed: 84 additions & 17 deletions

File tree

sormas-rest/src/main/java/de/symeda/sormas/rest/RestConfig.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@
1717
*******************************************************************************/
1818
package de.symeda.sormas.rest;
1919

20+
import com.google.common.collect.Sets;
21+
import de.symeda.sormas.rest.external.ExternalVisitsResource;
22+
import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource;
23+
import io.swagger.v3.oas.integration.SwaggerConfiguration;
24+
import io.swagger.v3.oas.models.OpenAPI;
25+
import io.swagger.v3.oas.models.info.Contact;
26+
import io.swagger.v3.oas.models.info.Info;
27+
import io.swagger.v3.oas.models.info.License;
2028
import org.glassfish.jersey.jackson.JacksonFeature;
2129
import org.glassfish.jersey.server.ResourceConfig;
2230
import org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature;
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package de.symeda.sormas.rest.external;
2+
3+
import javax.servlet.ServletConfig;
4+
import javax.ws.rs.ApplicationPath;
5+
import javax.ws.rs.core.Context;
6+
7+
import io.swagger.v3.jaxrs2.Reader;
8+
import io.swagger.v3.jaxrs2.integration.JaxrsOpenApiContextBuilder;
9+
import io.swagger.v3.oas.integration.OpenApiConfigurationException;
10+
import org.glassfish.jersey.jackson.JacksonFeature;
11+
import org.glassfish.jersey.server.ResourceConfig;
12+
import org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature;
13+
14+
import com.google.common.collect.Sets;
15+
16+
import de.symeda.sormas.rest.swagger.SwaggerConfig;
17+
import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource;
18+
import io.swagger.v3.oas.integration.SwaggerConfiguration;
19+
import io.swagger.v3.oas.models.OpenAPI;
20+
import io.swagger.v3.oas.models.info.Contact;
21+
import io.swagger.v3.oas.models.info.Info;
22+
import io.swagger.v3.oas.models.info.License;
23+
24+
/**
25+
* Resource configuration used only for external resources i.e. for external systems which communicate with SORMAS
26+
* Separate from the other resource configuration in order to limit create the swagger documentation only for resources in this package
27+
*/
28+
@ApplicationPath("/")
29+
public class ExternalRestResourceConfig extends ResourceConfig {
30+
31+
@Context
32+
private ServletConfig servletConfig;
33+
34+
public ExternalRestResourceConfig() {
35+
36+
super(ExternalRestResourceConfig.class);
37+
38+
packages(getClass().getPackage().getName());
39+
register(RolesAllowedDynamicFeature.class);
40+
register(JacksonFeature.class);
41+
42+
SwaggerConfig.init();
43+
44+
Info info = new Info().title("SORMAS external symptom journal API")
45+
.description(
46+
"The purpose of this API is to enable communication between SORMAS and other symptom journals. "
47+
+ "Only users with the role ``REST_EXTERNAL_VISITS_USER`` are authorized to use the endpoints. "
48+
+ "If you would like to receive access, please contact the team to have a user set up. "
49+
+ "Authentication is done using basic auth, with the user and password.")
50+
.contact(new Contact().url("https://gitter.im/SORMAS-Project/dev-support"))
51+
.license(new License().name("GNU General Public License").url("https://www.gnu.org/licenses/"));
52+
53+
Reader reader = new Reader(new OpenAPI().info(info));
54+
OpenAPI openAPI = reader.read(ExternalVisitsResource.class);
55+
SwaggerConfiguration openAPIConfiguration = new SwaggerConfiguration().prettyPrint(true)
56+
.openAPI(openAPI)
57+
.resourceClasses(Sets.newHashSet(ExternalVisitsResource.class.getSimpleName()));
58+
OpenApiResource openApiResource = new OpenApiResource();
59+
openApiResource.setOpenApiConfiguration(openAPIConfiguration);
60+
register(openApiResource);
61+
}
62+
}

sormas-rest/src/main/java/de/symeda/sormas/rest/ExternalVisitsResource.java renamed to sormas-rest/src/main/java/de/symeda/sormas/rest/external/ExternalVisitsResource.java

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,30 @@
1-
package de.symeda.sormas.rest;
1+
package de.symeda.sormas.rest.external;
2+
3+
import java.util.Date;
4+
import java.util.List;
5+
6+
import javax.annotation.security.RolesAllowed;
7+
import javax.ws.rs.Consumes;
8+
import javax.ws.rs.GET;
9+
import javax.ws.rs.POST;
10+
import javax.ws.rs.Path;
11+
import javax.ws.rs.PathParam;
12+
import javax.ws.rs.Produces;
13+
import javax.ws.rs.core.MediaType;
214

315
import de.symeda.sormas.api.FacadeProvider;
416
import de.symeda.sormas.api.PushResult;
517
import de.symeda.sormas.api.person.JournalPersonDto;
618
import de.symeda.sormas.api.person.PersonFollowUpEndDto;
7-
import de.symeda.sormas.api.person.PersonDto;
8-
import de.symeda.sormas.api.person.PersonQuarantineEndDto;
919
import de.symeda.sormas.api.person.PersonSymptomJournalStatusDto;
1020
import de.symeda.sormas.api.visit.ExternalVisitDto;
21+
import de.symeda.sormas.rest.EntityDtoResource;
1122
import io.swagger.v3.oas.annotations.Operation;
12-
import io.swagger.v3.oas.annotations.Parameter;
13-
import io.swagger.v3.oas.annotations.enums.ParameterIn;
1423
import io.swagger.v3.oas.annotations.media.Content;
1524
import io.swagger.v3.oas.annotations.media.Schema;
1625
import io.swagger.v3.oas.annotations.parameters.RequestBody;
1726
import io.swagger.v3.oas.annotations.responses.ApiResponse;
1827

19-
import javax.annotation.security.RolesAllowed;
20-
import javax.ws.rs.Consumes;
21-
import javax.ws.rs.GET;
22-
import javax.ws.rs.POST;
23-
import javax.ws.rs.Path;
24-
import javax.ws.rs.PathParam;
25-
import javax.ws.rs.Produces;
26-
import javax.ws.rs.QueryParam;
27-
import javax.ws.rs.core.MediaType;
28-
import java.util.Date;
29-
import java.util.List;
30-
3128
@Path("/visits-external")
3229
@Produces(MediaType.APPLICATION_JSON + "; charset=UTF-8")
3330
@Consumes(MediaType.APPLICATION_JSON + "; charset=UTF-8")

0 commit comments

Comments
 (0)