Compare commits

..

19 commits

Author SHA1 Message Date
b9850af239 add __pycache__/ to .gitignore 2024-06-26 12:03:58 +02:00
3e6a9109af Deliver env MEMBERNAMES from k8 deployment 2024-06-26 11:55:28 +02:00
5f5db8f49b Some cleanup 2024-06-25 15:34:59 +02:00
05dfa191b4 Deliver compiled libs with binary 2024-06-25 15:24:00 +02:00
4cd69350d1 Added new autogenerated reflect-config.json 2024-06-25 13:32:42 +02:00
d39b733d0d Some Docker improvemennts to build graalvm binary 2024-06-25 07:46:00 +02:00
40c45f1b17 Added Test functionality to build.py 2024-06-25 07:29:04 +02:00
15dc206830 Added @PreserveOnRefresh annotation to prevent Singleton exception 2024-06-25 07:21:27 +02:00
4d508660eb Added @PreserveOnRefresh annotation to prevent Singleton exception 2024-06-25 07:20:21 +02:00
9f8d433106 binary compilation in image successfully 2024-06-21 00:27:52 +02:00
1b598653d0 Prebuild commit - build graalvm bin in phase 1, use bin to stage app in phase 2 2024-06-20 22:05:15 +02:00
b2e3ef9ade Providing Docker image eclipse-temurin:17.0.11_9-jdk to run stage 2024-06-20 15:45:49 +02:00
25f7289346 Run Stage to docker image 2024-06-20 15:42:53 +02:00
a0691894ac Some further docker image steps 2024-06-20 15:09:08 +02:00
8ae0416f0c Some further improvements 2024-06-19 17:04:54 +02:00
aa0461e448 Some cleanup, research results in dev_notes :: "refresh/singleton" exception 2024-06-19 15:14:39 +02:00
623e8a9d72 Installing graalvm and usage to build binary for deploying, need some improvements 2024-06-14 17:41:12 +02:00
afb0f46545 Fix in logic, further documentation in dev_notes 2024-06-14 12:11:10 +02:00
6900a54157 Build Docker image with pyb, dev_notes with ToDo 2024-06-13 22:20:25 +02:00
20 changed files with 6822 additions and 2157 deletions

3
.gitignore vendored
View file

@ -1,4 +1,5 @@
build/
.gradle/
.idea/
frontend/generated/
frontend/generated/
__pycache__/

View file

@ -9,8 +9,11 @@ plugins {
id 'org.springframework.boot' version '3.1.5'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
id 'java'
id 'com.vaadin'
id 'com.vaadin' version '24.3.3'
id 'org.graalvm.buildtools.native' version '0.10.2'
}
group = 'com.ModeratorElection'
version = '0.0.1-SNAPSHOT'
repositories {
mavenCentral()
@ -19,6 +22,10 @@ repositories {
maven { setUrl("https://maven.vaadin.com/vaadin-addons") }
}
ext {
set('vaadinVersion', '24.3.3')
}
configurations {
developmentOnly
runtimeClasspath {
@ -27,11 +34,13 @@ configurations {
}
dependencies {
implementation('com.vaadin:vaadin-spring-boot-starter')
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.vaadin:vaadin-spring-boot-starter'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
dependencyManagement {
@ -40,6 +49,42 @@ dependencyManagement {
}
}
test{
tasks.named('test') {
useJUnitPlatform()
}
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
graalvmNative {
binaries {
main {
mainClass = 'com.ModeratorElection.MEApplication'
fallback = false
imageName.set('ModeratorElection')
//javaLauncher @JavaExec :: Configures the java executable to be used to run the tests.
javaLauncher.set(javaToolchains.launcherFor {
languageVersion.set(JavaLanguageVersion.of(17))
//vendor.set(JvmVendorSpec.GRAAL_VM)
})
}
}
testSupport = false
toolchainDetection = false
}
//tasks.withType(JavaCompile) {
// options.compilerArgs += ['-Xlint:deprecation','-Xlint:unchecked']
//}
/*
task runApp(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
mainClass = 'package.Main'
// arguments to pass to the application
args 'membernames'
}*/

56
build.py Normal file
View file

@ -0,0 +1,56 @@
from os import environ
from subprocess import run
from datetime import datetime
from pybuilder.core import task, init
from ddadevops import *
name = 'moderator-election'
MODULE = ''
PROJECT_ROOT_PATH = '../..'
version = "0.0.1-dev"
@init
def initialize(project):
image_tag = version
if "dev" in image_tag:
image_tag += datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
input = {
"name": name,
"module": "vaadin_fullstack",
"stage": "notused",
"project_root_path": PROJECT_ROOT_PATH,
"build_types": ["IMAGE"],
"mixin_types": [],
"image_naming": "NAME_AND_MODULE",
"image_tag": f"{image_tag}",
}
project.build_depends_on("ddadevops>=4.7.0")
build = DevopsImageBuild(project, input)
build.initialize_build_dir()
@task
def image(project):
build = get_devops_build(project)
build.image()
@task
def drun(project):
build = get_devops_build(project)
build.drun()
@task
def test(project):
build = get_devops_build(project)
run("MEMBERNAMES=ALex,Flori ./gradlew test", shell=True, check=True)
@task
def publish(project):
build = get_devops_build(project)
build.dockerhub_login()
build.dockerhub_publish()

82
doc/dev_notes.md Normal file
View file

@ -0,0 +1,82 @@
### ToDo
```
useable vaadin version 24.3.3 !latest v24.4.3
```
```
HowTo BUILD jar?
Failed within local: ./gradle build
java -jar build/libs/ModeratorElection.jar -> localhost:6333 "White Label..."-Error
=> ./gradlew clean build -Pvaadin.productionMode -x processTestAot
..in ide dev: ./gradlew clean vaadinPrepareFrontend
```
```
-x processTestAot exclude
https://docs.spring.io/spring-boot/gradle-plugin/aot.html
Processing Tests
The AOT engine can be applied to JUnit 5 tests that use Springs Test Context Framework.
Suitable tests are processed by the 'processTestAot' task to generate
'ApplicationContextInitializer' code. As with application AOT processing, the 'BeanFactory'
is fully prepared at build-time. As with 'processAot', the 'processTestAot' task is 'JavaExec'
subclass and can be configured as needed to influence this processing.
The 'nativeTest' task of the GraalVM Native Image plugin is automatically configured to
use the output of the 'processAot' and 'processTestAot' tasks.
```
```
For production:
* install.sh
git clone --single-branch --branch MEapp-development https://repo.prod.meissa.de/meissa/ModeratorElection.git /usr/local/src/ModeratorElection
=> --branch main
```
```
build graalvm binary
./gradlew nativeCompile failed, need for some improvements!
1. First build jar locally, and get META-INF with
./gradlew clean build -Pvaadin.productionMode -x processTestAot
java -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image -jar build/libs/ModeratorElection-0.0.1-SNAPSHOT.jar
curl -X GET http://localhost:8080
2. graalvm native-image compilation
./gradlew nativeCompile -Dvaadin.productionMode=true //-H:ConfigurationFileDirectories=/path/to/config-dir/ notwendig falls nicht in src/main/resources/META-INF/native-image/
```
```
gu available
https://docs.oracle.com/en/graalvm/enterprise/21/docs/reference-manual/graalvm-updater/#component-installation
```
```
after npm audit fix during image build
npm warn deprecated workbox-google-analytics@7.0.0: It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained
npm warn deprecated sourcemap-codec@1.4.8: Please use @jridgewell/sourcemap-codec instead
npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated rollup-plugin-terser@7.0.2: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser
npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
```
```
Refresh, Singleton Issue
https://github.com/vaadin/flow/issues/9376
https://mvysny.github.io/cant-move-node/
https://vaadin.com/forum/t/unregistered-node-was-not-found-based-on-its-id-the-tree-is-most-likely-co/161068
https://vaadin.com/docs/v14/flow/integrations/spring/tutorial-spring-scopes
=> @PreserveOnRefresh annotation in MainView.java does the trick
```
```
pyb test funktionsfähig machen, ddadevops Doku weiss mehr
erledigt!
```
```
ddadevops anpassung, dass src code ins docker image übergeben werden kann - ohne git clone
```

View file

@ -3,7 +3,7 @@
This file is auto-generated by Vaadin.
-->
<html lang="en">
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />

View file

@ -1 +1 @@
vaadinVersion=24.3.13
vaadinVersion=24.3.3

View file

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME

8
image/.dockerignore Normal file
View file

@ -0,0 +1,8 @@
/.gradle/
/.idea/
/.pybuilder/
/build/
/doc/
.gitignore
gradlew.bat

24
image/Dockerfile Normal file
View file

@ -0,0 +1,24 @@
#Build Stage
#if npm is needed for development purposes, switch to node
#FROM node:22-bookworm-slim as build-env
FROM ubuntu:latest as build-env
ADD resources /tmp
RUN /tmp/install.sh
ENV LANG=en_US.UTF-8 \
JAVA_HOME=/usr/lib/jvm/graalvm
# Run stage
FROM ubuntu:latest
RUN apt-get update
RUN apt-get -qqy upgrade
EXPOSE 8080
CMD ["mkdir /usr/local/src/ModeratorElection"]
WORKDIR /usr/local/src/ModeratorElection/
#copy graalvm binary
COPY --from=build-env /usr/local/src/ModeratorElection/build/native/nativeCompile/ /usr/local/src/ModeratorElection/
RUN chmod 0740 ./ModeratorElection
ENTRYPOINT ["MEMBERNAMES ./ModeratorElection"]

82
image/resources/install.sh Executable file
View file

@ -0,0 +1,82 @@
#!/bin/bash
set -exo pipefail
function main()
{
upgradeSystem
#openjdk-17-jdk-headless, no need, we are installing graalvm
#unzpip only necessary for gradle installation within main()
apt-get -qqy install curl git build-essential libz-dev zlib1g-dev
mkdir /usr/local/src/ModeratorElection
#change to main branch for production
git clone --single-branch --branch MEapp-development https://repo.prod.meissa.de/meissa/ModeratorElection.git /usr/local/src/ModeratorElection
#download gradle
#gradle_version="8.4"
#curl -SsLo /tmp/gradle-${gradle_version}-bin.zip https://services.gradle.org/distributions/gradle-${gradle_version}-bin.zip
#curl -SsLo /tmp/gradle-${gradle_version}-bin.zip.sha256 https://services.gradle.org/distributions/gradle-${gradle_version}-bin.zip.sha256
#download graalvm
#oracle graalvm-jdk, v17.0.11, 2024-06-14
graalvm_JDK_version="17"
curl -SsLo /tmp/graalvm-jdk-${graalvm_JDK_version}_linux-x64_bin.tar.gz https://download.oracle.com/graalvm/${graalvm_JDK_version}/latest/graalvm-jdk-${graalvm_JDK_version}_linux-x64_bin.tar.gz
curl -SsLo /tmp/graalvm-jdk-${graalvm_JDK_version}_linux-x64_bin.tar.gz.sha256 https://download.oracle.com/graalvm/${graalvm_JDK_version}/latest/graalvm-jdk-${graalvm_JDK_version}_linux-x64_bin.tar.gz.sha256
#graalvm-community-jdk, v17.0.8, 2023-07-25
#graalvm_jdk_version="17.0.8"
#curl -SsLo /tmp/graalvm-community-jdk.tar.gz https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-${graalvm_jdk_version}/graalvm-community-jdk-${graalvm_jdk_version}_linux-x64_bin.tar.gz
#curl -SsLo /tmp/graalvm-checksum https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-${graalvm_jdk_version}/graalvm-community-jdk-${graalvm_jdk_version}_linux-x64_bin.tar.gz.sha256
#checksum graalvm
checksum
#install graalvm
graalvm_inst
#echo "export PATH=$PATH:/usr/lib/jvm/$dirname_graalvm/lib/svm/bin"|tee -a /root/.bashrc
#possibility to install js, node.js,... to graalvm using "gu"
#"gu available" shows available components, native-image is one part of it
#echo "export PATH=$PATH:/usr/lib/jvm/graalvm-jdk-17.0.11+7.1/lib/installer/bin/gu"|tee -a /root/.bashrc
#/usr/lib/jvm/$dirname_graalvm/lib/svm/bin/native-image --version
buildproc
cleanupDocker
} > /dev/null
function checksum() {
#graalvm
echo " /tmp/graalvm-jdk-${graalvm_JDK_version}_linux-x64_bin.tar.gz"|tee -a /tmp/graalvm-jdk-${graalvm_JDK_version}_linux-x64_bin.tar.gz.sha256
sha256sum -c --status /tmp/graalvm-jdk-${graalvm_JDK_version}_linux-x64_bin.tar.gz.sha256
}
function graalvm_inst(){
mkdir /usr/lib/jvm/
tar -C /usr/lib/jvm/ -xzf /tmp/graalvm-jdk-${graalvm_JDK_version}_linux-x64_bin.tar.gz
dirname_graalvm=$(ls /usr/lib/jvm/|grep -e graa)
ln -s /usr/lib/jvm/$dirname_graalvm /usr/lib/jvm/graalvm
ln -s /usr/lib/jvm/graalvm/bin/gu /usr/local/bin
update-alternatives --install /usr/bin/java java /usr/lib/jvm/graalvm/bin/java 0
}
function buildproc() {
cd /usr/local/src/ModeratorElection/
#for dev
#npm install -g npm@latest
#npm audit fix
#npm ci --omit=dev
#build jar
#./gradlew clean build -Pvaadin.productionMode -x processTestAot
#cp -r doc/META-INF src/main/resources
#build graalvm binary
./gradlew nativeCompile -Dvaadin.productionMode=true
}
source /tmp/install_functions_debian.sh
DEBIAN_FRONTEND=noninteractive DEBCONF_NOWARNINGS=yes main

3728
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -4,87 +4,87 @@
"type": "module",
"dependencies": {
"@polymer/polymer": "3.5.1",
"@vaadin/a11y-base": "24.3.13",
"@vaadin/accordion": "24.3.13",
"@vaadin/app-layout": "24.3.13",
"@vaadin/avatar": "24.3.13",
"@vaadin/avatar-group": "24.3.13",
"@vaadin/bundles": "24.3.13",
"@vaadin/button": "24.3.13",
"@vaadin/checkbox": "24.3.13",
"@vaadin/checkbox-group": "24.3.13",
"@vaadin/combo-box": "24.3.13",
"@vaadin/a11y-base": "24.3.3",
"@vaadin/accordion": "24.3.3",
"@vaadin/app-layout": "24.3.3",
"@vaadin/avatar": "24.3.3",
"@vaadin/avatar-group": "24.3.3",
"@vaadin/bundles": "24.3.3",
"@vaadin/button": "24.3.3",
"@vaadin/checkbox": "24.3.3",
"@vaadin/checkbox-group": "24.3.3",
"@vaadin/combo-box": "24.3.3",
"@vaadin/common-frontend": "0.0.19",
"@vaadin/component-base": "24.3.13",
"@vaadin/confirm-dialog": "24.3.13",
"@vaadin/context-menu": "24.3.13",
"@vaadin/custom-field": "24.3.13",
"@vaadin/date-picker": "24.3.13",
"@vaadin/date-time-picker": "24.3.13",
"@vaadin/details": "24.3.13",
"@vaadin/dialog": "24.3.13",
"@vaadin/email-field": "24.3.13",
"@vaadin/field-base": "24.3.13",
"@vaadin/field-highlighter": "24.3.13",
"@vaadin/form-layout": "24.3.13",
"@vaadin/grid": "24.3.13",
"@vaadin/horizontal-layout": "24.3.13",
"@vaadin/icon": "24.3.13",
"@vaadin/icons": "24.3.13",
"@vaadin/input-container": "24.3.13",
"@vaadin/integer-field": "24.3.13",
"@vaadin/item": "24.3.13",
"@vaadin/list-box": "24.3.13",
"@vaadin/lit-renderer": "24.3.13",
"@vaadin/login": "24.3.13",
"@vaadin/menu-bar": "24.3.13",
"@vaadin/message-input": "24.3.13",
"@vaadin/message-list": "24.3.13",
"@vaadin/multi-select-combo-box": "24.3.13",
"@vaadin/notification": "24.3.13",
"@vaadin/number-field": "24.3.13",
"@vaadin/overlay": "24.3.13",
"@vaadin/password-field": "24.3.13",
"@vaadin/polymer-legacy-adapter": "24.3.13",
"@vaadin/progress-bar": "24.3.13",
"@vaadin/radio-group": "24.3.13",
"@vaadin/component-base": "24.3.3",
"@vaadin/confirm-dialog": "24.3.3",
"@vaadin/context-menu": "24.3.3",
"@vaadin/custom-field": "24.3.3",
"@vaadin/date-picker": "24.3.3",
"@vaadin/date-time-picker": "24.3.3",
"@vaadin/details": "24.3.3",
"@vaadin/dialog": "24.3.3",
"@vaadin/email-field": "24.3.3",
"@vaadin/field-base": "24.3.3",
"@vaadin/field-highlighter": "24.3.3",
"@vaadin/form-layout": "24.3.3",
"@vaadin/grid": "24.3.3",
"@vaadin/horizontal-layout": "24.3.3",
"@vaadin/icon": "24.3.3",
"@vaadin/icons": "24.3.3",
"@vaadin/input-container": "24.3.3",
"@vaadin/integer-field": "24.3.3",
"@vaadin/item": "24.3.3",
"@vaadin/list-box": "24.3.3",
"@vaadin/lit-renderer": "24.3.3",
"@vaadin/login": "24.3.3",
"@vaadin/menu-bar": "24.3.3",
"@vaadin/message-input": "24.3.3",
"@vaadin/message-list": "24.3.3",
"@vaadin/multi-select-combo-box": "24.3.3",
"@vaadin/notification": "24.3.3",
"@vaadin/number-field": "24.3.3",
"@vaadin/overlay": "24.3.3",
"@vaadin/password-field": "24.3.3",
"@vaadin/polymer-legacy-adapter": "24.3.3",
"@vaadin/progress-bar": "24.3.3",
"@vaadin/radio-group": "24.3.3",
"@vaadin/router": "1.7.5",
"@vaadin/scroller": "24.3.13",
"@vaadin/select": "24.3.13",
"@vaadin/side-nav": "24.3.13",
"@vaadin/split-layout": "24.3.13",
"@vaadin/tabs": "24.3.13",
"@vaadin/tabsheet": "24.3.13",
"@vaadin/text-area": "24.3.13",
"@vaadin/text-field": "24.3.13",
"@vaadin/time-picker": "24.3.13",
"@vaadin/tooltip": "24.3.13",
"@vaadin/upload": "24.3.13",
"@vaadin/vaadin-development-mode-detector": "2.0.7",
"@vaadin/vaadin-lumo-styles": "24.3.13",
"@vaadin/vaadin-material-styles": "24.3.13",
"@vaadin/vaadin-themable-mixin": "24.3.13",
"@vaadin/scroller": "24.3.3",
"@vaadin/select": "24.3.3",
"@vaadin/side-nav": "24.3.3",
"@vaadin/split-layout": "24.3.3",
"@vaadin/tabs": "24.3.3",
"@vaadin/tabsheet": "24.3.3",
"@vaadin/text-area": "24.3.3",
"@vaadin/text-field": "24.3.3",
"@vaadin/time-picker": "24.3.3",
"@vaadin/tooltip": "24.3.3",
"@vaadin/upload": "24.3.3",
"@vaadin/vaadin-development-mode-detector": "2.0.6",
"@vaadin/vaadin-lumo-styles": "24.3.3",
"@vaadin/vaadin-material-styles": "24.3.3",
"@vaadin/vaadin-themable-mixin": "24.3.3",
"@vaadin/vaadin-usage-statistics": "2.1.2",
"@vaadin/vertical-layout": "24.3.13",
"@vaadin/virtual-list": "24.3.13",
"@vaadin/vertical-layout": "24.3.3",
"@vaadin/virtual-list": "24.3.3",
"construct-style-sheets-polyfill": "3.1.0",
"date-fns": "2.29.3",
"lit": "3.1.2"
"lit": "3.1.0"
},
"devDependencies": {
"@rollup/plugin-replace": "5.0.5",
"@rollup/pluginutils": "5.1.0",
"@vitejs/plugin-react": "4.2.1",
"@rollup/plugin-replace": "5.0.4",
"@rollup/pluginutils": "5.0.5",
"@vitejs/plugin-react": "4.2.0",
"@vitejs/plugin-react-swc": "3.5.0",
"async": "3.2.4",
"glob": "10.3.3",
"rollup-plugin-brotli": "3.1.0",
"rollup-plugin-visualizer": "5.12.0",
"rollup-plugin-visualizer": "5.9.2",
"strip-css-comments": "5.0.0",
"transform-ast": "2.4.4",
"typescript": "5.3.3",
"vite": "5.1.7",
"vite-plugin-checker": "0.6.4",
"vite": "5.0.6",
"vite-plugin-checker": "0.6.2",
"workbox-build": "7.0.0",
"workbox-core": "7.0.0",
"workbox-precaching": "7.0.0"
@ -92,95 +92,107 @@
"vaadin": {
"dependencies": {
"@polymer/polymer": "3.5.1",
"@vaadin/a11y-base": "24.3.13",
"@vaadin/accordion": "24.3.13",
"@vaadin/app-layout": "24.3.13",
"@vaadin/avatar": "24.3.13",
"@vaadin/avatar-group": "24.3.13",
"@vaadin/bundles": "24.3.13",
"@vaadin/button": "24.3.13",
"@vaadin/checkbox": "24.3.13",
"@vaadin/checkbox-group": "24.3.13",
"@vaadin/combo-box": "24.3.13",
"@vaadin/a11y-base": "24.3.3",
"@vaadin/accordion": "24.3.3",
"@vaadin/app-layout": "24.3.3",
"@vaadin/avatar": "24.3.3",
"@vaadin/avatar-group": "24.3.3",
"@vaadin/bundles": "24.3.3",
"@vaadin/button": "24.3.3",
"@vaadin/checkbox": "24.3.3",
"@vaadin/checkbox-group": "24.3.3",
"@vaadin/combo-box": "24.3.3",
"@vaadin/common-frontend": "0.0.19",
"@vaadin/component-base": "24.3.13",
"@vaadin/confirm-dialog": "24.3.13",
"@vaadin/context-menu": "24.3.13",
"@vaadin/custom-field": "24.3.13",
"@vaadin/date-picker": "24.3.13",
"@vaadin/date-time-picker": "24.3.13",
"@vaadin/details": "24.3.13",
"@vaadin/dialog": "24.3.13",
"@vaadin/email-field": "24.3.13",
"@vaadin/field-base": "24.3.13",
"@vaadin/field-highlighter": "24.3.13",
"@vaadin/form-layout": "24.3.13",
"@vaadin/grid": "24.3.13",
"@vaadin/horizontal-layout": "24.3.13",
"@vaadin/icon": "24.3.13",
"@vaadin/icons": "24.3.13",
"@vaadin/input-container": "24.3.13",
"@vaadin/integer-field": "24.3.13",
"@vaadin/item": "24.3.13",
"@vaadin/list-box": "24.3.13",
"@vaadin/lit-renderer": "24.3.13",
"@vaadin/login": "24.3.13",
"@vaadin/menu-bar": "24.3.13",
"@vaadin/message-input": "24.3.13",
"@vaadin/message-list": "24.3.13",
"@vaadin/multi-select-combo-box": "24.3.13",
"@vaadin/notification": "24.3.13",
"@vaadin/number-field": "24.3.13",
"@vaadin/overlay": "24.3.13",
"@vaadin/password-field": "24.3.13",
"@vaadin/polymer-legacy-adapter": "24.3.13",
"@vaadin/progress-bar": "24.3.13",
"@vaadin/radio-group": "24.3.13",
"@vaadin/component-base": "24.3.3",
"@vaadin/confirm-dialog": "24.3.3",
"@vaadin/context-menu": "24.3.3",
"@vaadin/custom-field": "24.3.3",
"@vaadin/date-picker": "24.3.3",
"@vaadin/date-time-picker": "24.3.3",
"@vaadin/details": "24.3.3",
"@vaadin/dialog": "24.3.3",
"@vaadin/email-field": "24.3.3",
"@vaadin/field-base": "24.3.3",
"@vaadin/field-highlighter": "24.3.3",
"@vaadin/form-layout": "24.3.3",
"@vaadin/grid": "24.3.3",
"@vaadin/horizontal-layout": "24.3.3",
"@vaadin/icon": "24.3.3",
"@vaadin/icons": "24.3.3",
"@vaadin/input-container": "24.3.3",
"@vaadin/integer-field": "24.3.3",
"@vaadin/item": "24.3.3",
"@vaadin/list-box": "24.3.3",
"@vaadin/lit-renderer": "24.3.3",
"@vaadin/login": "24.3.3",
"@vaadin/menu-bar": "24.3.3",
"@vaadin/message-input": "24.3.3",
"@vaadin/message-list": "24.3.3",
"@vaadin/multi-select-combo-box": "24.3.3",
"@vaadin/notification": "24.3.3",
"@vaadin/number-field": "24.3.3",
"@vaadin/overlay": "24.3.3",
"@vaadin/password-field": "24.3.3",
"@vaadin/polymer-legacy-adapter": "24.3.3",
"@vaadin/progress-bar": "24.3.3",
"@vaadin/radio-group": "24.3.3",
"@vaadin/router": "1.7.5",
"@vaadin/scroller": "24.3.13",
"@vaadin/select": "24.3.13",
"@vaadin/side-nav": "24.3.13",
"@vaadin/split-layout": "24.3.13",
"@vaadin/tabs": "24.3.13",
"@vaadin/tabsheet": "24.3.13",
"@vaadin/text-area": "24.3.13",
"@vaadin/text-field": "24.3.13",
"@vaadin/time-picker": "24.3.13",
"@vaadin/tooltip": "24.3.13",
"@vaadin/upload": "24.3.13",
"@vaadin/vaadin-development-mode-detector": "2.0.7",
"@vaadin/vaadin-lumo-styles": "24.3.13",
"@vaadin/vaadin-material-styles": "24.3.13",
"@vaadin/vaadin-themable-mixin": "24.3.13",
"@vaadin/scroller": "24.3.3",
"@vaadin/select": "24.3.3",
"@vaadin/side-nav": "24.3.3",
"@vaadin/split-layout": "24.3.3",
"@vaadin/tabs": "24.3.3",
"@vaadin/tabsheet": "24.3.3",
"@vaadin/text-area": "24.3.3",
"@vaadin/text-field": "24.3.3",
"@vaadin/time-picker": "24.3.3",
"@vaadin/tooltip": "24.3.3",
"@vaadin/upload": "24.3.3",
"@vaadin/vaadin-development-mode-detector": "2.0.6",
"@vaadin/vaadin-lumo-styles": "24.3.3",
"@vaadin/vaadin-material-styles": "24.3.3",
"@vaadin/vaadin-themable-mixin": "24.3.3",
"@vaadin/vaadin-usage-statistics": "2.1.2",
"@vaadin/vertical-layout": "24.3.13",
"@vaadin/virtual-list": "24.3.13",
"@vaadin/vertical-layout": "24.3.3",
"@vaadin/virtual-list": "24.3.3",
"construct-style-sheets-polyfill": "3.1.0",
"date-fns": "2.29.3",
"lit": "3.1.2"
"lit": "3.1.0"
},
"devDependencies": {
"@rollup/plugin-replace": "5.0.5",
"@rollup/pluginutils": "5.1.0",
"@vitejs/plugin-react": "4.2.1",
"@rollup/plugin-replace": "5.0.4",
"@rollup/pluginutils": "5.0.5",
"@vitejs/plugin-react": "4.2.0",
"@vitejs/plugin-react-swc": "3.5.0",
"async": "3.2.4",
"glob": "10.3.3",
"rollup-plugin-brotli": "3.1.0",
"rollup-plugin-visualizer": "5.12.0",
"rollup-plugin-visualizer": "5.9.2",
"strip-css-comments": "5.0.0",
"transform-ast": "2.4.4",
"typescript": "5.3.3",
"vite": "5.1.7",
"vite-plugin-checker": "0.6.4",
"vite": "5.0.6",
"vite-plugin-checker": "0.6.2",
"workbox-build": "7.0.0",
"workbox-core": "7.0.0",
"workbox-precaching": "7.0.0"
},
"hash": "1b578191af08a883e68dfca9e08ad525b69d9824e0ec3e82a2689cdcf77b5ffe"
"hash": "ac7fbcf666df2ebff56ca009354fc8d94a61c61e3e86a9617779b03878adc88b"
},
"overrides": {
"@vaadin/bundles": "$@vaadin/bundles",
"@vaadin/polymer-legacy-adapter": "$@vaadin/polymer-legacy-adapter",
"@vaadin/vaadin-development-mode-detector": "$@vaadin/vaadin-development-mode-detector",
"@vaadin/vaadin-lumo-styles": "$@vaadin/vaadin-lumo-styles",
"@vaadin/vaadin-material-styles": "$@vaadin/vaadin-material-styles",
"@vaadin/router": "$@vaadin/router",
"@vaadin/vaadin-usage-statistics": "$@vaadin/vaadin-usage-statistics",
"@vaadin/common-frontend": "$@vaadin/common-frontend",
"construct-style-sheets-polyfill": "$construct-style-sheets-polyfill",
"lit": "$lit",
"@polymer/polymer": "$@polymer/polymer",
"@vaadin/vaadin-themable-mixin": "$@vaadin/vaadin-themable-mixin",
"date-fns": "$date-fns",
"@vaadin/a11y-base": "$@vaadin/a11y-base",
"@vaadin/accordion": "$@vaadin/accordion",
"@vaadin/app-layout": "$@vaadin/app-layout",
@ -220,7 +232,6 @@
"@vaadin/number-field": "$@vaadin/number-field",
"@vaadin/overlay": "$@vaadin/overlay",
"@vaadin/password-field": "$@vaadin/password-field",
"@vaadin/polymer-legacy-adapter": "$@vaadin/polymer-legacy-adapter",
"@vaadin/progress-bar": "$@vaadin/progress-bar",
"@vaadin/radio-group": "$@vaadin/radio-group",
"@vaadin/scroller": "$@vaadin/scroller",
@ -234,18 +245,7 @@
"@vaadin/time-picker": "$@vaadin/time-picker",
"@vaadin/tooltip": "$@vaadin/tooltip",
"@vaadin/upload": "$@vaadin/upload",
"@vaadin/vaadin-development-mode-detector": "$@vaadin/vaadin-development-mode-detector",
"@vaadin/vaadin-lumo-styles": "$@vaadin/vaadin-lumo-styles",
"@vaadin/vaadin-material-styles": "$@vaadin/vaadin-material-styles",
"@vaadin/router": "$@vaadin/router",
"@vaadin/vaadin-usage-statistics": "$@vaadin/vaadin-usage-statistics",
"@vaadin/vertical-layout": "$@vaadin/vertical-layout",
"@vaadin/virtual-list": "$@vaadin/virtual-list",
"@vaadin/common-frontend": "$@vaadin/common-frontend",
"construct-style-sheets-polyfill": "$construct-style-sheets-polyfill",
"lit": "$lit",
"@polymer/polymer": "$@polymer/polymer",
"@vaadin/vaadin-themable-mixin": "$@vaadin/vaadin-themable-mixin",
"date-fns": "$date-fns"
"@vaadin/virtual-list": "$@vaadin/virtual-list"
}
}

View file

@ -12,6 +12,7 @@ import com.vaadin.flow.component.notification.Notification;
import com.vaadin.flow.component.notification.NotificationVariant;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.router.PreserveOnRefresh;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.router.PageTitle;
import org.springframework.beans.factory.annotation.Value;
@ -23,6 +24,7 @@ import java.util.List;
@Route("")
@PageTitle("Moderatorenwahl")
@PreserveOnRefresh
@Configuration
public class MainView extends VerticalLayout {
@ -38,8 +40,9 @@ public class MainView extends VerticalLayout {
Button electNow = new Button("Elect!", buttonClickEvent -> {
try {
ArrayList checkboxSelectedMembers = new ArrayList(checkboxGroup.getSelectedItems());
Notification moderatorNotification = new Notification()
.show("Nächster Moderator: " + electMember(selectMemberItemsNameslist));
.show("Nächster Moderator: " + electMember(checkboxSelectedMembers));
moderatorNotification.setPosition(Notification.Position.BOTTOM_CENTER);
} catch(Exception exceptionEvent) {
Notification errorNotification = new Notification();
@ -50,9 +53,7 @@ public class MainView extends VerticalLayout {
Button closeButton = new Button(new Icon("lumo", "cross"));
closeButton.addThemeVariants(ButtonVariant.LUMO_TERTIARY_INLINE);
closeButton.setAriaLabel("Close");
closeButton.addClickListener(closeButtonEvent -> {
errorNotification.close();
});
closeButton.addClickListener(closeButtonEvent -> errorNotification.close());
HorizontalLayout layout = new HorizontalLayout(text, closeButton);
layout.setAlignItems(Alignment.CENTER);

View file

@ -0,0 +1,49 @@
[
{
"name":"java.awt.GraphicsEnvironment",
"methods":[{"name":"isHeadless","parameterTypes":[] }]
},
{
"name":"java.awt.image.BufferedImage",
"fields":[{"name":"colorModel"}, {"name":"imageType"}, {"name":"raster"}],
"methods":[{"name":"getRGB","parameterTypes":["int","int","int","int","int[]","int","int"] }, {"name":"setRGB","parameterTypes":["int","int","int","int","int[]","int","int"] }]
},
{
"name":"java.awt.image.ColorModel",
"fields":[{"name":"colorSpace"}, {"name":"colorSpaceType"}, {"name":"isAlphaPremultiplied"}, {"name":"is_sRGB"}, {"name":"nBits"}, {"name":"numComponents"}, {"name":"pData"}, {"name":"supportsAlpha"}, {"name":"transparency"}],
"methods":[{"name":"getRGBdefault","parameterTypes":[] }]
},
{
"name":"java.awt.image.Raster",
"fields":[{"name":"dataBuffer"}, {"name":"height"}, {"name":"minX"}, {"name":"minY"}, {"name":"numBands"}, {"name":"numDataElements"}, {"name":"sampleModel"}, {"name":"sampleModelTranslateX"}, {"name":"sampleModelTranslateY"}, {"name":"width"}]
},
{
"name":"java.awt.image.SampleModel",
"fields":[{"name":"height"}, {"name":"width"}],
"methods":[{"name":"getPixels","parameterTypes":["int","int","int","int","int[]","java.awt.image.DataBuffer"] }, {"name":"setPixels","parameterTypes":["int","int","int","int","int[]","java.awt.image.DataBuffer"] }]
},
{
"name":"java.awt.image.SinglePixelPackedSampleModel",
"fields":[{"name":"bitMasks"}, {"name":"bitOffsets"}, {"name":"bitSizes"}, {"name":"maxBitSize"}]
},
{
"name":"java.lang.Boolean",
"methods":[{"name":"getBoolean","parameterTypes":["java.lang.String"] }]
},
{
"name":"java.lang.System",
"methods":[{"name":"load","parameterTypes":["java.lang.String"] }, {"name":"setProperty","parameterTypes":["java.lang.String","java.lang.String"] }]
},
{
"name":"sun.awt.image.ByteComponentRaster",
"fields":[{"name":"data"}, {"name":"dataOffsets"}, {"name":"pixelStride"}, {"name":"scanlineStride"}, {"name":"type"}]
},
{
"name":"sun.java2d.Disposer",
"methods":[{"name":"addRecord","parameterTypes":["java.lang.Object","long","long"] }]
},
{
"name":"sun.management.VMManagementImpl",
"fields":[{"name":"compTimeMonitoringSupport"}, {"name":"currentThreadCpuTimeSupport"}, {"name":"objectMonitorUsageSupport"}, {"name":"otherThreadCpuTimeSupport"}, {"name":"remoteDiagnosticCommandsSupport"}, {"name":"synchronizerUsageSupport"}, {"name":"threadAllocatedMemorySupport"}, {"name":"threadContentionMonitoringSupport"}]
}
]

View file

@ -0,0 +1,8 @@
[
{
"type":"agent-extracted",
"classes":[
]
}
]

View file

@ -0,0 +1,17 @@
[
{
"interfaces":["java.lang.reflect.ParameterizedType","org.springframework.core.SerializableTypeWrapper$SerializableTypeProxy","java.io.Serializable"]
},
{
"interfaces":["java.lang.reflect.TypeVariable","org.springframework.core.SerializableTypeWrapper$SerializableTypeProxy","java.io.Serializable"]
},
{
"interfaces":["java.lang.reflect.WildcardType","org.springframework.core.SerializableTypeWrapper$SerializableTypeProxy","java.io.Serializable"]
},
{
"interfaces":["org.springframework.boot.context.properties.ConfigurationProperties"]
},
{
"interfaces":["org.springframework.web.bind.annotation.RequestMapping"]
}
]

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,568 @@
{
"resources":{
"includes":[{
"pattern":"\\QMETA-INF/VAADIN/config/flow-build-info.json\\E"
}, {
"pattern":"\\QMETA-INF/VAADIN/config/stats.json\\E"
}, {
"pattern":"\\QMETA-INF/VAADIN/webapp/VAADIN/static/themes/my-theme/theme.json\\E"
}, {
"pattern":"\\QMETA-INF/VAADIN/webapp/index.html\\E"
}, {
"pattern":"\\QMETA-INF/services/ch.qos.logback.classic.spi.Configurator\\E"
}, {
"pattern":"\\QMETA-INF/services/jakarta.el.ExpressionFactory\\E"
}, {
"pattern":"\\QMETA-INF/services/jakarta.validation.spi.ValidationProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/jakarta.websocket.server.ServerEndpointConfig$Configurator\\E"
}, {
"pattern":"\\QMETA-INF/services/org.slf4j.spi.SLF4JServiceProvider\\E"
}, {
"pattern":"\\QMETA-INF/spring-autoconfigure-metadata.properties\\E"
}, {
"pattern":"\\QMETA-INF/spring.factories\\E"
}, {
"pattern":"\\QMETA-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports\\E"
}, {
"pattern":"\\Qapplication.properties\\E"
}, {
"pattern":"\\Qcom/ModeratorElection/MainView.class\\E"
}, {
"pattern":"\\Qcom/ModeratorElection/\\E"
}, {
"pattern":"\\Qcom/github/javaparser/ast/visitor/GenericVisitor.class\\E"
}, {
"pattern":"\\Qcom/github/javaparser/ast/visitor/GenericVisitorAdapter.class\\E"
}, {
"pattern":"\\Qcom/vaadin/base/devserver/AbstractDevServerRunner.class\\E"
}, {
"pattern":"\\Qcom/vaadin/base/devserver/DevToolsInterface.class\\E"
}, {
"pattern":"\\Qcom/vaadin/base/devserver/\\E"
}, {
"pattern":"\\Qcom/vaadin/base/devserver/editor/Editor.class\\E"
}, {
"pattern":"\\Qcom/vaadin/base/devserver/themeeditor/messages/BaseRequest.class\\E"
}, {
"pattern":"\\Qcom/vaadin/base/devserver/themeeditor/messages/BaseResponse.class\\E"
}, {
"pattern":"\\Qcom/vaadin/base/devserver/themeeditor/utils/HasSourceModifier.class\\E"
}, {
"pattern":"\\Qcom/vaadin/base/devserver/themeeditor/utils/HasThemeModifier.class\\E"
}, {
"pattern":"\\Qcom/vaadin/base/devserver/themeeditor/utils/MessageHandler.class\\E"
}, {
"pattern":"\\Qcom/vaadin/base/devserver/themeeditor/utils/ThemeEditorException.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/AttachNotifier.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/BlurNotifier.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/ClickNotifier.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/Component$MapToExistingElement.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/Component.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/DetachNotifier.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/FocusNotifier.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/Focusable.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/HasComponents.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/HasElement.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/HasEnabled.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/HasOrderedComponents.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/HasSize.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/HasStyle.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/HasText.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/Tag.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/dependency/JsModule$Container.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/dependency/NpmPackage$Container.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/orderedlayout/FlexComponent.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/orderedlayout/ThemableLayout.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/orderedlayout/VerticalLayout.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/page/AppShellConfigurator.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/dom/NodeVisitor.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/internal/BrowserLiveReload.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/internal/BrowserLiveReloadAccessor.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/internal/DevModeHandler.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/internal/DevModeHandlerManager.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/internal/Pair.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/AbstractRouteNotFoundError.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/AfterNavigationObserver.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/BeforeEvent.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/NavigationEvent.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/NavigationHandler.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/PageTitle.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/PreserveOnRefresh.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/Route.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/RouteBaseData.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/RoutePathProvider.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/RouteResolver.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/internal/AbstractNavigationStateRenderer.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/internal/AfterNavigationHandler.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/internal/BeforeEnterHandler.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/internal/BeforeLeaveHandler.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/internal/ConfiguredRoutes.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/server/BootstrapHandler.js\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/server/RequestHandler.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/server/RouteRegistry.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/server/communication/FragmentedMessageHolder.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/server/default-logo.png\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/server/default-offline-page.html\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/server/frontend/scanner/ClassFinder$DefaultClassFinder.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/server/frontend/scanner/ClassFinder.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/server/startup/ClassLoaderAwareServletContainerInitializer.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/server/startup/VaadinContextStartupInitializer.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/server/startup/VaadinServletContextStartupInitializer.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/spring/SpringBootAutoConfiguration.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/spring/VaadinApplicationConfiguration.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/spring/VaadinScopesConfig.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/spring/VaadinServletConfiguration$RootExcludeHandler.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/spring/VaadinServletConfiguration.class\\E"
}, {
"pattern":"\\Qjakarta/servlet/ServletContainerInitializer.class\\E"
}, {
"pattern":"\\Qjakarta/servlet/ServletContextListener.class\\E"
}, {
"pattern":"\\Qjakarta/websocket/Endpoint.class\\E"
}, {
"pattern":"\\Qjakarta/websocket/MessageHandler$Whole.class\\E"
}, {
"pattern":"\\Qjakarta/websocket/MessageHandler.class\\E"
}, {
"pattern":"\\Qorg/apache/catalina/core/RestrictedFilters.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/core/RestrictedListeners.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/core/RestrictedServlets.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/loader/JdbcLeakPrevention.class\\E"
}, {
"pattern":"\\Qorg/apache/catalina/util/CharsetMapperDefault.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/util/ServerInfo.properties\\E"
}, {
"pattern":"\\Qorg/atmosphere/util/version.properties\\E"
}, {
"pattern":"\\Qorg/springframework/beans/factory/Aware.class\\E"
}, {
"pattern":"\\Qorg/springframework/beans/factory/BeanFactoryAware.class\\E"
}, {
"pattern":"\\Qorg/springframework/beans/factory/config/BeanFactoryPostProcessor.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/AbstractDependsOnBeanFactoryPostProcessor.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/AutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/AutoConfigureAfter.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/AutoConfigureBefore.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/AutoConfigureOrder.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/admin/SpringApplicationAdminJmxAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/aop/AopAutoConfiguration$AspectJAutoProxyingConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/aop/AopAutoConfiguration$ClassProxyingConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/aop/AopAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/availability/ApplicationAvailabilityAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/cache/CacheAutoConfiguration$CacheConfigurationImportSelector.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/cache/CacheAutoConfiguration$CacheManagerEntityManagerFactoryDependsOnPostProcessor.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/cache/CacheAutoConfiguration$CacheManagerValidator.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/cache/CacheAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/cache/GenericCacheConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/cache/NoOpCacheConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/cache/SimpleCacheConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/condition/ConditionalOnBean.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/condition/ConditionalOnClass.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/condition/ConditionalOnMissingBean.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/condition/ConditionalOnMissingClass.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/condition/ConditionalOnNotWarDeployment.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/condition/ConditionalOnProperty.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/condition/ConditionalOnResource.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/condition/ConditionalOnWebApplication.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/context/ConfigurationPropertiesAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/context/LifecycleAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/context/MessageSourceAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/context/PropertyPlaceholderAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration$HttpMessageConvertersAutoConfigurationRuntimeHints.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration$NotReactiveWebApplicationCondition$ReactiveWebApplication.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration$NotReactiveWebApplicationCondition.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/http/JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/http/JacksonHttpMessageConvertersConfiguration$MappingJackson2XmlHttpMessageConverterConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/http/JacksonHttpMessageConvertersConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/http/JsonbHttpMessageConvertersConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/info/ProjectInfoAutoConfiguration$GitResourceAvailableCondition.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/info/ProjectInfoAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration$StandardJackson2ObjectMapperBuilderCustomizer.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonAutoConfigurationRuntimeHints.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonMixinConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$JacksonObjectMapperConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration$ParameterNamesModuleConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/jmx/JmxAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/orm/jpa/EntityManagerFactoryDependsOnPostProcessor.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/sql/init/R2dbcInitializationConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/sql/init/SqlInitializationAutoConfiguration$SqlInitializationModeCondition$ModeIsNever.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/sql/init/SqlInitializationAutoConfiguration$SqlInitializationModeCondition.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/sql/init/SqlInitializationAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/ssl/SslAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/task/TaskExecutionAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/task/TaskSchedulingAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/validation/PrimaryDefaultValidatorPostProcessor.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/validation/ValidationAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfiguration$NotReactiveWebApplicationCondition$ReactiveWebApplication.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfiguration$NotReactiveWebApplicationCondition.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration$JettyWebServerFactoryCustomizerConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration$NettyWebServerFactoryCustomizerConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration$UndertowWebServerFactoryCustomizerConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/embedded/EmbeddedWebServerFactoryCustomizerAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration$DefaultDispatcherServletCondition.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration$DispatcherServletConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration$DispatcherServletRegistrationCondition.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/DispatcherServletAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/HttpEncodingAutoConfiguration$LocaleCharsetMappingsCustomizer.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/HttpEncodingAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/MultipartAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryAutoConfiguration$BeanPostProcessorsRegistrar.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryAutoConfiguration$ForwardedHeaderFilterConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryAutoConfiguration$ForwardedHeaderFilterCustomizer.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryConfiguration$EmbeddedJetty.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryConfiguration$EmbeddedTomcat.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryConfiguration$EmbeddedUndertow.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$OptionalPathExtensionContentNegotiationStrategy.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$ProblemDetailsErrorHandlingConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$ResourceChainCustomizerConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$ResourceChainResourceHandlerRegistrationCustomizer.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$ResourceHandlerRegistrationCustomizer.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$WelcomePageHandlerMappingFactory.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$DefaultErrorViewResolverConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$ErrorPageCustomizer.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$ErrorTemplateMissingCondition.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$PreserveErrorControllerTargetClassPostProcessor.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$StaticView.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/servlet/error/ErrorMvcAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/websocket/servlet/WebSocketMessagingAutoConfiguration$WebSocketMessageConverterConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/websocket/servlet/WebSocketMessagingAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration$JettyWebSocketConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration$TomcatWebSocketConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration$UndertowWebSocketConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/context/properties/EnableConfigurationProperties.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/context/properties/EnableConfigurationPropertiesRegistrar.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/sql/init/dependency/DatabaseInitializationDependencyConfigurer.class\\E"
}, {
"pattern":"\\Qorg/springframework/context/ApplicationContextAware.class\\E"
}, {
"pattern":"\\Qorg/springframework/context/ApplicationContextInitializer.class\\E"
}, {
"pattern":"\\Qorg/springframework/context/ResourceLoaderAware.class\\E"
}, {
"pattern":"\\Qorg/springframework/context/annotation/Conditional.class\\E"
}, {
"pattern":"\\Qorg/springframework/context/annotation/Configuration.class\\E"
}, {
"pattern":"\\Qorg/springframework/context/annotation/Import.class\\E"
}, {
"pattern":"\\Qorg/springframework/context/annotation/ImportBeanDefinitionRegistrar.class\\E"
}, {
"pattern":"\\Qorg/springframework/context/annotation/ImportRuntimeHints.class\\E"
}, {
"pattern":"\\Qorg/springframework/core/Ordered.class\\E"
}, {
"pattern":"\\Qorg/springframework/core/annotation/Order.class\\E"
}, {
"pattern":"\\Qorg/springframework/web/context/ServletContextAware.class\\E"
}, {
"pattern":"\\Qorg/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport$NoOpValidator.class\\E"
}, {
"pattern":"\\Qorg/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.class\\E"
}, {
"pattern":"\\Qorg/springframework/web/servlet/config/annotation/WebMvcConfigurer.class\\E"
}, {
"pattern":"\\Qvaadin-featureflags.properties\\E"
}, {
"pattern":"\\Qvite.generated.ts\\E"
}]},
"bundles":[{
"name":"jakarta.servlet.LocalStrings",
"locales":[""]
}, {
"name":"jakarta.servlet.http.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.catalina.authenticator.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.catalina.authenticator.jaspic.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.catalina.connector.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.catalina.core.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.catalina.deploy.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.catalina.loader.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.catalina.mapper.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.catalina.mbeans.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.catalina.realm.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.catalina.security.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.catalina.session.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.catalina.startup.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.catalina.util.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.catalina.valves.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.catalina.webresources.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.coyote.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.coyote.http11.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.coyote.http11.filters.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.naming.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.tomcat.util.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.tomcat.util.buf.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.tomcat.util.compat.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.tomcat.util.descriptor.web.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.tomcat.util.http.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.tomcat.util.http.parser.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.tomcat.util.modeler.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.tomcat.util.net.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.tomcat.util.scan.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.tomcat.util.threads.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.tomcat.websocket.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.tomcat.websocket.pojo.LocalStrings",
"locales":[""]
}, {
"name":"org.apache.tomcat.websocket.server.LocalStrings",
"locales":[""]
}, {
"name":"sun.awt.resources.awt",
"classNames":["sun.awt.resources.awt", "sun.awt.resources.awt_de"]
}]
}

View file

@ -0,0 +1,8 @@
{
"types":[
],
"lambdaCapturingTypes":[
],
"proxies":[
]
}

View file

@ -1,4 +1,8 @@
server.port=${PORT:6333}
spring.application.name=ModeratorElection
spring.main.banner-mode=off
server.port=${PORT:8080}
logging.level.org.atmosphere = warn
spring.mustache.check-template-location = false
@ -6,6 +10,6 @@ spring.mustache.check-template-location = false
vaadin.launch-browser=true
# To improve the performance during development.
# For more information https://vaadin.com/docs/latest/integrations/spring/configuration#special-configuration-parameters
vaadin.allowed-packages = com.vaadin,org.vaadin,dev.hilla,com.example.application
vaadin.allowed-packages = com.vaadin,org.vaadin,dev.hilla,com.ModeratorElection.MEApplication
spring.jpa.defer-datasource-initialization = true
membernames=${MEMBERNAMES:Micha,Ansgar,Clemens,Mattis,Erik,Mirco}
membernames=${MEMBERNAMES}