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>

Reply via email to