This is an automated email from the ASF dual-hosted git repository.
aleks 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 46ff275 FINERACT-1198: Fixing incremental build for Gradle
46ff275 is described below
commit 46ff275d07afa43bc2d7218003d36b39e6c1d940
Author: Petri Tuomola <[email protected]>
AuthorDate: Sun Jan 2 11:57:07 2022 +0800
FINERACT-1198: Fixing incremental build for Gradle
---
build.gradle | 16 ++--
fineract-provider/build.gradle | 90 +++++++++++++++++-----
.../importhandler/ImportHandlerUtils.java | 3 +-
...nsferWritePlatformServiceJpaRepositoryImpl.java | 4 +-
fineract-war/build.gradle | 4 +
5 files changed, 83 insertions(+), 34 deletions(-)
diff --git a/build.gradle b/build.gradle
index 3888201..8080fb0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -46,9 +46,6 @@ buildscript {
dependencies {
classpath 'com.bmuschko:gradle-cargo-plugin:2.8.0'
classpath 'org.apache.openjpa:openjpa:3.2.0' // 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.7.5'
- classpath
'gradle.plugin.com.github.andygoossens:gradle-modernizer-plugin:1.3.0'
}
}
@@ -56,7 +53,7 @@ plugins {
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "org.barfuin.gradle.taskinfo" version "1.3.1"
id 'com.adarshr.test-logger' version '3.1.0'
- id 'com.diffplug.spotless' version '5.17.1' apply false
+ id 'com.diffplug.spotless' version '6.1.0' apply false
id 'org.nosphere.apache.rat' version '0.7.0' apply false
id 'com.github.hierynomus.license' version '0.16.1' apply false
id 'com.github.jk1.dependency-license-report' version '2.0' apply false
@@ -74,6 +71,8 @@ plugins {
id 'org.asciidoctor.kindlegen.base' version '3.2.0' apply false
id "com.google.cloud.tools.jib" version "3.1.4" apply false
id "org.sonarqube" version "3.3"
+ id "com.github.andygoossens.modernizer" version "1.6.1" apply false
+ id 'com.github.spotbugs' version '5.0.3' apply false
}
description = '''\
@@ -82,7 +81,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()
+ext['swaggerFile'] =
"$rootDir/fineract-provider/build/generated/swagger-ui/fineract.yaml".toString()
allprojects {
group = 'org.apache.fineract'
@@ -139,7 +138,7 @@ allprojects {
dependency 'io.github.classgraph:classgraph:4.8.129'
dependency 'org.awaitility:awaitility:4.1.1'
- dependency 'com.github.spotbugs:spotbugs-annotations:4.4.2'
+ dependency 'com.github.spotbugs:spotbugs-annotations:4.5.2'
dependency 'javax.cache:cache-api:1.1.1'
dependency 'org.mock-server:mockserver-junit-jupiter:5.11.2'
dependency 'org.webjars.npm:swagger-ui-dist:4.0.1'
@@ -371,7 +370,7 @@ configure(project.fineractJavaProjects) {
apply plugin: 'jacoco'
apply plugin: "net.ltgt.errorprone"
apply plugin: "com.github.spotbugs"
- apply plugin: 'com.github.andygoossens.gradle-modernizer-plugin'
+ apply plugin: 'com.github.andygoossens.modernizer'
/* define the valid syntax level for source files */
sourceCompatibility = JavaVersion.VERSION_11
@@ -426,7 +425,6 @@ configure(project.fineractJavaProjects) {
dependencies {
spotbugsPlugins 'jp.skypencil.findbugs.slf4j:bug-pattern:1.5.0@jar'
- spotbugs 'com.github.spotbugs:spotbugs:4.4.2'
}
// Configuration for the spotless plugin
@@ -472,8 +470,6 @@ configure(project.fineractJavaProjects) {
lineEndings 'UNIX'
}
- compileJava.dependsOn spotlessCheck
-
// compileJava may create more source files into generated, hence we need
to run these tasks after it
licenseMain.dependsOn compileJava
processResources.dependsOn compileJava
diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle
index a763471..7280aa0 100644
--- a/fineract-provider/build.gradle
+++ b/fineract-provider/build.gradle
@@ -22,25 +22,76 @@ apply plugin: 'org.zeroturnaround.gradle.jrebel'
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
-apply plugin: 'openjpa'
apply plugin: 'com.gorylenko.gradle-git-properties'
apply plugin: 'io.swagger.core.v3.swagger-gradle-plugin'
apply plugin: 'distribution'
apply plugin: 'signing'
apply plugin: 'com.google.cloud.tools.jib'
-// Configuration for the OpenJPA enhance task
-// https://github.com/radcortez/openjpa-gradle-plugin
-System.setProperty("openjpa.Log", "commons")
-
-openjpa {
- includes = [
+// Custom OpenJPA enhancement
+compileJava.doLast {
+ def enhanceIncludes = [
'**/AbstractPersistableCustom.class',
'**/domain/*.class'
]
- enhance {
- enforcePropertyRestrictions true
+
+ def classesToEnhance =
project.sourceSets.main.output.classesDirs.collectMany { classesDir ->
+ project.fileTree(classesDir).matching {
+ enhanceIncludes.forEach { include it }
+ }.files
+ }
+
+ String persistenceXml = "META-INF/persistence.xml"
+ def persistenceXmlFile
+
+ // Check if persistence.xml is in the resource dirs.
+ project.sourceSets.main.resources.srcDirs.collect { resourceDir ->
+ def persistenceXmlFileCandidate =
project.fileTree(resourceDir).matching {
+ include persistenceXml
+ }
+
+ if (!persistenceXmlFileCandidate.isEmpty()) {
+ if (persistenceXmlFile == null) {
+ persistenceXmlFile = persistenceXmlFileCandidate.singleFile
+ } else {
+ throw new InvalidUserDataException("Multiple persistence.xml
files found in path: " +
+ persistenceXmlFile + ", " + persistenceXmlFileCandidate)
+ }
+ }
+
+ // Nothing found. Fallback to plain file.
+ if (persistenceXmlFile == null) {
+ persistenceXmlFile = project.file(persistenceXml)
+ if (!persistenceXmlFile.exists()) {
+ throw new InvalidUserDataException(
+ "Could not find valid persistence.xml in path " +
this.persistenceXml)
+ }
+ }
}
+
+ org.apache.openjpa.lib.util.Options options = new
org.apache.openjpa.lib.util.Options([
+ "addDefaultConstructor" : true,
+ "enforcePropertyRestrictions": true,
+ "tmpClassLoader" : false,
+ "propertiesFile" : persistenceXmlFile
+ ])
+
+ def classes = project.sourceSets.main.output.classesDirs.collect {
it.toURI().toURL() }
+
+ def compileJars = project.configurations.compileClasspath.files.collect {
jar ->
+ jar.toURI().toURL()
+ }
+
+ def resources = project.sourceSets.main.resources.srcDirs.collect {
resource ->
+ resource.toURI().toURL()
+ }
+
+ def urls = (classes + compileJars + resources)
+
+ ClassLoader currentClassLoader =
Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(new
URLClassLoader((URL[])urls, currentClassLoader));
+ org.apache.openjpa.enhance.PCEnhancer.run((String []) classesToEnhance,
options);
+ Thread.currentThread().setContextClassLoader(currentClassLoader);
}
// Configuration for Swagger documentation generation task
@@ -48,6 +99,8 @@ openjpa {
import org.apache.tools.ant.filters.ReplaceTokens
task prepareInputYaml(dependsOn: 'generateGitProperties') {
+ outputs.file('config/swagger/fineract-input.yaml')
+
doLast {
def versionForSwagger
@@ -65,6 +118,7 @@ task prepareInputYaml(dependsOn: 'generateGitProperties') {
}
}
+rat.dependsOn prepareInputYaml
resolve {
logging.captureStandardOutput LogLevel.INFO
@@ -72,7 +126,7 @@ resolve {
outputFormat = 'YAML'
prettyPrint = 'TRUE'
classpath = sourceSets.main.runtimeClasspath
- outputDir = file("${buildDir}/classes/java/main/static/swagger-ui")
+ outputDir = file("${buildDir}/generated/swagger-ui")
openApiFile = file("config/swagger/fineract-input.yaml")
}
@@ -100,14 +154,6 @@ configurations {
}
apply from: 'dependencies.gradle'
-/* TODO https://issues.apache.org/jira/browse/FINERACT-939
(dev-dependencies.gradle has been removed, as totally broken)
- // Pick up dependencies based on the environment, defaults to production
- if (project.hasProperty('env') && project.getProperty('env') == 'dev') {
- apply from: 'dev-dependencies.gradle'
- } else {
- apply from: 'dependencies.gradle'
- }
- */
/* Enable Oauth2 authentication based on environment, default to HTTP basic
auth */
if (project.hasProperty('security') && project.getProperty('security') ==
'oauth') {
@@ -245,6 +291,10 @@ bootJar {
}
dependsOn resolve
classifier = ''
+
+ from('build/generated/swagger-ui') {
+ into 'BOOT-INF/classes/static/swagger-ui'
+ }
}
jib {
@@ -340,6 +390,7 @@ distributions {
tasks.binaryDistZip.enabled false
tasks.srcDistZip.enabled false
tasks.binaryDistTar.dependsOn bootJar
+tasks.srcDistTar.dependsOn prepareInputYaml
// create signatures and checksums only if project parameter
"fineract.release" is provided on the command line
if( project.hasProperty("fineract.release") ) {
@@ -384,11 +435,12 @@ gitProperties {
extProperty = 'gitProps'
}
+processResources.dependsOn generateGitProperties
+
// make sure the generateGitProperties task always executes (even when
git.properties is not changed)
generateGitProperties.outputs.upToDateWhen { false }
// Gradle 7.x asks for explicit dependencies between tasks
-processResources.dependsOn generateGitProperties
checkstyleMain.dependsOn resolve
checkstyleTest.dependsOn resolve
licenseMain.dependsOn processResources, generateGitProperties
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/ImportHandlerUtils.java
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/ImportHandlerUtils.java
index af7c3a6..ce3bb80 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/ImportHandlerUtils.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/ImportHandlerUtils.java
@@ -19,7 +19,6 @@
package org.apache.fineract.infrastructure.bulkimport.importhandler;
import com.google.common.base.Splitter;
-import com.google.common.collect.Iterables;
import java.time.LocalDate;
import java.util.List;
import
org.apache.fineract.infrastructure.bulkimport.constants.TemplatePopulateImportConstants;
@@ -134,7 +133,7 @@ public final class ImportHandlerUtils {
public static String trimEmptyDecimalPortion(String result) {
if (result != null && result.endsWith(".0")) {
- return Iterables.get(Splitter.on("\\.").split(result), 0);
+ return Splitter.on("\\.").split(result).iterator().next();
} else {
return result;
}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java
index 5a6f252..f0636c7 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java
@@ -18,7 +18,6 @@
*/
package org.apache.fineract.portfolio.transfer.service;
-import com.google.common.collect.Iterables;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import java.time.LocalDate;
@@ -381,7 +380,6 @@ public class TransferWritePlatformServiceJpaRepositoryImpl
implements TransferWr
private void handleClientTransferLifecycleEvent(final Client client, final
Office destinationOffice,
final TransferEventType transferEventType, final JsonCommand
jsonCommand) {
- final Date todaysDate = DateUtils.getDateOfTenant();
/** Get destination loan officer if exists **/
Staff staff = null;
Group destinationGroup = null;
@@ -459,7 +457,7 @@ public class TransferWritePlatformServiceJpaRepositoryImpl
implements TransferWr
} else if (!destinationGroup.isActive()) {
throw new
GroupNotActiveException(destinationGroup.getId());
}
-
transferClientBetweenGroups(Iterables.get(client.getGroups(), 0), client,
destinationGroup, true, staff);
+
transferClientBetweenGroups(client.getGroups().stream().findFirst().get(),
client, destinationGroup, true, staff);
} else if (client.getGroups().size() == 0 && destinationGroup
!= null) {
client.getGroups().add(destinationGroup);
client.updateStaff(destinationGroup.getStaff());
diff --git a/fineract-war/build.gradle b/fineract-war/build.gradle
index e45cbb5..6fca309 100644
--- a/fineract-war/build.gradle
+++ b/fineract-war/build.gradle
@@ -43,6 +43,10 @@ war {
}
enabled = true
classifier = ''
+
+ from('$rootDir/fineract-provider/build/generated/swagger-ui') {
+ into 'BOOT-INF/classes/static/swagger-ui'
+ }
}
dependencies {