Repository: syncope Updated Branches: refs/heads/2_0_X de3696469 -> 799f079f1 refs/heads/master 2d2702a0a -> 772206a4c
Small improvements to build-tools, including Swagger Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/3e2ebb92 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/3e2ebb92 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/3e2ebb92 Branch: refs/heads/2_0_X Commit: 3e2ebb925774d3542e40d54983395ec785f4710a Parents: de36964 Author: Francesco Chicchiriccò <ilgro...@apache.org> Authored: Thu Mar 1 15:47:13 2018 +0100 Committer: Francesco Chicchiriccò <ilgro...@apache.org> Committed: Thu Mar 1 15:47:13 2018 +0100 ---------------------------------------------------------------------- fit/build-tools/pom.xml | 16 +++++++++++++++- .../syncope/fit/buildtools/cxf/UserService.java | 3 ++- .../fit/buildtools/cxf/UserServiceImpl.java | 13 +++++++++++-- .../META-INF/cxf/org.apache.cxf.Logger | 1 + .../src/main/resources/cxfContext.xml | 20 ++++++++++++++++++++ 5 files changed, 49 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/3e2ebb92/fit/build-tools/pom.xml ---------------------------------------------------------------------- diff --git a/fit/build-tools/pom.xml b/fit/build-tools/pom.xml index 4c63a9c..95f2365 100644 --- a/fit/build-tools/pom.xml +++ b/fit/build-tools/pom.xml @@ -45,6 +45,11 @@ under the License. </dependency> <dependency> + <groupId>javax.validation</groupId> + <artifactId>validation-api</artifactId> + </dependency> + + <dependency> <groupId>org.apache.directory.server</groupId> <artifactId>apacheds-all</artifactId> </dependency> @@ -88,13 +93,22 @@ under the License. <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-rs-service-description</artifactId> - </dependency> + </dependency> + <dependency> + <groupId>org.apache.cxf</groupId> + <artifactId>cxf-rt-rs-service-description-swagger</artifactId> + </dependency> <dependency> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-json-provider</artifactId> </dependency> <dependency> + <groupId>org.webjars</groupId> + <artifactId>swagger-ui</artifactId> + </dependency> + + <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> http://git-wip-us.apache.org/repos/asf/syncope/blob/3e2ebb92/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/cxf/UserService.java ---------------------------------------------------------------------- diff --git a/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/cxf/UserService.java b/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/cxf/UserService.java index 5d64cfc..f02cae4 100644 --- a/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/cxf/UserService.java +++ b/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/cxf/UserService.java @@ -30,6 +30,7 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; @Path("users") public interface UserService { @@ -44,7 +45,7 @@ public interface UserService { @POST @Consumes({ MediaType.APPLICATION_JSON }) - void create(User user); + Response create(User user); @PUT @Path("{key}") http://git-wip-us.apache.org/repos/asf/syncope/blob/3e2ebb92/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/cxf/UserServiceImpl.java ---------------------------------------------------------------------- diff --git a/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/cxf/UserServiceImpl.java b/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/cxf/UserServiceImpl.java index dea0f63..6b04515 100644 --- a/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/cxf/UserServiceImpl.java +++ b/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/cxf/UserServiceImpl.java @@ -23,8 +23,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; +import javax.ws.rs.ClientErrorException; import javax.ws.rs.ForbiddenException; import javax.ws.rs.NotFoundException; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.UriInfo; import org.springframework.stereotype.Service; @Service @@ -32,6 +36,9 @@ public class UserServiceImpl implements UserService { private static final Map<UUID, User> USERS = new HashMap<UUID, User>(); + @Context + private UriInfo uriInfo; + @Override public List<User> list() { return new ArrayList<>(USERS.values()); @@ -47,14 +54,16 @@ public class UserServiceImpl implements UserService { } @Override - public void create(final User user) { + public Response create(final User user) { if (user.getKey() == null) { user.setKey(UUID.randomUUID()); } if (USERS.containsKey(user.getKey())) { - throw new IllegalArgumentException("User already exists: " + user.getKey()); + throw new ClientErrorException("User already exists: " + user.getKey(), Response.Status.CONFLICT); } USERS.put(user.getKey(), user); + + return Response.created(uriInfo.getAbsolutePathBuilder().path(user.getKey().toString()).build()).build(); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/3e2ebb92/fit/build-tools/src/main/resources/META-INF/cxf/org.apache.cxf.Logger ---------------------------------------------------------------------- diff --git a/fit/build-tools/src/main/resources/META-INF/cxf/org.apache.cxf.Logger b/fit/build-tools/src/main/resources/META-INF/cxf/org.apache.cxf.Logger new file mode 100644 index 0000000..6e7bd36 --- /dev/null +++ b/fit/build-tools/src/main/resources/META-INF/cxf/org.apache.cxf.Logger @@ -0,0 +1 @@ +org.apache.cxf.common.logging.Slf4jLogger http://git-wip-us.apache.org/repos/asf/syncope/blob/3e2ebb92/fit/build-tools/src/main/resources/cxfContext.xml ---------------------------------------------------------------------- diff --git a/fit/build-tools/src/main/resources/cxfContext.xml b/fit/build-tools/src/main/resources/cxfContext.xml index 9a6c959..7e53a71 100644 --- a/fit/build-tools/src/main/resources/cxfContext.xml +++ b/fit/build-tools/src/main/resources/cxfContext.xml @@ -38,6 +38,23 @@ under the License. <jaxws:endpoint id="soapProvisioning" address="/soap" implementor="#provisioningImpl"/> + <bean id="swagger2customizer" class="org.apache.cxf.jaxrs.swagger.Swagger2Customizer"> + <property name="dynamicBasePath" value="true"/> + <property name="replaceTags" value="false"/> + </bean> + <bean id="swagger2Feature" class="org.apache.cxf.jaxrs.swagger.Swagger2Feature"> + <property name="title" value="Apache Syncope FIT Build Tools"/> + <property name="version" value="${syncope.version}"/> + <property name="description" value="Apache Syncope ${syncope.version}"/> + <property name="contact" value="d...@syncope.apache.org"/> + + <property name="resourcePackage" value="org.apache.syncope.fit.buildtools.cxf"/> + <property name="scanAllResources" value="true"/> + <property name="activateOnlyIfJaxrsSupported" value="true"/> + + <property name="customizer" ref="swagger2customizer"/> + </bean> + <bean id="jsonProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider"/> <jaxrs:server id="restProvisioning" address="/rest" basePackages="org.apache.syncope.fit.buildtools.cxf" @@ -45,6 +62,9 @@ under the License. <jaxrs:providers> <ref bean="jsonProvider"/> </jaxrs:providers> + <jaxrs:features> + <ref bean="swagger2Feature"/> + </jaxrs:features> </jaxrs:server> </beans>