diff --git a/.travis.yml b/.travis.yml
index 259efe65b..132d6306a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -31,6 +31,8 @@ addons:
apt:
packages:
- curl
+ - graphviz
+ - gv
# See https://issues.apache.org/jira/browse/FINERACT-937 for background re. what below is all about..
# We basically remove the outdated OpenJDK 11.0.2 which Travis image grabbed from java.net in
@@ -72,6 +74,6 @@ script:
# using "&&" instead of several "-" means that integrationTest does not run if test fails,
# and Docker test does not run if integration test fails, which makes PR failure easier to understand.
# @see https://docs.travis-ci.com/user/job-lifecycle/#customizing-the-build-phase
- - ./gradlew --no-daemon --console=plain -PautomatedBuild=true licenseMain licenseTest check build test --fail-fast && sudo service mysql stop && docker-compose build && docker-compose up -d && sleep 60s && curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/health && (( $(curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/info | wc --chars) > 100 ))
+ - ./gradlew --no-daemon --console=plain -PautomatedBuild=true licenseMain licenseTest check build test --fail-fast doc && sudo service mysql stop && docker-compose build && docker-compose up -d && sleep 60s && curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/health && (( $(curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/info | wc --chars) > 100 ))
# We stop the mysql system service when running the Docker test to avoid port 3306 conflicts (unless we run the mysql in docker-compose on another port; req. FINERACT-773)
# The fancy /actuator/info test makes sure that has more than 100 characters of JSON to test that the git.properties worked (see FINERACT-983)
diff --git a/build.gradle b/build.gradle
index 4617ec90e..4b26d80ba 100644
--- a/build.gradle
+++ b/build.gradle
@@ -46,8 +46,8 @@ buildscript {
classpath 'com.bmuschko:gradle-cargo-plugin:2.7.1'
classpath 'org.apache.openjpa:openjpa:3.1.2' // when upgrading, also change OpenJPA version repeated in fineract-provider/build.gradle!
classpath 'com.radcortez.gradle:openjpa-gradle-plugin:3.1.0'
- classpath "gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.5.1"
- classpath "gradle.plugin.com.github.andygoossens:gradle-modernizer-plugin:1.3.0"
+ classpath 'gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.5.1'
+ classpath 'gradle.plugin.com.github.andygoossens:gradle-modernizer-plugin:1.3.0'
}
}
@@ -62,6 +62,12 @@ plugins {
id 'net.ltgt.errorprone' version '1.3.0' apply false
id 'io.swagger.core.v3.swagger-gradle-plugin' version '2.1.5' apply false
id 'com.gorylenko.gradle-git-properties' version '2.2.4' apply false
+ id 'org.asciidoctor.jvm.convert' version '3.2.0' apply false
+ id 'org.asciidoctor.jvm.pdf' version '3.2.0' apply false
+ id 'org.asciidoctor.jvm.epub' version '3.2.0' apply false
+ id 'org.asciidoctor.jvm.revealjs' version '3.2.0' apply false
+ id 'org.asciidoctor.jvm.gems' version '3.2.0' apply false
+ id 'org.asciidoctor.kindlegen.base' version '3.2.0' apply false
}
description = '''\
@@ -70,6 +76,7 @@ gradle clean bootRun'''
project.ext.jerseyVersion = '1.19.4'
ext['groovy.version'] = '3.0.6'
+ext['swaggerFile'] = "$rootDir/fineract-provider/build/classes/java/main/static/swagger-ui/fineract.yaml".toString()
allprojects {
group = 'org.apache.fineract'
@@ -267,6 +274,9 @@ allprojects {
'**/*.launch',
'**/licenses/**',
'**/*.md',
+ '**/*.adoc',
+ '**/.asciidoctorconfig',
+ '**/*.puml',
'**/*.github/**',
'**/MANIFEST.MF',
'**/*.json',
diff --git a/docs/deployment/oauth.md b/docs/deployment/oauth.md
deleted file mode 100644
index 3b0926be4..000000000
--- a/docs/deployment/oauth.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# OAuth
-
-Fineract has (basic) OAuth (2.0?) support. Here's how to use it:
-
-## Build
-
-You must re-build the distribution JAR (or WAR) using the special `-Psecurity=oauth` flag:
-
- ./gradlew bootJAR -Psecurity=oauth
- java -jar build/libs/fineract-provider.jar
-
-Downloads from https://fineract.apache.org, or using e.g. the https://hub.docker.com/r/apache/fineract container image, or on https://www.fineract.dev, this will not work, because they have not been built using this flag.
-
-
-## Invoke `/fineract-provider/api/oauth/token`
-
- curl [--insecure] --location --request POST \
- 'https://localhost:8443/fineract-provider/api/oauth/token' \
- --header 'Fineract-Platform-TenantId: default' \
- --header 'Content-Type: application/x-www-form-urlencoded' \
- --data-urlencode 'username=mifos' \
- --data-urlencode 'password=password' \
- --data-urlencode 'client_id=community-app' \
- --data-urlencode 'grant_type=password' \
- --data-urlencode 'client_secret=123'
-
-Note that the `client_id` and `client_secret` are stored in the `oauth_client_details` table in the database.
-
-
-## Invoke APIs and pass `Authorization: bearer ...` header
-
- curl --location --request GET \
- 'https://localhost:8443/fineract-provider/api/v1/clients' \
- --header 'Fineract-Platform-TenantId: default' \
- --header 'Authorization: bearer RzfUyQ0wEnxxq4PyFCF1J-XGFCI'
-
-
-## References
-
-* https://demo.fineract.dev/fineract-provider/api-docs/apiLive.htm#authentication_oauth
diff --git a/docs/developers/swagger/client.md b/docs/developers/swagger/client.md
deleted file mode 100644
index c5ebd0c1a..000000000
--- a/docs/developers/swagger/client.md
+++ /dev/null
@@ -1,30 +0,0 @@
-Generate Apache Fineract API Client
-============
-
-Apache Fineract supports client code generation using [OpenAPI Generator](https://openapi-generator.tech). It uses [OpenAPI Specification Version 3.0.3](https://swagger.io/specification/).
-
-## Fineract SDK Java API Client
-
-The `fineract-client.jar` will eventually be available on Maven Central (watch [FINERACT-1102](https://issues.apache.org/jira/browse/FINERACT-1102)). Until it is, you can quite easily build the latest and greatest version locally from source, see below.
-
-The [`FineractClient`](https://github.com/apache/fineract/search?q=FineractClient.java) is the entry point to the _Fineract SDK Java API Client_. [`Calls`](https://github.com/apache/fineract/search?q=Calls.java) is a convenient and recommended utility to simplify the use of the [`retrofit2.Call`](https://square.github.io/retrofit/2.x/retrofit/retrofit2/Call.html) type which all API operations return. Their benefit is illustrated e.g. in the [`FineractClientTest`](https://github.com/apache/fineract/search?q=FineractClientTest.java), but in short:
-
-```java
-import org.apache.fineract.client.util.FineractClient;
-import static org.apache.fineract.client.util.Calls.ok;
-
-FineractClient fineract = FineractClient.builder().baseURL("https://demo.fineract.dev/fineract-provider/api/v1/").tenant("default").basicAuth("mifos", "password").build();
-System.out.println(ok(fineract.clients.retrieveAll(...).getTotalFilteredRecords());
-```
-
-## Generate API Client
-
-The API client is built as part of the standard overall Fineract Gradle build. The client JAR can be found in `fineract-client/build/libs` as `fineract-client.jar`.
-
- If you need to save time to incrementally work on making small changes to Swagger annotations in an IDE, you can execute e.g. the following line in root directory of the project to exclude non-require Gradle tasks:
-
- ./gradlew -x compileJava -x compileTest -x spotlessJava -x enhance resolve prepareInputYaml :fineract-client:buildJavaSdk
-
-## Validate OpenAPI Spec File
-
-The `resolve` task in [build.gradle](https://github.com/apache/fineract/blob/develop/fineract-provider/build.gradle#L80) file will generate the OpenAPI Spec File for the project. To make sure Swagger Codegen generates a correct library, it is important for the OpenAPI Spec file to be valid. Validation is done automatically by the OpenAPI code generator Gradle plugin. If you still have problems during code generation please use [Swagger OpenAPI Validator](https://validator.swagger.io/) to validate the spec file.
diff --git a/docs/system-architecture/.gitattributes b/docs/system-architecture/.gitattributes
deleted file mode 100644
index 212566614..000000000
--- a/docs/system-architecture/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-* text=auto
\ No newline at end of file
diff --git a/docs/system-architecture/.gitignore b/docs/system-architecture/.gitignore
deleted file mode 100644
index 16b2d7d0a..000000000
--- a/docs/system-architecture/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# Include your project-specific ignores in this file
-# Read about how to use .gitignore: https://help.github.com/articles/ignoring-files
diff --git a/docs/system-architecture/.htaccess b/docs/system-architecture/.htaccess
deleted file mode 100644
index 64b43ad14..000000000
--- a/docs/system-architecture/.htaccess
+++ /dev/null
@@ -1,544 +0,0 @@
-# Apache Configuration File
-
-# (!) Using `.htaccess` files slows down Apache, therefore, if you have access
-# to the main server config file (usually called `httpd.conf`), you should add
-# this logic there: http://httpd.apache.org/docs/current/howto/htaccess.html.
-
-# ##############################################################################
-# # CROSS-ORIGIN RESOURCE SHARING (CORS) #
-# ##############################################################################
-
-# ------------------------------------------------------------------------------
-# | Cross-domain AJAX requests |
-# ------------------------------------------------------------------------------
-
-# Enable cross-origin AJAX requests.
-# http://code.google.com/p/html5security/wiki/CrossOriginRequestSecurity
-# http://enable-cors.org/
-
-#
Sorry, but the page you were trying to view does not exist.
-It looks like this was the result of either:
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum fermentum ligula a augue sollicitudin a tincidunt felis tincidunt. Donec et urna augue, sed consectetur lacus. Maecenas tincidunt volutpat lorem. Suspendisse turpis tellus, sodales ac commodo id, rhoncus vel augue. Vestibulum nisl nibh, rutrum eu bibendum vitae, bibendum et libero. Suspendisse vel odio vitae leo commodo lacinia. Sed non lacinia nulla. Pellentesque faucibus euismod dictum. Suspendisse potenti.
-| t |