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 2016/08/04 10:06:24 UTC

[1/3] syncope git commit: Upgrading Swagger UI

Repository: syncope
Updated Branches:
  refs/heads/master 4a6bd031d -> 69df3afa3


Upgrading Swagger UI


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/a40d1aa3
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/a40d1aa3
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/a40d1aa3

Branch: refs/heads/master
Commit: a40d1aa313e12c91641caf8d09b60e269319292d
Parents: 4a6bd03
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Thu Aug 4 11:42:24 2016 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Thu Aug 4 11:42:24 2016 +0200

----------------------------------------------------------------------
 .../syncope/core/rest/cxf/Swagger2Feature.java  | 271 +++++++++++++++++++
 .../META-INF/resources/swagger/index.html       |  81 +++---
 pom.xml                                         |   2 +-
 3 files changed, 306 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/a40d1aa3/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Feature.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Feature.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Feature.java
index fa7ce9a..1578032 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Feature.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/Swagger2Feature.java
@@ -18,9 +18,54 @@
  */
 package org.apache.syncope.core.rest.cxf;
 
+import io.swagger.jaxrs.config.BeanConfig;
+import io.swagger.jaxrs.config.DefaultReaderConfig;
+import io.swagger.jaxrs.config.ReaderConfig;
+import io.swagger.jaxrs.listing.ApiListingResource;
+import io.swagger.jaxrs.listing.SwaggerSerializers;
+import io.swagger.models.Operation;
+import io.swagger.models.Path;
+import io.swagger.models.Swagger;
+import io.swagger.models.Tag;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.net.URI;
 import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Pattern;
+import javax.servlet.ServletContext;
+import javax.ws.rs.HttpMethod;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.container.PreMatching;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.UriInfo;
+import org.apache.commons.collections4.ComparatorUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.apache.commons.lang3.tuple.Pair;
 import org.apache.cxf.Bus;
 import org.apache.cxf.endpoint.Server;
+import org.apache.cxf.jaxrs.JAXRSServiceFactoryBean;
+import org.apache.cxf.jaxrs.ext.MessageContext;
+import org.apache.cxf.jaxrs.model.ClassResourceInfo;
+import org.apache.cxf.jaxrs.model.OperationResourceInfo;
+import org.apache.cxf.jaxrs.model.doc.DocumentationProvider;
+import org.apache.cxf.jaxrs.provider.ServerProviderFactory;
+import org.apache.cxf.jaxrs.utils.InjectionUtils;
+import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 
 /**
  * Automatically loads available javadocs from class loader (when {@link java.net.URLClassLoader}).
@@ -37,4 +82,230 @@ public class Swagger2Feature extends org.apache.cxf.jaxrs.swagger.Swagger2Featur
         super.initialize(server, bus);
     }
 
+    // ------- Remove the code below this point when CXF-6990 is part of next CXF release (3.1.8?) -----
+    @Override
+    protected void addSwaggerResource(final Server server, final Bus bus) {
+        List<Object> swaggerResources = new LinkedList<>();
+        ApiListingResource apiListingResource = new ApiListingResource();
+        swaggerResources.add(apiListingResource);
+        if (SWAGGER_UI_RESOURCE_ROOT != null) {
+            swaggerResources.add(new SwaggerUIService());
+            bus.setProperty("swagger.service.ui.available", "true");
+        }
+        JAXRSServiceFactoryBean sfb =
+                (JAXRSServiceFactoryBean) server.getEndpoint().get(JAXRSServiceFactoryBean.class.getName());
+        sfb.setResourceClassesFromBeans(swaggerResources);
+
+        List<ClassResourceInfo> cris = sfb.getClassResourceInfo();
+
+        List<Object> providers = new ArrayList<>();
+        for (ClassResourceInfo cri : cris) {
+            if (ApiListingResource.class == cri.getResourceClass()) {
+                InjectionUtils.injectContextProxies(cri, apiListingResource);
+            }
+        }
+        if (SWAGGER_UI_RESOURCE_ROOT != null) {
+            providers.add(new SwaggerUIFilter());
+        }
+        providers.add(new Swagger2Serializers(dynamicBasePath, replaceTags, javadocProvider, cris));
+        providers.add(new ReaderConfigFilter());
+        ((ServerProviderFactory) server.getEndpoint().get(
+                ServerProviderFactory.class.getName())).setUserProviders(providers);
+
+        BeanConfig beanConfig = new BeanConfig();
+        beanConfig.setResourcePackage(getResourcePackage());
+        beanConfig.setVersion(getVersion());
+        String basePath = getBasePath();
+        beanConfig.setBasePath(basePath);
+        beanConfig.setHost(getHost());
+        beanConfig.setSchemes(getSchemes());
+        beanConfig.setTitle(getTitle());
+        beanConfig.setDescription(getDescription());
+        beanConfig.setContact(getContact());
+        beanConfig.setLicense(getLicense());
+        beanConfig.setLicenseUrl(getLicenseUrl());
+        beanConfig.setTermsOfServiceUrl(getTermsOfServiceUrl());
+        beanConfig.setScan(isScan());
+        beanConfig.setPrettyPrint(isPrettyPrint());
+        beanConfig.setFilterClass(getFilterClass());
+    }
+
+    protected class ReaderConfigFilter implements ContainerRequestFilter {
+
+        @Context
+        protected MessageContext mc;
+
+        @Override
+        public void filter(final ContainerRequestContext requestContext) throws IOException {
+            ServletContext servletContext = mc.getServletContext();
+            if (servletContext != null && servletContext.getAttribute(ReaderConfig.class.getName()) == null) {
+                if (mc.getServletConfig() != null
+                        && Boolean.valueOf(mc.getServletConfig().getInitParameter("scan.all.resources"))) {
+                    addReaderConfig(mc.getServletConfig().getInitParameter("ignore.routes"));
+                } else if (isScanAllResources()) {
+                    addReaderConfig(getIgnoreRoutes());
+                }
+            }
+        }
+
+        protected void addReaderConfig(final String ignoreRoutesParam) {
+            DefaultReaderConfig rc = new DefaultReaderConfig();
+            rc.setScanAllResources(true);
+            if (ignoreRoutesParam != null) {
+                Set<String> routes = new LinkedHashSet<>();
+                for (String route : StringUtils.split(ignoreRoutesParam, ",")) {
+                    routes.add(route.trim());
+                }
+                rc.setIgnoredRoutes(routes);
+            }
+            mc.getServletContext().setAttribute(ReaderConfig.class.getName(), rc);
+        }
+    }
+
+    @PreMatching
+    protected static class SwaggerUIFilter implements ContainerRequestFilter {
+
+        private static final Pattern PATTERN =
+                Pattern.compile(".*[.]js|/css/.*|/images/.*|/lib/.*|.*ico|/fonts/.*");
+
+        @Override
+        public void filter(final ContainerRequestContext rc) throws IOException {
+            if (HttpMethod.GET.equals(rc.getRequest().getMethod())) {
+                UriInfo ui = rc.getUriInfo();
+                String path = "/" + ui.getPath();
+                if (PATTERN.matcher(path).matches()) {
+                    rc.setRequestUri(URI.create("api-docs" + path));
+                }
+            }
+        }
+    }
+
+    protected static class Swagger2Serializers extends SwaggerSerializers {
+
+        protected final boolean dynamicBasePath;
+
+        protected final boolean replaceTags;
+
+        protected final DocumentationProvider javadocProvider;
+
+        protected final List<ClassResourceInfo> cris;
+
+        public Swagger2Serializers(
+                final boolean dynamicBasePath,
+                final boolean replaceTags,
+                final DocumentationProvider javadocProvider,
+                final List<ClassResourceInfo> cris) {
+
+            super();
+
+            this.dynamicBasePath = dynamicBasePath;
+            this.replaceTags = replaceTags;
+            this.javadocProvider = javadocProvider;
+            this.cris = cris;
+        }
+
+        @Override
+        public void writeTo(
+                final Swagger data,
+                final Class<?> type,
+                final Type genericType,
+                final Annotation[] annotations,
+                final MediaType mediaType,
+                final MultivaluedMap<String, Object> headers,
+                final OutputStream out) throws IOException {
+
+            if (dynamicBasePath) {
+                MessageContext ctx = JAXRSUtils.createContextValue(
+                        JAXRSUtils.getCurrentMessage(), null, MessageContext.class);
+                data.setBasePath(StringUtils.substringBeforeLast(ctx.getHttpServletRequest().
+                        getRequestURI(), "/"));
+            }
+
+            if (replaceTags || javadocProvider != null) {
+                Map<String, ClassResourceInfo> operations = new HashMap<>();
+                Map<Pair<String, String>, OperationResourceInfo> methods = new HashMap<>();
+                for (ClassResourceInfo cri : cris) {
+                    for (OperationResourceInfo ori : cri.getMethodDispatcher().getOperationResourceInfos()) {
+                        String normalizedPath = getNormalizedPath(
+                                cri.getURITemplate().getValue(), ori.getURITemplate().getValue());
+
+                        operations.put(normalizedPath, cri);
+                        methods.put(ImmutablePair.of(ori.getHttpMethod(), normalizedPath), ori);
+                    }
+                }
+
+                if (replaceTags && data.getTags() != null) {
+                    data.getTags().clear();
+                }
+                for (final Map.Entry<String, Path> entry : data.getPaths().entrySet()) {
+                    Tag tag = null;
+                    if (replaceTags && operations.containsKey(entry.getKey())) {
+                        ClassResourceInfo cri = operations.get(entry.getKey());
+
+                        tag = new Tag();
+                        tag.setName(cri.getURITemplate().getValue());
+                        if (javadocProvider != null) {
+                            tag.setDescription(javadocProvider.getClassDoc(cri));
+                        }
+
+                        data.addTag(tag);
+                    }
+
+                    for (Map.Entry<io.swagger.models.HttpMethod, Operation> subentry : entry.getValue().
+                            getOperationMap().entrySet()) {
+                        if (replaceTags && tag != null) {
+                            subentry.getValue().setTags(Collections.singletonList(tag.getName()));
+                        }
+
+                        Pair<String, String> key = ImmutablePair.of(subentry.getKey().name(), entry.getKey());
+                        if (methods.containsKey(key) && javadocProvider != null) {
+                            OperationResourceInfo ori = methods.get(key);
+
+                            subentry.getValue().setSummary(javadocProvider.getMethodDoc(ori));
+                            for (int i = 0; i < subentry.getValue().getParameters().size(); i++) {
+                                subentry.getValue().getParameters().get(i).
+                                        setDescription(javadocProvider.getMethodParameterDoc(ori, i));
+                            }
+
+                            if (subentry.getValue().getResponses() != null
+                                    && !subentry.getValue().getResponses().isEmpty()) {
+
+                                subentry.getValue().getResponses().entrySet().iterator().next().getValue().
+                                        setDescription(javadocProvider.getMethodResponseDoc(ori));
+                            }
+                        }
+                    }
+                }
+            }
+            if (replaceTags && data.getTags() != null) {
+                Collections.sort(data.getTags(), new Comparator<Tag>() {
+
+                    @Override
+                    public int compare(final Tag tag1, final Tag tag2) {
+                        return ComparatorUtils.<String>naturalComparator().compare(tag1.getName(), tag2.getName());
+                    }
+                });
+            }
+
+            super.writeTo(data, type, genericType, annotations, mediaType, headers, out);
+        }
+
+        protected String getNormalizedPath(final String classResourcePath, final String operationResourcePath) {
+            StringBuilder normalizedPath = new StringBuilder();
+
+            String[] segments = org.apache.commons.lang3.StringUtils.split(classResourcePath + operationResourcePath,
+                    "/");
+            for (String segment : segments) {
+                if (!org.apache.commons.lang3.StringUtils.isEmpty(segment)) {
+                    normalizedPath.append("/").append(segment);
+                }
+            }
+            // Adapt to Swagger's path expression
+            if (normalizedPath.toString().endsWith(":.*}")) {
+                normalizedPath.setLength(normalizedPath.length() - 4);
+                normalizedPath.append('}');
+            }
+            return StringUtils.EMPTY.equals(normalizedPath.toString()) ? "/" : normalizedPath.toString();
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/a40d1aa3/ext/swagger-ui/src/main/resources/META-INF/resources/swagger/index.html
----------------------------------------------------------------------
diff --git a/ext/swagger-ui/src/main/resources/META-INF/resources/swagger/index.html b/ext/swagger-ui/src/main/resources/META-INF/resources/swagger/index.html
index fabe736..889cd92 100644
--- a/ext/swagger-ui/src/main/resources/META-INF/resources/swagger/index.html
+++ b/ext/swagger-ui/src/main/resources/META-INF/resources/swagger/index.html
@@ -31,15 +31,18 @@ under the License.
   <link href='css/screen.css' media='screen' rel='stylesheet' type='text/css'/>
   <link href='css/reset.css' media='print' rel='stylesheet' type='text/css'/>
   <link href='css/print.css' media='print' rel='stylesheet' type='text/css'/>
+
+  <script src='lib/object-assign-pollyfill.js' type='text/javascript'></script>
   <script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>
   <script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
   <script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>
   <script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script>
   <script src='lib/handlebars-2.0.0.js' type='text/javascript'></script>
-  <script src='lib/underscore-min.js' type='text/javascript'></script>
+  <script src='lib/lodash.min.js' type='text/javascript'></script>
   <script src='lib/backbone-min.js' type='text/javascript'></script>
   <script src='swagger-ui.js' type='text/javascript'></script>
-  <script src='lib/highlight.7.3.pack.js' type='text/javascript'></script>
+  <script src='lib/highlight.9.1.0.pack.js' type='text/javascript'></script>
+  <script src='lib/highlight.9.1.0.pack_extended.js' type='text/javascript'></script>
   <script src='lib/jsoneditor.min.js' type='text/javascript'></script>
   <script src='lib/marked.js' type='text/javascript'></script>
   <script src='lib/swagger-oauth.js' type='text/javascript'></script>
@@ -51,15 +54,19 @@ under the License.
 
   <script type="text/javascript">
     $(function () {
-        // <ApacheSyncope>
-        /*var url = window.location.search.match(/url=([^&]+)/);
+      // <ApacheSyncope>
+      /*var url = window.location.search.match(/url=([^&]+)/);
       if (url && url.length > 1) {
         url = decodeURIComponent(url[1]);
       } else {
         url = "http://petstore.swagger.io/v2/swagger.json";
-         }*/
-        var url = window.location.href.substring(0, window.location.href.lastIndexOf('/')) + "/../rest/swagger.json";
-        // </ApacheSyncope>
+      }*/
+      var url = window.location.href.substring(0, window.location.href.lastIndexOf('/')) + "/../rest/swagger.json";
+      // </ApacheSyncope>
+
+      hljs.configure({
+        highlightSizeThreshold: 5000
+      });
 
       // Pre load translate...
       if(window.SwaggerTranslator) {
@@ -75,7 +82,7 @@ under the License.
               clientId: "your-client-id",
               clientSecret: "your-client-secret-if-required",
               realm: "your-realms",
-              appName: "your-app-name", 
+              appName: "your-app-name",
               scopeSeparator: ",",
               additionalQueryStringParams: {}
             });
@@ -84,11 +91,7 @@ under the License.
           if(window.SwaggerTranslator) {
             window.SwaggerTranslator.translate();
           }
-
-          $('pre code').each(function(i, e) {
-            hljs.highlightBlock(e)
-          });
-
+          
           addApiKeyAuthorization();
         },
         onFailure: function(data) {
@@ -96,43 +99,27 @@ under the License.
         },
         docExpansion: "none",
         jsonEditor: false,
-        apisSorter: "alpha",
         defaultModelRendering: 'schema',
         showRequestHeaders: false
       });
 
-        function addApiKeyAuthorization() {
-          // <ApacheSyncope>
-          /*var key = encodeURIComponent($('#input_apiKey')[0].value);
-           if (key && key.trim() != "") {
-            var apiKeyAuth = new SwaggerClient.ApiKeyAuthorization("api_key", key, "query");
-            window.swaggerUi.api.clientAuthorizations.add("api_key", apiKeyAuth);
-            log("added key " + key);
-           }*/
-          var username = $('#input_username').val().trim();
-          var password = $('#input_password').val().trim();
-          if (username !== "" && password !== "") {
-            window.swaggerUi.api.clientAuthorizations.add(
+      // <ApacheSyncope>
+      function addApiKeyAuthorization() {
+        var username = $('#input_username').val().trim();
+        var password = $('#input_password').val().trim();
+        if (username !== "" && password !== "") {
+          window.swaggerUi.api.clientAuthorizations.add(
                     "basicAuth", new SwaggerClient.PasswordAuthorization(username, password));
         }
-          // </ApacheSyncope>
       }
 
-        // <ApacheSyncope>
-        //$('#input_apiKey').change(addApiKeyAuthorization);
-        $("#input_username").blur(function () {
+      $("#input_username").blur(function () {
           addApiKeyAuthorization();
-        });
-        $("#input_password").blur(function () {
+      });
+      $("#input_password").blur(function () {
           addApiKeyAuthorization();
-        });
-        // </ApacheSyncope>
-
-      // if you have an apiKey you would like to pre-populate on the page for demonstration purposes...
-      /*
-        var apiKey = "myApiKeyXXXX123456789";
-        $('#input_apiKey').val(apiKey);
-      */
+      });
+      // </ApacheSyncope>
 
       window.swaggerUi.load();
 
@@ -148,15 +135,15 @@ under the License.
 <body class="swagger-section">
 <div id='header'>
   <div class="swagger-ui-wrap">
-    <a id="logo" href="http://swagger.io">swagger</a>
+    <a id="logo" href="http://swagger.io"><img class="logo__img" alt="swagger" height="30" width="30" src="images/logo_small.png" /><span class="logo__title">swagger</span></a>
     <form id='api_selector'>
-       <!-- <ApacheSyncope -->
+      <!-- <ApacheSyncope -->
       <!--<div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl" type="text"/></div>-->
-      <!--<div class='input'><input placeholder="api_key" id="input_apiKey" name="apiKey" type="text"/></div>-->
-      <!--<div class='input'><a id="explore" href="#" data-sw-translate>Explore</a></div>-->
-          <div class='input'><input placeholder="username" id="input_username" name="username" type="text"/></div>
-          <div class='input'><input placeholder="password" id="input_password" name="password" type="password"/></div>
-          <!-- </ApacheSyncope -->
+      <div class='input'><input placeholder="username" id="input_username" name="username" type="text"/></div>
+      <div id='auth_container'></div>
+      <!--<div class='input'><a id="explore" class="header__btn" href="#" data-sw-translate>Explore</a></div>-->
+      <div class='input'><input placeholder="password" id="input_password" name="password" type="password"/></div>
+      <!-- </ApacheSyncope -->
     </form>
   </div>
 </div>

http://git-wip-us.apache.org/repos/asf/syncope/blob/a40d1aa3/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index be678a4..874ea82 100644
--- a/pom.xml
+++ b/pom.xml
@@ -393,7 +393,7 @@ under the License.
     <activiti-modeler.directory>${project.build.directory}/activiti-modeler</activiti-modeler.directory>
 
     <swagger-core.version>1.5.9</swagger-core.version>    
-    <swagger-ui.version>2.1.4</swagger-ui.version>
+    <swagger-ui.version>2.1.5</swagger-ui.version>
         
     <jquery.version>2.2.4</jquery.version>
     <jquery-ui.version>1.11.4</jquery-ui.version>


[3/3] syncope git commit: Updating site content with doc build instruction + buildbot

Posted by il...@apache.org.
Updating site content with doc build instruction + buildbot


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/69df3afa
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/69df3afa
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/69df3afa

Branch: refs/heads/master
Commit: 69df3afa3b57567af93e76d7b2c50e7a66c630a0
Parents: 7bd4656
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Thu Aug 4 12:06:16 2016 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Thu Aug 4 12:06:16 2016 +0200

----------------------------------------------------------------------
 src/site/xdoc/building.xml    | 16 ++++++++++++----
 src/site/xdoc/integration.xml |  6 ++++++
 2 files changed, 18 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/69df3afa/src/site/xdoc/building.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/building.xml b/src/site/xdoc/building.xml
index 75126da..88ad666 100644
--- a/src/site/xdoc/building.xml
+++ b/src/site/xdoc/building.xml
@@ -94,10 +94,10 @@ under the License.
         <h4>JRebel</h4>
         As with Debug, but with <a href="http://zeroturnaround.com/software/jrebel/">JRebel</a> features enabled.
         <source>$ export REBEL_HOME=/opt/jrebel
-          $ mvn -Pjrebel,all</source>
+$ mvn -Pjrebel,all</source>
         or, without Activiti and Camel support
         <source>$ export REBEL_HOME=/opt/jrebel
-          $ mvn -Pjrebel</source>
+$ mvn -Pjrebel</source>
 
         <h4>DBMSes</h4>
 
@@ -158,7 +158,7 @@ under the License.
         <h4>JRebel</h4>
         As with Debug, but with <a href="http://zeroturnaround.com/software/jrebel/">JRebel</a> features enabled.
         <source>$ export REBEL_HOME=/opt/jrebel
-          $ mvn -Pjrebel</source>
+$ mvn -Pjrebel</source>
       </subsection>
       
       <subsection name="fit/enduser-reference">
@@ -171,8 +171,16 @@ under the License.
         <h4>JRebel</h4>
         As with Debug, but with <a href="http://zeroturnaround.com/software/jrebel/">JRebel</a> features enabled.
         <source>$ export REBEL_HOME=/opt/jrebel
-          $ mvn -Pjrebel</source>
+$ mvn -Pjrebel</source>
       </subsection>
     </section>
+
+    <section name="Building documentation">
+      <p>
+        To build Syncope documentation execute (from within the check-out directory):
+        <source>$ mvn -N -P site clean generate-resources</source>
+        The documentation artifacts are now be available under <tt>target/generated-docs/</tt>.
+      </p>
+    </section>
   </body>
 </document>

http://git-wip-us.apache.org/repos/asf/syncope/blob/69df3afa/src/site/xdoc/integration.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/integration.xml b/src/site/xdoc/integration.xml
index 94b5ded..186a8c5 100644
--- a/src/site/xdoc/integration.xml
+++ b/src/site/xdoc/integration.xml
@@ -39,5 +39,11 @@ under the License.
         </a>
       </p>
     </section>
+    
+    <section name="Buildbot">
+      <p>
+        <source><a href="https://ci.apache.org/builders/syncope-master-docs">https://ci.apache.org/builders/syncope-master-docs</a></source>
+      </p>
+    </section>
   </body>
 </document>


[2/3] syncope git commit: [SYNCOPE-809] Fixing javadoc errors

Posted by il...@apache.org.
[SYNCOPE-809] Fixing javadoc errors


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/7bd46563
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/7bd46563
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/7bd46563

Branch: refs/heads/master
Commit: 7bd465636f0985d1e376479d0664d0dc3ddec4f3
Parents: a40d1aa
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Thu Aug 4 12:05:53 2016 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Thu Aug 4 12:05:53 2016 +0200

----------------------------------------------------------------------
 .../eclipse/plugin/editors/htmlhelpers/HTMLAutoEditStrategy.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/7bd46563/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/src/main/java/org/apache/syncope/ide/eclipse/plugin/editors/htmlhelpers/HTMLAutoEditStrategy.java
----------------------------------------------------------------------
diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/src/main/java/org/apache/syncope/ide/eclipse/plugin/editors/htmlhelpers/HTMLAutoEditStrategy.java b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/src/main/java/org/apache/syncope/ide/eclipse/plugin/editors/htmlhelpers/HTMLAutoEditStrategy.java
index 8761e88..0609a24 100644
--- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/src/main/java/org/apache/syncope/ide/eclipse/plugin/editors/htmlhelpers/HTMLAutoEditStrategy.java
+++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/src/main/java/org/apache/syncope/ide/eclipse/plugin/editors/htmlhelpers/HTMLAutoEditStrategy.java
@@ -90,8 +90,8 @@ public class HTMLAutoEditStrategy extends DefaultIndentLineAutoEditStrategy {
      * Returns the line number of the next bracket after end.
      *
      * @param document - the document being parsed
-     * @param line - the line to start searching back from
-     * @param end - the end position to search back from
+     * @param linearg - the line to start searching back from
+     * @param endarg - the end position to search back from
      * @param closingBracketIncrease - the number of brackets to skip
      * @return the line number of the next matching bracket after end
      * @throws BadLocationException in case the line numbers are invalid in the document