From 6d56424f36c8eb2bdf2976fa405a8c3f544e1d44 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Sat, 17 Apr 2021 23:44:52 +0000
Subject: [PATCH] Spring boot and React works now

---
 /dev/null                                                                       |   15 -------
 borgbutler-server/build.gradle                                                  |    7 +--
 build.gradle                                                                    |    2 -
 borgbutler-webapp/build.gradle                                                  |    9 ++--
 borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/RunningMode.kt |    2 
 borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/WebConfig.kt   |   41 +++++++++++---------
 6 files changed, 31 insertions(+), 45 deletions(-)

diff --git a/borgbutler-server/build.gradle b/borgbutler-server/build.gradle
index 9792c70..ea18ddc 100644
--- a/borgbutler-server/build.gradle
+++ b/borgbutler-server/build.gradle
@@ -5,8 +5,8 @@
 description = 'borgbutler-server'
 
 dependencies {
-    compile project(':borgbutler-core')
-    compile project(':borgbutler-webapp')
+    implementation project(':borgbutler-core')
+    implementation project(':borgbutler-webapp')
     // https://mvnrepository.com/artifact/org.apache.commons/commons-text
     implementation group: 'org.apache.commons', name: 'commons-text', version: '1.6'
     implementation group: 'org.apache.commons', name: 'commons-collections4', version: '4.2'
@@ -24,7 +24,7 @@
 
     // https://mvnrepository.com/artifact/commons-cli/commons-cli
     implementation group: 'commons-cli', name: 'commons-cli', version: '1.4'
-    testCompile group: 'org.mockito', name: 'mockito-core', version: '2.21.0'
+    testImplementation group: 'org.mockito', name: 'mockito-core', version: '2.21.0'
     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
 }
 
@@ -60,5 +60,4 @@
 }
 
 distZip.dependsOn ':borgbutler-webapp:packageWebApp'
-//distZip.dependsOn ':borgbutler-docs:buildWebDoc'
 task(dist).dependsOn distZip
diff --git a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/RunningMode.kt b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/RunningMode.kt
index 6c64fb3..9d169f2 100644
--- a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/RunningMode.kt
+++ b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/RunningMode.kt
@@ -40,7 +40,7 @@
 
     val runningInIDE: Boolean
         get() {
-            if (webBundled()) {
+            if (!webBundled()) {
                 return true
             } else {
                 log.warn("*** BorgButler seems to run inside an IDE. ***")
diff --git a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/WebConfig.kt b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/WebConfig.kt
index ba36c17..d500794 100644
--- a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/WebConfig.kt
+++ b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/WebConfig.kt
@@ -4,10 +4,7 @@
 import org.springframework.context.annotation.Bean
 import org.springframework.context.annotation.Configuration
 import org.springframework.web.servlet.ViewResolver
-import org.springframework.web.servlet.config.annotation.CorsRegistry
-import org.springframework.web.servlet.config.annotation.EnableWebMvc
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
+import org.springframework.web.servlet.config.annotation.*
 import org.springframework.web.servlet.view.InternalResourceViewResolver
 
 
@@ -16,23 +13,25 @@
 @Configuration
 @EnableWebMvc
 open class WebConfig : WebMvcConfigurer {
-    @Bean
-    open fun internalResourceViewResolver(): ViewResolver {
-        val bean = InternalResourceViewResolver()
-        if (RunningMode.webBundled()) {
-            bean.setPrefix("/webapp/")
-        } else {
-            bean.setPrefix("borgbutler-webapp/build/")
-        }
-        bean.setSuffix(".html")
-        return bean
-    }
 
     override fun addResourceHandlers(registry: ResourceHandlerRegistry) {
-        registry.addResourceHandler("/static/**")
-            .addResourceLocations("/webapp/static/")
-        registry.addResourceHandler("/**")
-            .addResourceLocations("/webapp/")
+        registry.addResourceHandler("/**").addResourceLocations(*CLASSPATH_RESOURCE_LOCATIONS);
+    }
+
+    @Bean
+    open fun getViewResolver(): ViewResolver? {
+        val resolver = InternalResourceViewResolver()
+        resolver.setSuffix(".html")
+        return resolver
+    }
+
+    override fun configurePathMatch(configurer: PathMatchConfigurer) {
+        configurer.isUseTrailingSlashMatch = true
+    }
+
+    override fun addViewControllers(registry: ViewControllerRegistry) {
+        registry.addViewController("/")
+            .setViewName("forward:/index.html")
     }
 
     override fun addCorsMappings(registry: CorsRegistry) {
@@ -49,4 +48,8 @@
             registry.addMapping("/**")
         }
     }
+
+    companion object {
+        private val CLASSPATH_RESOURCE_LOCATIONS = arrayOf("classpath:/webapp/static/", "classpath:/webapp/")
+    }
 }
diff --git a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/WebController.kt b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/WebController.kt
deleted file mode 100644
index 53956e4..0000000
--- a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/WebController.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package de.micromata.borgbutler.server
-
-import mu.KotlinLogging
-import org.springframework.stereotype.Controller
-import org.springframework.web.bind.annotation.RequestMapping
-
-private val log = KotlinLogging.logger {}
-
-@Controller
-open class WebConntroller {
-    @RequestMapping("/")
-    fun index(): String {
-        return "index"
-    }
-}
diff --git a/borgbutler-webapp/build.gradle b/borgbutler-webapp/build.gradle
index f6485c3..7dbe97f 100644
--- a/borgbutler-webapp/build.gradle
+++ b/borgbutler-webapp/build.gradle
@@ -7,10 +7,11 @@
 }
 
 task packageWebApp(type: Zip) {
+    outputs.upToDateWhen { false } // It's never up-to-date (otherwise borgbutler-webapp.jar is missed).
     dependsOn npmBuild
-    baseName 'borgbutler-webapp'
-    extension 'jar'
-    destinationDir file("${projectDir}")
+    archiveBaseName.set('borgbutler-webapp')
+    archiveExtension.set('jar')
+    destinationDirectory.set(file("${projectDir}"))
     from('build') {
         // optional path under which output will be visible in Java classpath, e.g. static resources path
         into 'webapp'
@@ -21,7 +22,7 @@
         def jarFile = archiveFileName.get()
         ant.move file: "${projectDir}/${jarFile}",
                 toDir: "${buildDir}/libs"
+        println("*** packageWebApp finished.")
     }
 }
 
-task(dist).dependsOn packageWebApp
diff --git a/build.gradle b/build.gradle
index 5141f59..443a1a7 100644
--- a/build.gradle
+++ b/build.gradle
@@ -11,8 +11,6 @@
 }
 
 allprojects {
-    apply plugin: 'maven'
-
     group = 'de.micromata.borgbutler'
     version = '0.5-SNAPSHOT'
 }

--
Gitblit v1.10.0