You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ar...@apache.org on 2022/06/15 09:37:54 UTC

[fineract] branch develop updated: Allow headers to be passed for generated fineract client APIs

This is an automated email from the ASF dual-hosted git repository.

arnold pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new 78280aab9 Allow headers to be passed for generated fineract client APIs
78280aab9 is described below

commit 78280aab98ee80fdbe3bb5f10cd510e1058870c5
Author: Arnold Galovics <ga...@gmail.com>
AuthorDate: Wed Jun 15 10:57:12 2022 +0200

    Allow headers to be passed for generated fineract client APIs
---
 fineract-client/build.gradle                       |   2 +-
 .../resources/java/template/build.gradle.mustache  | 218 ----------
 .../src/main/resources/java/template/pom.mustache  | 479 ---------------------
 .../src/main/resources/templates/java/api.mustache | 120 ++++++
 4 files changed, 121 insertions(+), 698 deletions(-)

diff --git a/fineract-client/build.gradle b/fineract-client/build.gradle
index 2d9b508d9..7af23cee2 100644
--- a/fineract-client/build.gradle
+++ b/fineract-client/build.gradle
@@ -46,7 +46,7 @@ task buildJavaSdk(type: org.openapitools.generator.gradle.plugin.tasks.GenerateT
     skipValidateSpec = true
     inputSpec = "file:///$swaggerFile"
     outputDir = "$buildDir/generated/java".toString()
-    templateDir = "$rootDir/fineract-client/src/main/resources/java/template/"
+    templateDir = "$projectDir/src/main/resources/templates/java"
     groupId = 'org.apache.fineract'
     apiPackage = 'org.apache.fineract.client.services'
     invokerPackage = 'org.apache.fineract.client'
diff --git a/fineract-client/src/main/resources/java/template/build.gradle.mustache b/fineract-client/src/main/resources/java/template/build.gradle.mustache
deleted file mode 100644
index e61973267..000000000
--- a/fineract-client/src/main/resources/java/template/build.gradle.mustache
+++ /dev/null
@@ -1,218 +0,0 @@
-{{!
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-}}
-apply plugin: 'idea'
-apply plugin: 'eclipse'
-
-group = '{{groupId}}'
-version = '{{artifactVersion}}'
-
-buildscript {
-repositories {
-maven { url "https://repo1.maven.org/maven2" }
-jcenter()
-}
-dependencies {
-classpath 'com.android.tools.build:gradle:2.3.+'
-classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
-}
-}
-
-repositories {
-jcenter()
-}
-
-
-if(hasProperty('target') && target == 'android') {
-
-apply plugin: 'com.android.library'
-apply plugin: 'com.github.dcendents.android-maven'
-
-android {
-compileSdkVersion 25
-buildToolsVersion '25.0.2'
-defaultConfig {
-minSdkVersion 14
-targetSdkVersion 25
-}
-compileOptions {
-{{#java8}}
-    sourceCompatibility JavaVersion.VERSION_1_8
-    targetCompatibility JavaVersion.VERSION_1_8
-{{/java8}}
-{{^java8}}
-    sourceCompatibility JavaVersion.VERSION_1_7
-    targetCompatibility JavaVersion.VERSION_1_7
-{{/java8}}
-}
-
-// Rename the aar correctly
-libraryVariants.all { variant ->
-variant.outputs.each { output ->
-def outputFile = output.outputFile
-if (outputFile != null && outputFile.name.endsWith('.aar')) {
-def fileName = "${project.name}-${variant.baseName}-${version}.aar"
-output.outputFile = new File(outputFile.parent, fileName)
-}
-}
-}
-
-dependencies {
-provided 'javax.annotation:jsr250-api:1.0'
-}
-}
-
-afterEvaluate {
-android.libraryVariants.all { variant ->
-def task = project.tasks.create "jar${variant.name.capitalize()}", Jar
-task.description = "Create jar artifact for ${variant.name}"
-task.dependsOn variant.javaCompile
-task.from variant.javaCompile.destinationDir
-task.destinationDir = project.file("${project.buildDir}/outputs/jar")
-task.archiveName = "${project.name}-${variant.baseName}-${version}.jar"
-artifacts.add('archives', task);
-}
-}
-
-task sourcesJar(type: Jar) {
-from android.sourceSets.main.java.srcDirs
-classifier = 'sources'
-}
-
-artifacts {
-archives sourcesJar
-}
-
-} else {
-
-apply plugin: 'java'
-apply plugin: 'maven'
-
-{{#java8}}
-    sourceCompatibility = JavaVersion.VERSION_1_8
-    targetCompatibility = JavaVersion.VERSION_1_8
-{{/java8}}
-{{^java8}}
-    sourceCompatibility = JavaVersion.VERSION_1_7
-    targetCompatibility = JavaVersion.VERSION_1_7
-{{/java8}}
-
-install {
-repositories.mavenInstaller {
-pom.artifactId = '{{artifactId}}'
-}
-}
-
-task execute(type:JavaExec) {
-main = System.getProperty('mainClass')
-classpath = sourceSets.main.runtimeClasspath
-}
-}
-
-ext {
-oltu_version = "1.0.1"
-retrofit_version = "2.9.0"
-okhttp3_version = "4.9.0"
-{{#usePlayWS}}
-    jackson_version = "2.10.5"
-    jackson_databind_version = "2.10.5.1"
-    {{#openApiNullable}}
-        jackson_databind_nullable_version = "0.2.1"
-    {{/openApiNullable}}
-    {{#play24}}
-        play_version = "2.4.11"
-    {{/play24}}
-    {{#play25}}
-        play_version = "2.5.14"
-    {{/play25}}
-    {{#play26}}
-        play_version = "2.6.7"
-    {{/play26}}
-{{/usePlayWS}}
-swagger_annotations_version = "1.5.22"
-junit_version = "4.13.1"
-{{#useRxJava}}
-    rx_java_version = "1.3.0"
-{{/useRxJava}}
-{{#useRxJava2}}
-    rx_java_version = "2.1.1"
-{{/useRxJava2}}
-{{#useRxJava3}}
-    rx_java_version = "3.0.4"
-{{/useRxJava3}}
-{{#joda}}
-    jodatime_version = "2.9.9"
-{{/joda}}
-{{#threetenbp}}
-    threetenbp_version = "1.4.0"
-{{/threetenbp}}
-json_fire_version = "1.8.0"
-}
-
-dependencies {
-implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
-implementation "com.squareup.retrofit2:converter-scalars:$retrofit_version"
-implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
-implementation "com.squareup.okhttp3:logging-interceptor:4.9.0"
-implementation "com.squareup.okhttp3:okhttp:$okhttp3_version"
-{{#useRxJava}}
-    implementation "com.squareup.retrofit2:adapter-rxjava:$retrofit_version"
-    implementation "io.reactivex:rxjava:$rx_java_version"
-{{/useRxJava}}
-{{#useRxJava2}}
-    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
-    implementation "io.reactivex.rxjava2:rxjava:$rx_java_version"
-{{/useRxJava2}}
-{{#useRxJava3}}
-    implementation 'com.github.akarnokd:rxjava3-retrofit-adapter:3.0.0'
-    implementation "io.reactivex.rxjava3:rxjava:$rx_java_version"
-{{/useRxJava3}}
-implementation "io.swagger:swagger-annotations:$swagger_annotations_version"
-implementation "com.google.code.findbugs:jsr305:3.0.2"
-implementation ("org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:$oltu_version"){
-exclude group:'org.apache.oltu.oauth2' , module: 'org.apache.oltu.oauth2.common'
-}
-implementation "io.gsonfire:gson-fire:$json_fire_version"
-{{#joda}}
-    implementation "joda-time:joda-time:$jodatime_version"
-{{/joda}}
-{{#threetenbp}}
-    implementation "org.threeten:threetenbp:$threetenbp_version"
-{{/threetenbp}}
-{{#usePlayWS}}
-    {{#play26}}
-        implementation "com.typesafe.play:play-ahc-ws_2.12:$play_version"
-        implementation "javax.validation:validation-api:1.1.0.Final"
-    {{/play26}}
-    {{^play26}}
-        implementation "com.typesafe.play:play-java-ws_2.11:$play_version"
-    {{/play26}}
-    implementation "com.squareup.retrofit2:converter-jackson:$retrofit_version"
-    implementation "com.fasterxml.jackson.core:jackson-core:$jackson_version"
-    implementation "com.fasterxml.jackson.core:jackson-annotations:$jackson_version"
-    implementation "com.fasterxml.jackson.core:jackson-databind:$jackson_databind_version"
-    {{#openApiNullable}}
-        implementation "org.openapitools:jackson-databind-nullable:$jackson_databind_nullable_version"
-    {{/openApiNullable}}
-    implementation "com.fasterxml.jackson.datatype:jackson-datatype-{{^java8}}joda{{/java8}}{{#java8}}jsr310{{/java8}}:$jackson_version"
-{{/usePlayWS}}
-implementation 'javax.annotation:javax.annotation-api:1.3.2'
-testImplementation "junit:junit:$junit_version"
-}
\ No newline at end of file
diff --git a/fineract-client/src/main/resources/java/template/pom.mustache b/fineract-client/src/main/resources/java/template/pom.mustache
deleted file mode 100644
index f2aa1939f..000000000
--- a/fineract-client/src/main/resources/java/template/pom.mustache
+++ /dev/null
@@ -1,479 +0,0 @@
-{{!
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-}}
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>{{groupId}}</groupId>
-    <artifactId>{{artifactId}}</artifactId>
-    <packaging>jar</packaging>
-    <name>{{artifactId}}</name>
-    <version>{{artifactVersion}}</version>
-    <url>{{artifactUrl}}</url>
-    <description>{{artifactDescription}}</description>
-    <scm>
-        <connection>{{scmConnection}}</connection>
-        <developerConnection>{{scmDeveloperConnection}}</developerConnection>
-        <url>{{scmUrl}}</url>
-    </scm>
-    {{#parentOverridden}}
-        <parent>
-            <groupId>{{{parentGroupId}}}</groupId>
-            <artifactId>{{{parentArtifactId}}}</artifactId>
-            <version>{{{parentVersion}}}</version>
-        </parent>
-    {{/parentOverridden}}
-
-    <licenses>
-        <license>
-            <name>{{licenseName}}</name>
-            <url>{{licenseUrl}}</url>
-            <distribution>repo</distribution>
-        </license>
-    </licenses>
-
-    <developers>
-        <developer>
-            <name>{{developerName}}</name>
-            <email>{{developerEmail}}</email>
-            <organization>{{developerOrganization}}</organization>
-            <organizationUrl>{{developerOrganizationUrl}}</organizationUrl>
-        </developer>
-    </developers>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-enforcer-plugin</artifactId>
-                <version>3.0.0-M1</version>
-                <executions>
-                    <execution>
-                        <id>enforce-maven</id>
-                        <goals>
-                            <goal>enforce</goal>
-                        </goals>
-                        <configuration>
-                            <rules>
-                                <requireMavenVersion>
-                                    <version>2.2.0</version>
-                                </requireMavenVersion>
-                            </rules>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <version>2.12</version>
-                <configuration>
-                    <systemProperties>
-                        <property>
-                            <name>loggerPath</name>
-                            <value>conf/log4j.properties</value>
-                        </property>
-                    </systemProperties>
-                    <argLine>-Xms512m -Xmx1500m</argLine>
-                    <parallel>methods</parallel>
-                    <forkMode>pertest</forkMode>
-                </configuration>
-            </plugin>
-            <plugin>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>copy-dependencies</goal>
-                        </goals>
-                        <configuration>
-                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <!-- attach test jar -->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <version>2.2</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>jar</goal>
-                            <goal>test-jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                </configuration>
-            </plugin>
-
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>1.10</version>
-                <executions>
-                    <execution>
-                        <id>add_sources</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>src/main/java</source>
-                            </sources>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>add_test_sources</id>
-                        <phase>generate-test-sources</phase>
-                        <goals>
-                            <goal>add-test-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>src/test/java</source>
-                            </sources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.6.1</version>
-                <configuration>
-                    {{#java8}}
-                        <source>1.8</source>
-                        <target>1.8</target>
-                    {{/java8}}
-                    {{^java8}}
-                        <source>1.7</source>
-                        <target>1.7</target>
-                    {{/java8}}
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-javadoc-plugin</artifactId>
-                <version>3.1.1</version>
-                <configuration>
-                    <doclint>none</doclint>
-                    {{#java8}}
-                        <source>1.8</source>
-                    {{/java8}}
-                    {{^java8}}
-                        <source>1.7</source>
-                    {{/java8}}
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>attach-javadocs</id>
-                        <goals>
-                            <goal>jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-                <version>2.2.1</version>
-                <executions>
-                    <execution>
-                        <id>attach-sources</id>
-                        <goals>
-                            <goal>jar-no-fork</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>sign-artifacts</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-gpg-plugin</artifactId>
-                        <version>1.5</version>
-                        <executions>
-                            <execution>
-                                <id>sign-artifacts</id>
-                                <phase>verify</phase>
-                                <goals>
-                                    <goal>sign</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
-    <dependencies>
-        <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-annotations</artifactId>
-            <version>${swagger-annotations-version}</version>
-        </dependency>
-        <!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
-        <dependency>
-            <groupId>com.squareup.okhttp3</groupId>
-            <artifactId>okhttp</artifactId>
-            <version>${okhttp3-version}</version>
-        </dependency>
-        <!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/logging-interceptor -->
-        <dependency>
-            <groupId>com.squareup.okhttp3</groupId>
-            <artifactId>logging-interceptor</artifactId>
-            <version>3.12.1</version>
-        </dependency>
-        <!-- @Nullable annotation -->
-        <dependency>
-            <groupId>com.google.code.findbugs</groupId>
-            <artifactId>jsr305</artifactId>
-            <version>3.0.2</version>
-        </dependency>
-        <dependency>
-            <groupId>com.squareup.retrofit2</groupId>
-            <artifactId>converter-gson</artifactId>
-            <version>${retrofit-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.squareup.retrofit2</groupId>
-            <artifactId>retrofit</artifactId>
-            <version>${retrofit-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.squareup.retrofit2</groupId>
-            <artifactId>converter-scalars</artifactId>
-            <version>${retrofit-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.oltu.oauth2</groupId>
-            <artifactId>org.apache.oltu.oauth2.client</artifactId>
-            <version>${oltu-version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.oltu.oauth2</groupId>
-                    <artifactId>common</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>io.gsonfire</groupId>
-            <artifactId>gson-fire</artifactId>
-            <version>${gson-fire-version}</version>
-        </dependency>
-        {{#joda}}
-            <dependency>
-                <groupId>joda-time</groupId>
-                <artifactId>joda-time</artifactId>
-                <version>${jodatime-version}</version>
-            </dependency>
-        {{/joda}}
-        {{#threetenbp}}
-            <dependency>
-                <groupId>org.threeten</groupId>
-                <artifactId>threetenbp</artifactId>
-                <version>${threetenbp-version}</version>
-            </dependency>
-        {{/threetenbp}}
-        {{#useRxJava}}
-            <dependency>
-                <groupId>io.reactivex</groupId>
-                <artifactId>rxjava</artifactId>
-                <version>${rxjava-version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.squareup.retrofit2</groupId>
-                <artifactId>adapter-rxjava</artifactId>
-                <version>${retrofit-version}</version>
-            </dependency>
-        {{/useRxJava}}
-        {{#useRxJava2}}
-            <dependency>
-                <groupId>io.reactivex.rxjava2</groupId>
-                <artifactId>rxjava</artifactId>
-                <version>${rxjava-version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.squareup.retrofit2</groupId>
-                <artifactId>adapter-rxjava2</artifactId>
-                <version>${retrofit-version}</version>
-            </dependency>
-        {{/useRxJava2}}
-        {{#useRxJava3}}
-            <dependency>
-                <groupId>io.reactivex.rxjava3</groupId>
-                <artifactId>rxjava</artifactId>
-                <version>${rxjava-version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.github.akarnokd</groupId>
-                <artifactId>rxjava3-retrofit-adapter</artifactId>
-                <version>3.0.0</version>
-            </dependency>
-        {{/useRxJava3}}
-        {{#usePlayWS}}
-            <!-- JSON processing: jackson -->
-            <dependency>
-                <groupId>com.squareup.retrofit2</groupId>
-                <artifactId>converter-jackson</artifactId>
-                <version>${retrofit-version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.fasterxml.jackson.core</groupId>
-                <artifactId>jackson-core</artifactId>
-                <version>${jackson-version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.fasterxml.jackson.core</groupId>
-                <artifactId>jackson-annotations</artifactId>
-                <version>${jackson-version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.fasterxml.jackson.core</groupId>
-                <artifactId>jackson-databind</artifactId>
-                <version>${jackson-version}</version>
-            </dependency>
-            {{#openApiNullable}}
-                <dependency>
-                    <groupId>org.openapitools</groupId>
-                    <artifactId>jackson-databind-nullable</artifactId>
-                    <version>${jackson-databind-nullable-version}</version>
-                </dependency>
-            {{/openApiNullable}}
-            <dependency>
-                <groupId>com.fasterxml.jackson.datatype</groupId>
-                <artifactId>jackson-datatype-{{^java8}}joda{{/java8}}{{#java8}}jsr310{{/java8}}</artifactId>
-                <version>${jackson-version}</version>
-            </dependency>
-            {{#withXml}}
-                <!-- XML processing: Jackson -->
-                <dependency>
-                    <groupId>com.fasterxml.jackson.dataformat</groupId>
-                    <artifactId>jackson-dataformat-xml</artifactId>
-                    <version>${jackson-version}</version>
-                </dependency>
-            {{/withXml}}
-            {{#play24}}
-                <dependency>
-                    <groupId>com.typesafe.play</groupId>
-                    <artifactId>play-java-ws_2.11</artifactId>
-                    <version>${play-version}</version>
-                </dependency>
-            {{/play24}}
-            {{#play25}}
-                <dependency>
-                    <groupId>com.typesafe.play</groupId>
-                    <artifactId>play-java-ws_2.11</artifactId>
-                    <version>${play-version}</version>
-                </dependency>
-            {{/play25}}
-            {{#play26}}
-                <dependency>
-                    <groupId>com.typesafe.play</groupId>
-                    <artifactId>play-ahc-ws_2.12</artifactId>
-                    <version>${play-version}</version>
-                </dependency>
-                <dependency>
-                    <groupId>javax.validation</groupId>
-                    <artifactId>validation-api</artifactId>
-                    <version>1.1.0.Final</version>
-                </dependency>
-            {{/play26}}
-        {{/usePlayWS}}
-        {{#parcelableModel}}
-            <!-- Needed for Parcelable support-->
-            <dependency>
-                <groupId>com.google.android</groupId>
-                <artifactId>android</artifactId>
-                <version>4.1.1.4</version>
-                <scope>provided</scope>
-            </dependency>
-        {{/parcelableModel}}
-        <dependency>
-            <groupId>javax.annotation</groupId>
-            <artifactId>javax.annotation-api</artifactId>
-            <version>${javax-annotation-version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <!-- test dependencies -->
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>${junit-version}</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <java.version>{{#java8}}1.8{{/java8}}{{^java8}}1.7{{/java8}}</java.version>
-        <maven.compiler.source>${java.version}</maven.compiler.source>
-        <maven.compiler.target>${java.version}</maven.compiler.target>
-        <gson-fire-version>1.8.3</gson-fire-version>
-        <swagger-annotations-version>1.5.22</swagger-annotations-version>
-        {{#usePlayWS}}
-            <jackson-version>2.12.1</jackson-version>
-            {{#play24}}
-                <play-version>2.4.11</play-version>
-            {{/play24}}
-            {{#play25}}
-                <play-version>2.5.15</play-version>
-            {{/play25}}
-            {{#play26}}
-                <play-version>2.6.7</play-version>
-            {{/play26}}
-            {{#openApiNullable}}
-                <jackson-databind-nullable-version>0.2.1</jackson-databind-nullable-version>
-            {{/openApiNullable}}
-        {{/usePlayWS}}
-        <retrofit-version>2.9.0</retrofit-version>
-        <okhttp3-version>4.9.0</okhttp3-version>
-        {{#useRxJava}}
-            <rxjava-version>1.3.0</rxjava-version>
-        {{/useRxJava}}
-        {{#useRxJava2}}
-            <rxjava-version>2.1.1</rxjava-version>
-        {{/useRxJava2}}
-        {{#useRxJava3}}
-            <rxjava-version>3.0.4</rxjava-version>
-        {{/useRxJava3}}
-        {{#joda}}
-            <jodatime-version>2.9.9</jodatime-version>
-        {{/joda}}
-        {{#threetenbp}}
-            <threetenbp-version>1.4.0</threetenbp-version>
-        {{/threetenbp}}
-        <javax-annotation-version>1.3.2</javax-annotation-version>
-        <oltu-version>1.0.1</oltu-version>
-        <junit-version>4.13.1</junit-version>
-    </properties>
-</project>
\ No newline at end of file
diff --git a/fineract-client/src/main/resources/templates/java/api.mustache b/fineract-client/src/main/resources/templates/java/api.mustache
new file mode 100644
index 000000000..65915d89f
--- /dev/null
+++ b/fineract-client/src/main/resources/templates/java/api.mustache
@@ -0,0 +1,120 @@
+package {{package}};
+
+import {{invokerPackage}}.CollectionFormats.*;
+
+{{#useRxJava2}}
+    import io.reactivex.Observable;
+{{/useRxJava2}}
+{{#useRxJava3}}
+    import io.reactivex.rxjava3.core.Observable;
+{{/useRxJava3}}
+{{^returnType}}
+    {{#useRxJava2}}
+        import io.reactivex.Completable;
+    {{/useRxJava2}}
+    {{#useRxJava3}}
+        import io.reactivex.rxjava3.core.Completable;
+    {{/useRxJava3}}
+{{/returnType}}
+{{#doNotUseRx}}
+    import retrofit2.Call;
+{{/doNotUseRx}}
+import retrofit2.http.*;
+
+import okhttp3.RequestBody;
+import okhttp3.ResponseBody;
+import okhttp3.MultipartBody;
+
+{{#imports}}import {{import}};
+{{/imports}}
+
+{{^fullJavaUtil}}
+    import java.util.ArrayList;
+    import java.util.HashMap;
+    import java.util.List;
+    import java.util.Map;
+{{/fullJavaUtil}}
+
+{{#operations}}
+    public interface {{classname}} {
+    {{#operation}}
+        /**
+        * {{summary}}
+        * {{notes}}
+        {{#allParams}}
+            * @param {{paramName}} {{description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}}
+        {{/allParams}}
+        * @return {{^doNotUseRx}}{{#useRxJava2}}{{#returnType}}Observable&lt;{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{returnType}}{{/isResponseFile}}&gt;{{/returnType}}{{^returnType}}Completable{{/returnType}}{{/useRxJava2}}{{#useRxJava3}}{{#returnType}}Observable&lt;{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{returnType}}{{/isResponseFile}}&gt;{{/returnType}}{{^returnType}}Completable{{/returnType}}{{/useRxJava3}}{{/doNotUseRx}}{{ [...]
+        {{#isDeprecated}}
+            * @deprecated
+        {{/isDeprecated}}
+        {{#externalDocs}}
+            * {{description}}
+            * @see <a href="{{url}}">{{summary}} Documentation</a>
+        {{/externalDocs}}
+        */
+        {{#isDeprecated}}
+            @Deprecated
+        {{/isDeprecated}}
+        {{#formParams}}
+            {{#-first}}
+                {{#isMultipart}}@retrofit2.http.Multipart{{/isMultipart}}{{^isMultipart}}@retrofit2.http.FormUrlEncoded{{/isMultipart}}
+            {{/-first}}
+        {{/formParams}}
+        {{^formParams}}
+            {{#prioritizedContentTypes}}
+                {{#-first}}
+                    @Headers({
+                    "Content-Type:{{{mediaType}}}"
+                    })
+                {{/-first}}
+            {{/prioritizedContentTypes}}
+        {{/formParams}}
+        @{{httpMethod}}("{{{path}}}")
+        {{^doNotUseRx}}{{#useRxJava2}}{{#returnType}}Observable<{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{/isResponseFile}}>{{/returnType}}{{^returnType}}Completable{{/returnType}}{{/useRxJava2}}{{#useRxJava3}}{{#returnType}}Observable<{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{/isResponseFile}}>{{/returnType}}{{^returnType}}Completable{{/returnType}}{{/useRxJava3}}{{/doNotUseRx}}{{#doNotUseRx}}Call< [...]
+        {{#allParams}}{{>libraries/retrofit2/queryParams}}{{>libraries/retrofit2/pathParams}}{{>libraries/retrofit2/headerParams}}{{>libraries/retrofit2/bodyParams}}{{>libraries/retrofit2/formParams}}{{^-last}}, {{/-last}}{{#-last}}
+                );{{/-last}}{{/allParams}}
+
+    {{/operation}}
+
+    {{#operation}}
+            /**
+            * {{summary}}
+            * {{notes}}
+        {{#allParams}}
+                * @param {{paramName}} {{description}}{{#required}} (required){{/required}}{{^required}} (optional{{#defaultValue}}, default to {{.}}{{/defaultValue}}){{/required}}
+        {{/allParams}}
+            * @return {{^doNotUseRx}}{{#useRxJava2}}{{#returnType}}Observable&lt;{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{returnType}}{{/isResponseFile}}&gt;{{/returnType}}{{^returnType}}Completable{{/returnType}}{{/useRxJava2}}{{#useRxJava3}}{{#returnType}}Observable&lt;{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{returnType}}{{/isResponseFile}}&gt;{{/returnType}}{{^returnType}}Completable{{/returnType}}{{/useRxJava3}}{{/doNotUseRx [...]
+        {{#isDeprecated}}
+                * @deprecated
+        {{/isDeprecated}}
+        {{#externalDocs}}
+                * {{description}}
+                * @see <a href="{{url}}">{{summary}} Documentation</a>
+        {{/externalDocs}}
+            */
+        {{#isDeprecated}}
+                @Deprecated
+        {{/isDeprecated}}
+        {{#formParams}}
+            {{#-first}}
+                {{#isMultipart}}@retrofit2.http.Multipart{{/isMultipart}}{{^isMultipart}}@retrofit2.http.FormUrlEncoded{{/isMultipart}}
+            {{/-first}}
+        {{/formParams}}
+        {{^formParams}}
+            {{#prioritizedContentTypes}}
+                {{#-first}}
+                        @Headers({
+                        "Content-Type:{{{mediaType}}}"
+                        })
+                {{/-first}}
+            {{/prioritizedContentTypes}}
+        {{/formParams}}
+            @{{httpMethod}}("{{{path}}}")
+        {{^doNotUseRx}}{{#useRxJava2}}{{#returnType}}Observable<{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{/isResponseFile}}>{{/returnType}}{{^returnType}}Completable{{/returnType}}{{/useRxJava2}}{{#useRxJava3}}{{#returnType}}Observable<{{#isResponseFile}}ResponseBody{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{/isResponseFile}}>{{/returnType}}{{^returnType}}Completable{{/returnType}}{{/useRxJava3}}{{/doNotUseRx}}{{#doNotUseRx}}Call< [...]
+        {{#allParams}}{{>libraries/retrofit2/queryParams}}{{>libraries/retrofit2/pathParams}}{{>libraries/retrofit2/headerParams}}{{>libraries/retrofit2/bodyParams}}{{>libraries/retrofit2/formParams}}{{^-last}}, {{/-last}}{{#-last}}
+                , @HeaderMap Map<String, String> headers);{{/-last}}{{/allParams}}
+
+    {{/operation}}
+        }
+{{/operations}}
\ No newline at end of file