You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2018/03/02 11:47:27 UTC
[08/11] syncope git commit: Small improvements to build-tools,
including Swagger
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/e073cc43
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/e073cc43
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/e073cc43
Branch: refs/heads/master
Commit: e073cc43225bbeb4c8ea670750b8f5a0829d6676
Parents: d505627
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Mar 1 15:47:13 2018 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Mar 2 12:13:18 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 | 25 ++++++++++++++++++++
5 files changed, 54 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/e073cc43/fit/build-tools/pom.xml
----------------------------------------------------------------------
diff --git a/fit/build-tools/pom.xml b/fit/build-tools/pom.xml
index 9f0d783..a4172e7 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-openapi-v3</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/e073cc43/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/e073cc43/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/e073cc43/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/e073cc43/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..7384e55 100644
--- a/fit/build-tools/src/main/resources/cxfContext.xml
+++ b/fit/build-tools/src/main/resources/cxfContext.xml
@@ -38,6 +38,28 @@ under the License.
<jaxws:endpoint id="soapProvisioning" address="/soap" implementor="#provisioningImpl"/>
+ <bean id="openApiCustomizer" class="org.apache.cxf.jaxrs.openapi.OpenApiCustomizer">
+ <property name="dynamicBasePath" value="true"/>
+ <property name="replaceTags" value="false"/>
+ </bean>
+ <bean id="openapiFeature" class="org.apache.cxf.jaxrs.openapi.OpenApiFeature">
+ <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="contactName" value="The Apache Syncope community"/>
+ <property name="contactEmail" value="dev@syncope.apache.org"/>
+ <property name="contactUrl" value="http://syncope.apache.org"/>
+
+ <property name="scan" value="false"/>
+ <property name="resourcePackages">
+ <set>
+ <value>org.apache.syncope.fit.buildtools.cxf</value>
+ </set>
+ </property>
+
+ <property name="customizer" ref="openApiCustomizer"/>
+ </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 +67,9 @@ under the License.
<jaxrs:providers>
<ref bean="jsonProvider"/>
</jaxrs:providers>
+ <jaxrs:features>
+ <ref bean="openapiFeature"/>
+ </jaxrs:features>
</jaxrs:server>
</beans>