Compare commits

...

51 commits

Author SHA1 Message Date
41aa59d17d Fix exception "new request handling", tie beans to the lifecycle of Vaadin Flow routing components; PreserveOnRefresh is not necessaary 2024-09-05 15:33:47 +02:00
8ce25820e8 Fix entrypoint 2024-08-09 09:45:59 +02:00
b2841e2e24 Fix ci & push image to Docker 2024-07-26 10:40:40 +02:00
5b55a30d57 Fix ci & push image to Docker 2024-07-25 16:12:18 +02:00
033490a896 Fix ci & push image to Docker 2024-07-25 15:38:31 +02:00
b69a3f93e6 Fix ci & push image to Docker 2024-07-22 09:03:14 +02:00
0caa0aabca Fix ci & push image to Docker 2024-07-22 09:02:03 +02:00
c5d11bf760 Fix ci 2024-07-18 11:25:26 +02:00
0ecf5c2dd8 Fix ci 2024-07-18 11:15:59 +02:00
48f818bc57 [skip ci] correct path settings 2024-07-18 11:13:54 +02:00
9256ed0bc8 Try build image in ci 2024-07-12 13:32:25 +02:00
7be6db5469 Try build image in ci 2024-07-12 13:31:13 +02:00
69b9664c0f Try build image in ci 2024-07-12 13:29:29 +02:00
b7813a14e8 Try build image in ci 2024-07-12 13:28:46 +02:00
8d49e4d6cf Try build image in ci 2024-07-12 13:26:27 +02:00
4f67ba3c23 Try build image in ci 2024-07-12 13:22:55 +02:00
dceb69a44a [skip-ci] Moved .dockerignore 2024-07-12 13:18:43 +02:00
8eaaf91f92 Be compliant with deployment needs 2024-07-12 13:15:12 +02:00
2f59536c54 Take local files 2024-07-12 13:14:37 +02:00
06276fad8c Fix yml 2024-07-11 21:56:35 +02:00
d967c98440 Try to cache and build artifact 2024-07-11 21:54:15 +02:00
0c9cefc347 [skip ci] No snapshot version 2024-07-11 21:36:59 +02:00
e2d1a9144b [skip ci] Dockerize section, how to handle different Dockerfile stages 2024-07-11 21:36:24 +02:00
ae34bec4df [skip ci]Refactoring in Docker image building, see also section dockerizing in doc/dev_notes.md to handle one Dockerfile for different builds 2024-07-11 21:35:08 +02:00
38edbbfb94 Fix, try caching gradle 2024-07-09 14:43:53 +02:00
f1fcdba612 try caching gradle 2024-07-09 14:38:56 +02:00
8f2bc53a3e fix: work with img section in ci, test stage added 2024-07-09 13:57:21 +02:00
bdcbc3ebdc work with img section in ci, test stage added 2024-07-09 13:55:39 +02:00
6c0ef48a9d easy build in ci 2024-07-09 13:31:16 +02:00
0872a7fd3f build in ci 2024-07-09 10:40:04 +02:00
db6fc13092 [skip ci] new META-INF/native-image created with graalvm agent 22 2024-07-09 09:09:37 +02:00
c6f6ce8d32 [skip ci] further linting 2024-07-09 09:08:38 +02:00
a2793c19a4 [skip ci] some linting 2024-07-09 09:07:03 +02:00
76336077a2 [skip ci] Fix Test for usage with processTestAot & refactor/linting 2024-07-09 09:06:14 +02:00
fbf5ca1cac [skip ci] Bump to latest versions: springframework, spring.dependency-management, com.vaadin, java/graalvm 22 2024-07-09 09:02:32 +02:00
4b64fed80a [skip ci] Cleanup dev_notes 2024-07-09 08:58:05 +02:00
04a7b3c834 Further try to run Test only in CI 2024-07-08 12:29:32 +02:00
716d241689 Try to run Test only in CI 2024-07-08 12:17:24 +02:00
e1fa9d8c25 Run test as build just for testing gitlab-ci 2024-07-05 11:56:10 +02:00
b84faf0ae3 Further try to run gitlab-ci 2024-07-05 11:43:30 +02:00
407007bf11 Further try to run gitlab-ci 2024-07-05 11:41:02 +02:00
a36448fa4c Further try to run gitlab-ci 2024-07-05 10:56:45 +02:00
4df3ef23ba Further try to run gitlab-ci 2024-07-05 10:14:25 +02:00
162b44c01f Fix gitlab-ci 2024-07-05 08:40:50 +02:00
bf4e8eff74 Added gitlab-ci 2024-07-05 08:35:48 +02:00
68054fc75d Fix test 2024-07-05 08:17:29 +02:00
4725ce71d0 Added README.md 2024-07-04 11:18:21 +02:00
c1fd762241 No need for https Port number 2024-06-28 10:23:02 +02:00
326fac6207 Fix Port number 2024-06-27 21:11:41 +02:00
65651cad10 switch to https and no need for MEMBERNAMES env call 2024-06-27 21:02:57 +02:00
88b94b61f3 Main branch for production 2024-06-26 12:11:50 +02:00
18 changed files with 1952 additions and 673 deletions

70
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,70 @@
stages:
# - test
# - buildjar
- buildimage
# - publish
variables:
CACHE_FALLBACK_KEY: fallback-key
.img: &img
image: openjdk:22-jdk-slim
cache:
- key: ${CI_COMMIT_REF_SLUG}
fallback_keys:
- cache-$CI_DEFAULT_BRANCH
- cache-default
- paths:
- /var/cache/apt
- .gradle/wrapper
- .gradle/caches
before_script:
- echo "___________________START_before_script________________________"
- echo ${CI_COMMIT_REF_SLUG}
- apt-get update && apt-get -qqy upgrade
#test:
# <<: *img
# stage: test
# script:
# - ./gradlew test
#buildjar:
# <<: *img
# stage: buildjar
# cache:
# - key: ${CI_COMMIT_REF_SLUG}
# script:
# - ./gradlew clean build -Pvaadin.productionMode
# artifacts:
# name: "ModeratorElection"
# paths:
# - build/libs/
# expire_in: 1 week
buildimage:
stage: buildimage
image: docker:latest
services:
- docker:dind
cache:
- key: ${CI_COMMIT_REF_SLUG}
# dependencies:
# - buildjar
before_script:
- echo "---------- BEFORE -------------"
# - echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY --username $CI_REGISTRY_USER --password-stdin
- docker login -u $DOCKERHUB_USER -p $DOCKERHUB_PASSWORD
script:
- export DOCKER_BUILDKIT=1
- docker build --tag=$DOCKERHUB_USER/moderator-election-vaadin_fullstack:latest --target=ci-image-stage --build-arg BUILDKIT_INLINE_CACHE=1 .
- docker push $DOCKERHUB_USER/moderator-election-vaadin_fullstack
# stage: image
# script:
#publish:
# stage: publish
#- export IMAGE_DOCKERHUB_USER=$DOCKERHUB_USER
#- export IMAGE_DOCKERHUB_PASSWORD=$DOCKERHUB_PASSWORD

41
Dockerfile Normal file
View file

@ -0,0 +1,41 @@
#buildJar-stage
FROM openjdk:22-jdk-slim as build-jar-stage
RUN \
--mount=type=cache,target=/var/cache/apt \
apt-get update && apt-get -qqy upgrade
ADD ./ /usr/local/src/ModeratorElection
WORKDIR /usr/local/src/ModeratorElection/
RUN ./gradlew build -Pvaadin.productionMode
# Run jar stage
FROM build-jar-stage AS run-jar-stage
EXPOSE 8080
WORKDIR /usr/local/src/ModeratorElection/build/libs/
RUN chmod 0740 ./ModeratorElection.jar
ENTRYPOINT ["java", "-jar", "./ModeratorElection.jar"]
FROM build-jar-stage AS ci-image-stage
RUN chmod 0740 ./build/libs/ModeratorElection.jar
ENTRYPOINT ["java", "-jar", "./build/libs/ModeratorElection.jar"]
#build-native-stage
FROM ubuntu:latest as build-native-stage
ADD image/resources /tmp
RUN \
--mount=type=cache,target=/var/cache/apt \
/tmp/install.sh
ENV LANG=en_US.UTF-8 \
JAVA_HOME=/usr/lib/jvm/graalvm/bin
# Run native binary stage
FROM build-native-stage AS run-native-stage
EXPOSE 8080
#CMD ["mkdir /usr/local/src/ModeratorElection"]
WORKDIR /usr/local/src/ModeratorElection/build/native/nativeCompile/
##copy native binary
#COPY --from=buildNative-stage /usr/local/src/ModeratorElection/build/native/nativeCompile/ .
RUN chmod 0740 ./ModeratorElection
ENTRYPOINT ["./ModeratorElection"]

48
README.md Normal file
View file

@ -0,0 +1,48 @@
# meapp-fullstack: ModeratorElection
## Purpose
**ModeratorElection** provides a fullstack java app development as **graalvm binary** containing:
* Java app to elect a team member from a comma separated list delivered by environment variable
* Backend Spring Boot embeded Tomcat<sup>®</sup> Server
* Frontend Vaadin Framework
* Dockerfile to generate multi stage image,
first stage compilation to graalvm binary, second stage as run stage - graalvm binary execution
## Try out
Development phase is completed, we will deploy production soon - reachable at
https://meapp-fullstack.jitsi.prod.meissa.de
## Setup
* in **IDE development**, run
`./gradlew clean vaadinPrepareFrontend`
* build **jar file**
`./gradlew clean build -Pvaadin.productionMode`
-> output jar to build/libs/
* compile **native-image graalvm binary**
(1) use graalvm agent to announce project dependencies
```shell
MEMBERNAMES=er,sie,es java -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image -jar build/libs/ModeratorElection-0.0.1-SNAPSHOT.jar
```
(2)
`./gradlew nativeCompile -Dvaadin.productionMode=true`
-> output binary and necessary libs to build/native/nativeCompile/
* **py builder/build.py** usage recommendation:
`pyb <task>` to either create docker image, publish docker image, run test or dry run.
py builder is using **meissa PyPi package ddadevops** for smart deployment.
## Get help
`./gradlew tasks`
## Development & mirrors
Development completed at:
https://repo.prod.meissa.de/meissa/ModeratorElection
Mirror:
https://gitlab.com/domaindrivenarchitecture/ModeratorElection (CI)
## License
Copyright © 2024 meissa GmbH
Licensed under the [Apache License, Version 2.0](LICENSE)

View file

@ -6,14 +6,14 @@ buildscript {
} }
} }
plugins { plugins {
id 'org.springframework.boot' version '3.1.5' id 'org.springframework.boot' version '3.3.1'
id 'io.spring.dependency-management' version '1.0.15.RELEASE' id 'io.spring.dependency-management' version '1.1.6'
id 'java' id 'java'
id 'com.vaadin' version '24.3.3' id 'com.vaadin' version '24.4.4'
id 'org.graalvm.buildtools.native' version '0.10.2' id 'org.graalvm.buildtools.native' version '0.10.2'
} }
group = 'com.ModeratorElection' group = 'com.ModeratorElection'
version = '0.0.1-SNAPSHOT' //version = '0.0.1-SNAPSHOT'
repositories { repositories {
mavenCentral() mavenCentral()
@ -23,7 +23,7 @@ repositories {
} }
ext { ext {
set('vaadinVersion', '24.3.3') set('vaadinVersion', '24.4.4')
} }
configurations { configurations {
@ -51,11 +51,12 @@ dependencyManagement {
tasks.named('test') { tasks.named('test') {
useJUnitPlatform() useJUnitPlatform()
jvmArgs "-Xshare:off"
} }
java { java {
toolchain { toolchain {
languageVersion = JavaLanguageVersion.of(17) languageVersion = JavaLanguageVersion.of(22)
} }
} }
@ -63,11 +64,13 @@ graalvmNative {
binaries { binaries {
main { main {
mainClass = 'com.ModeratorElection.MEApplication' mainClass = 'com.ModeratorElection.MEApplication'
buildArgs.add("-march=native")
buildArgs.add("-R:MaxHeapSize=6442450944")
fallback = false fallback = false
imageName.set('ModeratorElection') imageName.set('ModeratorElection')
//javaLauncher @JavaExec :: Configures the java executable to be used to run the tests. //javaLauncher @JavaExec :: Configures the java executable to be used to run the tests.
javaLauncher.set(javaToolchains.launcherFor { javaLauncher.set(javaToolchains.launcherFor {
languageVersion.set(JavaLanguageVersion.of(17)) languageVersion.set(JavaLanguageVersion.of(22))
//vendor.set(JvmVendorSpec.GRAAL_VM) //vendor.set(JvmVendorSpec.GRAAL_VM)
}) })
} }
@ -76,9 +79,11 @@ graalvmNative {
toolchainDetection = false toolchainDetection = false
} }
//tasks.withType(JavaCompile) { /*tasks.withType(JavaCompile) {
// options.compilerArgs += ['-Xlint:deprecation','-Xlint:unchecked'] options.compilerArgs += ['-Xlint:deprecation']
//} //,'-Xlint:unchecked'
}*/
/* /*
task runApp(type: JavaExec) { task runApp(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath classpath = sourceSets.main.runtimeClasspath

View file

@ -46,7 +46,7 @@ def drun(project):
@task @task
def test(project): def test(project):
build = get_devops_build(project) build = get_devops_build(project)
run("MEMBERNAMES=ALex,Flori ./gradlew test", shell=True, check=True) run("./gradlew test", shell=True, check=True)
@task @task

View file

@ -1,7 +1,4 @@
### ToDo ### ToDo
```
useable vaadin version 24.3.3 !latest v24.4.3
```
``` ```
HowTo BUILD jar? HowTo BUILD jar?
@ -9,12 +6,12 @@ HowTo BUILD jar?
Failed within local: ./gradle build Failed within local: ./gradle build
java -jar build/libs/ModeratorElection.jar -> localhost:6333 "White Label..."-Error java -jar build/libs/ModeratorElection.jar -> localhost:6333 "White Label..."-Error
=> ./gradlew clean build -Pvaadin.productionMode -x processTestAot => ./gradlew clean build -Pvaadin.productionMode
..in ide dev: ./gradlew clean vaadinPrepareFrontend ..in ide dev: ./gradlew clean vaadinPrepareFrontend
``` ```
``` ```
-x processTestAot exclude -x processTestAot - exclude, skip tests
https://docs.spring.io/spring-boot/gradle-plugin/aot.html https://docs.spring.io/spring-boot/gradle-plugin/aot.html
Processing Tests Processing Tests
@ -30,22 +27,55 @@ use the output of the 'processAot' and 'processTestAot' tasks.
``` ```
For production: For production:
* install.sh * install.sh
git clone --single-branch --branch MEapp-development https://repo.prod.meissa.de/meissa/ModeratorElection.git /usr/local/src/ModeratorElection git clone --single-branch --branch main https://repo.prod.meissa.de/meissa/ModeratorElection.git /usr/local/src/ModeratorElection
=> --branch main
``` ```
``` ```
build graalvm binary build graalvm binary
./gradlew nativeCompile failed, need for some improvements!
1. First build jar locally, and get META-INF with 1. First build jar locally, and get META-INF with
./gradlew clean build -Pvaadin.productionMode -x processTestAot ./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 MEMBERNAMES=er,sie,es 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 curl -X GET localhost:8080
2. graalvm native-image compilation 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/ ./gradlew nativeCompile -Dvaadin.productionMode=true //-H:ConfigurationFileDirectories=/path/to/config-dir/ notwendig falls nicht in src/main/resources/META-INF/native-image/
```
```
Dockerizing -> image/Dockerfile
install buildx-plugin by binary to use build-native-stage only with DOCKER_BUILDKIT:
- https://github.com/docker/buildx/releases/download/v0.15.1/buildx-v0.15.1.linux-amd64
- sha256sum buildx-v0.15.1.linux-amd64
- move to file: mv buildx-v0.15.1.linux-amd64 $HOME/.docker/cli-plugins/docker-buildx
- chmod x $HOME/.docker/cli-plugins/docker-buildx
further:
It could be either build jar file or graalvm binary
(1)build-jar-stage
docker build --tag=meapp-jar --target=build-jar-stage .
(2)ENTRYPOINT as run-jar-stage
docker build --tag=run-meapp-jar --target=run-jar-stage
(3)build-native-stage
DOCKER_BUILDKIT=1 docker build --tag=meapp-native --target= build-native-stage .
(4)ENTRYPOINT as run-native-stage
DOCKER_BUILDKIT=1 docker build --tag=meapp-run-native --target=run-native-stage .
Test images:
docker run -e MEMBERNAMES=er,sie,es -p 8080:8080 run-jar-stage:latest
docker run -e MEMBERNAMES=er,sie,es -p 8080:8080 run-native-stage:latest
Buildkit caching:
export DOCKER_BUILDKIT=1
--build-arg BUILDKIT_INLINE_CACHE=1
(1)docker build --tag=meapp-jar --target=build-jar-stage --build-arg BUILDKIT_INLINE_CACHE=1 .
(2)docker build --tag=moderator-election-vaadin_fullstack --target=run-jar-stage --build-arg BUILDKIT_INLINE_CACHE=1 .
(3)docker build --tag=meapp-native --target=build-native-stage --build-arg BUILDKIT_INLINE_CACHE=1 .
(4)docker build --tag=meapp-run-native --target=run-native-stage --build-arg BUILDKIT_INLINE_CACHE=1 .
``` ```
@ -55,7 +85,7 @@ https://docs.oracle.com/en/graalvm/enterprise/21/docs/reference-manual/graalvm-u
``` ```
``` ```
after npm audit fix during image build vaadin 24.3.3, 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 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 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 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.
@ -71,12 +101,6 @@ https://vaadin.com/forum/t/unregistered-node-was-not-found-based-on-its-id-the-t
https://vaadin.com/docs/v14/flow/integrations/spring/tutorial-spring-scopes https://vaadin.com/docs/v14/flow/integrations/spring/tutorial-spring-scopes
=> @PreserveOnRefresh annotation in MainView.java does the trick => @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 ddadevops anpassung, dass src code ins docker image übergeben werden kann - ohne git clone
``` ```

View file

@ -1 +1 @@
vaadinVersion=24.3.3 vaadinVersion=24.4.4

View file

@ -1,24 +0,0 @@
#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"]

View file

@ -4,14 +4,13 @@ set -exo pipefail
function main() function main()
{ {
upgradeSystem #upgradeSystem
#openjdk-17-jdk-headless, no need, we are installing graalvm apt-get update && apt-get -qqy upgrade
#unzpip only necessary for gradle installation within main()
apt-get -qqy install curl git build-essential libz-dev zlib1g-dev apt-get -qqy install curl git build-essential libz-dev zlib1g-dev
mkdir /usr/local/src/ModeratorElection
#change to main branch for production #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 #change to MEapp-development branch for development
git clone --single-branch --branch main https://repo.prod.meissa.de/meissa/ModeratorElection.git /usr/local/src/ModeratorElection
#download gradle #download gradle
#gradle_version="8.4" #gradle_version="8.4"
@ -19,15 +18,10 @@ function main()
#curl -SsLo /tmp/gradle-${gradle_version}-bin.zip.sha256 https://services.gradle.org/distributions/gradle-${gradle_version}-bin.zip.sha256 #curl -SsLo /tmp/gradle-${gradle_version}-bin.zip.sha256 https://services.gradle.org/distributions/gradle-${gradle_version}-bin.zip.sha256
#download graalvm #download graalvm
#oracle graalvm-jdk, v17.0.11, 2024-06-14 #graalvm-community-jdk, v22.0.1 2024-04-16
graalvm_JDK_version="17" graalvm_jdk_version="22.0.1"
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-community-jdk-${graalvm_jdk_version}_linux-x64_bin.tar.gz https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-22.0.1/graalvm-community-jdk-22.0.1_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 curl -SsLo /tmp/graalvm-community-jdk-${graalvm_jdk_version}_linux-x64_bin.tar.gz.sha256 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
#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 graalvm
checksum checksum
@ -35,47 +29,48 @@ function main()
#install graalvm #install graalvm
graalvm_inst graalvm_inst
#echo "export PATH=$PATH:/usr/lib/jvm/$dirname_graalvm/lib/svm/bin"|tee -a /root/.bashrc #nativeCompile
#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 buildproc
cleanupDocker
#cleanupDocker
rm -f /root/.ssh/authorized_keys
rm -f /root/.ssh/authorized_keys2
apt-get clean
apt-get -qqy autoremove --purge
apt-get -qqy autoclean
rm -rf /var/lib/apt/lists/
rm -rf /tmp/*
find /var/cache -type f -exec rm -rf {} \;
find /var/log/ -name '*.log' -exec rm -f {} \;
} > /dev/null } > /dev/null
function checksum() { function checksum() {
#graalvm #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 echo " /tmp/graalvm-community-jdk-${graalvm_jdk_version}_linux-x64_bin.tar.gz"|tee -a /tmp/graalvm-community-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 sha256sum -c --status /tmp/graalvm-community-jdk-${graalvm_jdk_version}_linux-x64_bin.tar.gz.sha256
} }
function graalvm_inst(){ function graalvm_inst(){
mkdir /usr/lib/jvm/ mkdir /usr/lib/jvm/
tar -C /usr/lib/jvm/ -xzf /tmp/graalvm-jdk-${graalvm_JDK_version}_linux-x64_bin.tar.gz tar -C /usr/lib/jvm/ -xzf /tmp/graalvm-community-jdk-${graalvm_jdk_version}_linux-x64_bin.tar.gz
dirname_graalvm=$(ls /usr/lib/jvm/|grep -e graa) dirname_graalvm=$(ls /usr/lib/jvm/|grep -e graa)
ln -s /usr/lib/jvm/$dirname_graalvm /usr/lib/jvm/graalvm mkdir /usr/lib/jvm/graalvm/
ln -s /usr/lib/jvm/graalvm/bin/gu /usr/local/bin ln -s /usr/lib/jvm/$dirname_graalvm/bin/ /usr/lib/jvm/graalvm/
update-alternatives --install /usr/bin/java java /usr/lib/jvm/graalvm/bin/java 0 update-alternatives --install /usr/bin/java java /usr/lib/jvm/graalvm/bin/java 0
echo "export PATH=$PATH:/usr/lib/jvm/graalvm/bin"| tee -a ~/.bashrc
} }
function buildproc() { function buildproc() {
cd /usr/local/src/ModeratorElection/ 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 #build graalvm binary
./gradlew nativeCompile -Dvaadin.productionMode=true ./gradlew nativeCompile -Dvaadin.productionMode=true -x processTestAot
} }
source /tmp/install_functions_debian.sh #source /tmp/install_functions_debian.sh
DEBIAN_FRONTEND=noninteractive DEBCONF_NOWARNINGS=yes main DEBIAN_FRONTEND=noninteractive DEBCONF_NOWARNINGS=yes main

View file

@ -4,180 +4,84 @@
"type": "module", "type": "module",
"dependencies": { "dependencies": {
"@polymer/polymer": "3.5.1", "@polymer/polymer": "3.5.1",
"@vaadin/a11y-base": "24.3.3", "@vaadin/bundles": "24.4.0",
"@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/common-frontend": "0.0.19",
"@vaadin/component-base": "24.3.3", "@vaadin/polymer-legacy-adapter": "24.4.0",
"@vaadin/confirm-dialog": "24.3.3", "@vaadin/react-components": "24.4.0",
"@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/router": "1.7.5",
"@vaadin/scroller": "24.3.3", "@vaadin/vaadin-development-mode-detector": "2.0.7",
"@vaadin/select": "24.3.3", "@vaadin/vaadin-lumo-styles": "24.4.0",
"@vaadin/side-nav": "24.3.3", "@vaadin/vaadin-material-styles": "24.4.0",
"@vaadin/split-layout": "24.3.3", "@vaadin/vaadin-themable-mixin": "24.4.0",
"@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/vaadin-usage-statistics": "2.1.2",
"@vaadin/vertical-layout": "24.3.3",
"@vaadin/virtual-list": "24.3.3",
"construct-style-sheets-polyfill": "3.1.0", "construct-style-sheets-polyfill": "3.1.0",
"date-fns": "2.29.3", "date-fns": "2.29.3",
"lit": "3.1.0" "lit": "3.1.4",
"react": "18.3.1",
"react-dom": "18.3.1",
"react-router-dom": "6.23.1"
}, },
"devDependencies": { "devDependencies": {
"@rollup/plugin-replace": "5.0.4", "@babel/preset-react": "7.24.7",
"@rollup/pluginutils": "5.0.5", "@rollup/plugin-replace": "5.0.7",
"@vitejs/plugin-react": "4.2.0", "@rollup/pluginutils": "5.1.0",
"@vitejs/plugin-react-swc": "3.5.0", "@types/react": "18.3.3",
"async": "3.2.4", "@types/react-dom": "18.3.0",
"glob": "10.3.3", "@vitejs/plugin-react": "4.3.1",
"async": "3.2.5",
"glob": "10.4.1",
"rollup-plugin-brotli": "3.1.0", "rollup-plugin-brotli": "3.1.0",
"rollup-plugin-visualizer": "5.9.2", "rollup-plugin-visualizer": "5.12.0",
"strip-css-comments": "5.0.0", "strip-css-comments": "5.0.0",
"transform-ast": "2.4.4", "transform-ast": "2.4.4",
"typescript": "5.3.3", "typescript": "5.4.5",
"vite": "5.0.6", "vite": "5.3.1",
"vite-plugin-checker": "0.6.2", "vite-plugin-checker": "0.6.4",
"workbox-build": "7.0.0", "workbox-build": "7.1.1",
"workbox-core": "7.0.0", "workbox-core": "7.1.0",
"workbox-precaching": "7.0.0" "workbox-precaching": "7.1.0"
}, },
"vaadin": { "vaadin": {
"dependencies": { "dependencies": {
"@polymer/polymer": "3.5.1", "@polymer/polymer": "3.5.1",
"@vaadin/a11y-base": "24.3.3", "@vaadin/bundles": "24.4.0",
"@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/common-frontend": "0.0.19",
"@vaadin/component-base": "24.3.3", "@vaadin/polymer-legacy-adapter": "24.4.0",
"@vaadin/confirm-dialog": "24.3.3", "@vaadin/react-components": "24.4.0",
"@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/router": "1.7.5",
"@vaadin/scroller": "24.3.3", "@vaadin/vaadin-development-mode-detector": "2.0.7",
"@vaadin/select": "24.3.3", "@vaadin/vaadin-lumo-styles": "24.4.0",
"@vaadin/side-nav": "24.3.3", "@vaadin/vaadin-material-styles": "24.4.0",
"@vaadin/split-layout": "24.3.3", "@vaadin/vaadin-themable-mixin": "24.4.0",
"@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/vaadin-usage-statistics": "2.1.2",
"@vaadin/vertical-layout": "24.3.3",
"@vaadin/virtual-list": "24.3.3",
"construct-style-sheets-polyfill": "3.1.0", "construct-style-sheets-polyfill": "3.1.0",
"date-fns": "2.29.3", "date-fns": "2.29.3",
"lit": "3.1.0" "lit": "3.1.4",
"react": "18.3.1",
"react-dom": "18.3.1",
"react-router-dom": "6.23.1"
}, },
"devDependencies": { "devDependencies": {
"@rollup/plugin-replace": "5.0.4", "@babel/preset-react": "7.24.7",
"@rollup/pluginutils": "5.0.5", "@rollup/plugin-replace": "5.0.7",
"@vitejs/plugin-react": "4.2.0", "@rollup/pluginutils": "5.1.0",
"@vitejs/plugin-react-swc": "3.5.0", "@types/react": "18.3.3",
"async": "3.2.4", "@types/react-dom": "18.3.0",
"glob": "10.3.3", "@vitejs/plugin-react": "4.3.1",
"async": "3.2.5",
"glob": "10.4.1",
"rollup-plugin-brotli": "3.1.0", "rollup-plugin-brotli": "3.1.0",
"rollup-plugin-visualizer": "5.9.2", "rollup-plugin-visualizer": "5.12.0",
"strip-css-comments": "5.0.0", "strip-css-comments": "5.0.0",
"transform-ast": "2.4.4", "transform-ast": "2.4.4",
"typescript": "5.3.3", "typescript": "5.4.5",
"vite": "5.0.6", "vite": "5.3.1",
"vite-plugin-checker": "0.6.2", "vite-plugin-checker": "0.6.4",
"workbox-build": "7.0.0", "workbox-build": "7.1.1",
"workbox-core": "7.0.0", "workbox-core": "7.1.0",
"workbox-precaching": "7.0.0" "workbox-precaching": "7.1.0"
}, },
"hash": "ac7fbcf666df2ebff56ca009354fc8d94a61c61e3e86a9617779b03878adc88b" "hash": "a138b9347a25dacd61eb23a186fb55a3bff3993609bd58738beb6651e7993e01"
}, },
"overrides": { "overrides": {
"@vaadin/bundles": "$@vaadin/bundles", "@vaadin/bundles": "$@vaadin/bundles",
@ -193,59 +97,9 @@
"@polymer/polymer": "$@polymer/polymer", "@polymer/polymer": "$@polymer/polymer",
"@vaadin/vaadin-themable-mixin": "$@vaadin/vaadin-themable-mixin", "@vaadin/vaadin-themable-mixin": "$@vaadin/vaadin-themable-mixin",
"date-fns": "$date-fns", "date-fns": "$date-fns",
"@vaadin/a11y-base": "$@vaadin/a11y-base", "@vaadin/react-components": "$@vaadin/react-components",
"@vaadin/accordion": "$@vaadin/accordion", "react-dom": "$react-dom",
"@vaadin/app-layout": "$@vaadin/app-layout", "react-router-dom": "$react-router-dom",
"@vaadin/avatar": "$@vaadin/avatar", "react": "$react"
"@vaadin/avatar-group": "$@vaadin/avatar-group",
"@vaadin/button": "$@vaadin/button",
"@vaadin/checkbox": "$@vaadin/checkbox",
"@vaadin/checkbox-group": "$@vaadin/checkbox-group",
"@vaadin/combo-box": "$@vaadin/combo-box",
"@vaadin/component-base": "$@vaadin/component-base",
"@vaadin/confirm-dialog": "$@vaadin/confirm-dialog",
"@vaadin/context-menu": "$@vaadin/context-menu",
"@vaadin/custom-field": "$@vaadin/custom-field",
"@vaadin/date-picker": "$@vaadin/date-picker",
"@vaadin/date-time-picker": "$@vaadin/date-time-picker",
"@vaadin/details": "$@vaadin/details",
"@vaadin/dialog": "$@vaadin/dialog",
"@vaadin/email-field": "$@vaadin/email-field",
"@vaadin/field-base": "$@vaadin/field-base",
"@vaadin/field-highlighter": "$@vaadin/field-highlighter",
"@vaadin/form-layout": "$@vaadin/form-layout",
"@vaadin/grid": "$@vaadin/grid",
"@vaadin/horizontal-layout": "$@vaadin/horizontal-layout",
"@vaadin/icon": "$@vaadin/icon",
"@vaadin/icons": "$@vaadin/icons",
"@vaadin/input-container": "$@vaadin/input-container",
"@vaadin/integer-field": "$@vaadin/integer-field",
"@vaadin/item": "$@vaadin/item",
"@vaadin/list-box": "$@vaadin/list-box",
"@vaadin/lit-renderer": "$@vaadin/lit-renderer",
"@vaadin/login": "$@vaadin/login",
"@vaadin/menu-bar": "$@vaadin/menu-bar",
"@vaadin/message-input": "$@vaadin/message-input",
"@vaadin/message-list": "$@vaadin/message-list",
"@vaadin/multi-select-combo-box": "$@vaadin/multi-select-combo-box",
"@vaadin/notification": "$@vaadin/notification",
"@vaadin/number-field": "$@vaadin/number-field",
"@vaadin/overlay": "$@vaadin/overlay",
"@vaadin/password-field": "$@vaadin/password-field",
"@vaadin/progress-bar": "$@vaadin/progress-bar",
"@vaadin/radio-group": "$@vaadin/radio-group",
"@vaadin/scroller": "$@vaadin/scroller",
"@vaadin/select": "$@vaadin/select",
"@vaadin/side-nav": "$@vaadin/side-nav",
"@vaadin/split-layout": "$@vaadin/split-layout",
"@vaadin/tabs": "$@vaadin/tabs",
"@vaadin/tabsheet": "$@vaadin/tabsheet",
"@vaadin/text-area": "$@vaadin/text-area",
"@vaadin/text-field": "$@vaadin/text-field",
"@vaadin/time-picker": "$@vaadin/time-picker",
"@vaadin/tooltip": "$@vaadin/tooltip",
"@vaadin/upload": "$@vaadin/upload",
"@vaadin/vertical-layout": "$@vaadin/vertical-layout",
"@vaadin/virtual-list": "$@vaadin/virtual-list"
} }
} }

View file

@ -12,9 +12,9 @@ import com.vaadin.flow.component.notification.Notification;
import com.vaadin.flow.component.notification.NotificationVariant; import com.vaadin.flow.component.notification.NotificationVariant;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout; import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout; import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.router.PreserveOnRefresh;
import com.vaadin.flow.router.Route; import com.vaadin.flow.router.Route;
import com.vaadin.flow.router.PageTitle; import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.spring.annotation.RouteScope;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@ -24,7 +24,7 @@ import java.util.List;
@Route("") @Route("")
@PageTitle("Moderatorenwahl") @PageTitle("Moderatorenwahl")
@PreserveOnRefresh @RouteScope
@Configuration @Configuration
public class MainView extends VerticalLayout { public class MainView extends VerticalLayout {
@ -40,8 +40,9 @@ public class MainView extends VerticalLayout {
Button electNow = new Button("Elect!", buttonClickEvent -> { Button electNow = new Button("Elect!", buttonClickEvent -> {
try { try {
ArrayList checkboxSelectedMembers = new ArrayList(checkboxGroup.getSelectedItems()); ArrayList<String> checkboxSelectedMembers = new ArrayList<>(checkboxGroup.getSelectedItems());
Notification moderatorNotification = new Notification() new Notification();
Notification moderatorNotification = Notification
.show("Nächster Moderator: " + electMember(checkboxSelectedMembers)); .show("Nächster Moderator: " + electMember(checkboxSelectedMembers));
moderatorNotification.setPosition(Notification.Position.BOTTOM_CENTER); moderatorNotification.setPosition(Notification.Position.BOTTOM_CENTER);
} catch(Exception exceptionEvent) { } catch(Exception exceptionEvent) {

View file

@ -10,7 +10,7 @@
}, },
{ {
"name":"java.awt.image.ColorModel", "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"}], "fields":[{"name":"colorSpace"}, {"name":"colorSpaceType"}, {"name":"isAlphaPremultiplied"}, {"name":"is_sRGB"}, {"name":"nBits"}, {"name":"numComponents"}, {"name":"supportsAlpha"}, {"name":"transparency"}],
"methods":[{"name":"getRGBdefault","parameterTypes":[] }] "methods":[{"name":"getRGBdefault","parameterTypes":[] }]
}, },
{ {
@ -32,7 +32,7 @@
}, },
{ {
"name":"java.lang.System", "name":"java.lang.System",
"methods":[{"name":"load","parameterTypes":["java.lang.String"] }, {"name":"setProperty","parameterTypes":["java.lang.String","java.lang.String"] }] "methods":[{"name":"load","parameterTypes":["java.lang.String"] }]
}, },
{ {
"name":"sun.awt.image.ByteComponentRaster", "name":"sun.awt.image.ByteComponentRaster",

View file

@ -8,9 +8,18 @@
{ {
"interfaces":["java.lang.reflect.WildcardType","org.springframework.core.SerializableTypeWrapper$SerializableTypeProxy","java.io.Serializable"] "interfaces":["java.lang.reflect.WildcardType","org.springframework.core.SerializableTypeWrapper$SerializableTypeProxy","java.io.Serializable"]
}, },
{
"interfaces":["org.atmosphere.cpr.AtmosphereHandler"]
},
{
"interfaces":["org.atmosphere.cpr.Broadcaster"]
},
{ {
"interfaces":["org.springframework.boot.context.properties.ConfigurationProperties"] "interfaces":["org.springframework.boot.context.properties.ConfigurationProperties"]
}, },
{
"interfaces":["org.springframework.web.bind.annotation.PathVariable"]
},
{ {
"interfaces":["org.springframework.web.bind.annotation.RequestMapping"] "interfaces":["org.springframework.web.bind.annotation.RequestMapping"]
} }

File diff suppressed because it is too large Load diff

View file

@ -4,56 +4,114 @@
"pattern":"\\QMETA-INF/VAADIN/config/flow-build-info.json\\E" "pattern":"\\QMETA-INF/VAADIN/config/flow-build-info.json\\E"
}, { }, {
"pattern":"\\QMETA-INF/VAADIN/config/stats.json\\E" "pattern":"\\QMETA-INF/VAADIN/config/stats.json\\E"
}, {
"pattern":"\\QMETA-INF/VAADIN/file-routes.json\\E"
}, { }, {
"pattern":"\\QMETA-INF/VAADIN/webapp/VAADIN/static/themes/my-theme/theme.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/VAADIN/webapp/index.html\\E"
}, {
"pattern":"\\QMETA-INF/build-info.properties\\E"
}, {
"pattern":"\\QMETA-INF/maven/com.vaadin/hilla/pom.properties\\E"
}, {
"pattern":"\\QMETA-INF/resources/icons/icon.png\\E"
}, {
"pattern":"\\QMETA-INF/resources/index.html\\E"
}, { }, {
"pattern":"\\QMETA-INF/services/ch.qos.logback.classic.spi.Configurator\\E" "pattern":"\\QMETA-INF/services/ch.qos.logback.classic.spi.Configurator\\E"
}, {
"pattern":"\\QMETA-INF/services/com.vaadin.flow.di.InstantiatorFactory\\E"
}, {
"pattern":"\\QMETA-INF/services/com.vaadin.flow.di.Instantiator\\E"
}, {
"pattern":"\\QMETA-INF/services/com.vaadin.flow.server.VaadinServiceInitListener\\E"
}, {
"pattern":"\\QMETA-INF/services/com.vaadin.flow.server.startup.ApplicationConfigurationFactory\\E"
}, {
"pattern":"\\QMETA-INF/services/com.vaadin.flow.server.startup.NavigationTargetFilter\\E"
}, { }, {
"pattern":"\\QMETA-INF/services/jakarta.el.ExpressionFactory\\E" "pattern":"\\QMETA-INF/services/jakarta.el.ExpressionFactory\\E"
}, {
"pattern":"\\QMETA-INF/services/jakarta.validation.ConstraintValidator\\E"
}, { }, {
"pattern":"\\QMETA-INF/services/jakarta.validation.spi.ValidationProvider\\E" "pattern":"\\QMETA-INF/services/jakarta.validation.spi.ValidationProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/jakarta.validation.valueextraction.ValueExtractor\\E"
}, { }, {
"pattern":"\\QMETA-INF/services/jakarta.websocket.server.ServerEndpointConfig$Configurator\\E" "pattern":"\\QMETA-INF/services/jakarta.websocket.server.ServerEndpointConfig$Configurator\\E"
}, {
"pattern":"\\QMETA-INF/services/java.lang.System$LoggerFinder\\E"
}, {
"pattern":"\\QMETA-INF/services/java.net.spi.InetAddressResolverProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/java.net.spi.URLStreamHandlerProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/java.nio.channels.spi.SelectorProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/java.sql.Driver\\E"
}, {
"pattern":"\\QMETA-INF/services/java.time.zone.ZoneRulesProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/java.util.spi.ResourceBundleControlProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/javax.imageio.spi.ImageInputStreamSpi\\E"
}, {
"pattern":"\\QMETA-INF/services/javax.imageio.spi.ImageOutputStreamSpi\\E"
}, {
"pattern":"\\QMETA-INF/services/javax.imageio.spi.ImageReaderSpi\\E"
}, {
"pattern":"\\QMETA-INF/services/javax.imageio.spi.ImageTranscoderSpi\\E"
}, {
"pattern":"\\QMETA-INF/services/javax.imageio.spi.ImageWriterSpi\\E"
}, {
"pattern":"\\QMETA-INF/services/javax.xml.transform.TransformerFactory\\E"
}, {
"pattern":"\\QMETA-INF/services/org.apache.juli.logging.Log\\E"
}, {
"pattern":"\\QMETA-INF/services/org.atmosphere.cpr.AtmosphereFramework\\E"
}, { }, {
"pattern":"\\QMETA-INF/services/org.slf4j.spi.SLF4JServiceProvider\\E" "pattern":"\\QMETA-INF/services/org.slf4j.spi.SLF4JServiceProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/org/jline/terminal/provider/jansi\\E"
}, { }, {
"pattern":"\\QMETA-INF/spring-autoconfigure-metadata.properties\\E" "pattern":"\\QMETA-INF/spring-autoconfigure-metadata.properties\\E"
}, {
"pattern":"\\QMETA-INF/spring.components\\E"
}, { }, {
"pattern":"\\QMETA-INF/spring.factories\\E" "pattern":"\\QMETA-INF/spring.factories\\E"
}, {
"pattern":"\\QMETA-INF/spring.integration.properties\\E"
}, { }, {
"pattern":"\\QMETA-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports\\E" "pattern":"\\QMETA-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports\\E"
}, {
"pattern":"\\QMETA-INF/validation.xml\\E"
}, {
"pattern":"\\Qapplication-default.properties\\E"
}, {
"pattern":"\\Qapplication-default.xml\\E"
}, {
"pattern":"\\Qapplication-default.yaml\\E"
}, {
"pattern":"\\Qapplication-default.yml\\E"
}, { }, {
"pattern":"\\Qapplication.properties\\E" "pattern":"\\Qapplication.properties\\E"
}, {
"pattern":"\\Qapplication.xml\\E"
}, {
"pattern":"\\Qapplication.yaml\\E"
}, {
"pattern":"\\Qapplication.yml\\E"
}, { }, {
"pattern":"\\Qcom/ModeratorElection/MainView.class\\E" "pattern":"\\Qcom/ModeratorElection/MainView.class\\E"
}, { }, {
"pattern":"\\Qcom/ModeratorElection/\\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/AbstractDevServerRunner.class\\E"
}, { }, {
"pattern":"\\Qcom/vaadin/base/devserver/DevToolsInterface.class\\E" "pattern":"\\Qcom/vaadin/base/devserver/DevToolsInterface.class\\E"
}, { }, {
"pattern":"\\Qcom/vaadin/base/devserver/\\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/AttachNotifier.class\\E"
}, { }, {
@ -98,6 +156,8 @@
"pattern":"\\Qcom/vaadin/flow/component/orderedlayout/VerticalLayout.class\\E" "pattern":"\\Qcom/vaadin/flow/component/orderedlayout/VerticalLayout.class\\E"
}, { }, {
"pattern":"\\Qcom/vaadin/flow/component/page/AppShellConfigurator.class\\E" "pattern":"\\Qcom/vaadin/flow/component/page/AppShellConfigurator.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/component/polymertemplate/rpc/\\E"
}, { }, {
"pattern":"\\Qcom/vaadin/flow/dom/NodeVisitor.class\\E" "pattern":"\\Qcom/vaadin/flow/dom/NodeVisitor.class\\E"
}, { }, {
@ -110,6 +170,8 @@
"pattern":"\\Qcom/vaadin/flow/internal/DevModeHandlerManager.class\\E" "pattern":"\\Qcom/vaadin/flow/internal/DevModeHandlerManager.class\\E"
}, { }, {
"pattern":"\\Qcom/vaadin/flow/internal/Pair.class\\E" "pattern":"\\Qcom/vaadin/flow/internal/Pair.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/internal/hilla/FileRouterRequestUtil.class\\E"
}, { }, {
"pattern":"\\Qcom/vaadin/flow/router/AbstractRouteNotFoundError.class\\E" "pattern":"\\Qcom/vaadin/flow/router/AbstractRouteNotFoundError.class\\E"
}, { }, {
@ -142,6 +204,8 @@
"pattern":"\\Qcom/vaadin/flow/router/internal/BeforeEnterHandler.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/BeforeLeaveHandler.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/router/internal/ClientRoutesProvider.class\\E"
}, { }, {
"pattern":"\\Qcom/vaadin/flow/router/internal/ConfiguredRoutes.class\\E" "pattern":"\\Qcom/vaadin/flow/router/internal/ConfiguredRoutes.class\\E"
}, { }, {
@ -150,6 +214,8 @@
"pattern":"\\Qcom/vaadin/flow/server/RequestHandler.class\\E" "pattern":"\\Qcom/vaadin/flow/server/RequestHandler.class\\E"
}, { }, {
"pattern":"\\Qcom/vaadin/flow/server/RouteRegistry.class\\E" "pattern":"\\Qcom/vaadin/flow/server/RouteRegistry.class\\E"
}, {
"pattern":"\\Qcom/vaadin/flow/server/VaadinServiceInitListener.class\\E"
}, { }, {
"pattern":"\\Qcom/vaadin/flow/server/communication/FragmentedMessageHolder.class\\E" "pattern":"\\Qcom/vaadin/flow/server/communication/FragmentedMessageHolder.class\\E"
}, { }, {
@ -176,32 +242,318 @@
"pattern":"\\Qcom/vaadin/flow/spring/VaadinServletConfiguration$RootExcludeHandler.class\\E" "pattern":"\\Qcom/vaadin/flow/spring/VaadinServletConfiguration$RootExcludeHandler.class\\E"
}, { }, {
"pattern":"\\Qcom/vaadin/flow/spring/VaadinServletConfiguration.class\\E" "pattern":"\\Qcom/vaadin/flow/spring/VaadinServletConfiguration.class\\E"
}, {
"pattern":"\\Qcom/vaadin/hilla/ApplicationContextProvider.class\\E"
}, {
"pattern":"\\Qcom/vaadin/hilla/EndpointController.class\\E"
}, {
"pattern":"\\Qcom/vaadin/hilla/EndpointControllerConfiguration.class\\E"
}, {
"pattern":"\\Qcom/vaadin/hilla/EndpointProperties.class\\E"
}, {
"pattern":"\\Qcom/vaadin/hilla/crud/CrudConfiguration.class\\E"
}, {
"pattern":"\\Qcom/vaadin/hilla/frontend/\\E"
}, {
"pattern":"\\Qcom/vaadin/hilla/internal/hotswap/HotSwapConfiguration.class\\E"
}, {
"pattern":"\\Qcom/vaadin/hilla/push/PushConfigurer$EmbeddedAtmosphereInitializer.class\\E"
}, {
"pattern":"\\Qcom/vaadin/hilla/push/PushConfigurer.class\\E"
}, {
"pattern":"\\Qcom/vaadin/hilla/route/ClientRouteRegistry.class\\E"
}, {
"pattern":"\\Qcom/vaadin/hilla/route/RouteUnifyingConfiguration.class\\E"
}, {
"pattern":"\\Qcom/vaadin/hilla/route/RouteUtil.class\\E"
}, {
"pattern":"\\Qcom/vaadin/hilla/startup/EndpointRegistryInitializer.class\\E"
}, {
"pattern":"\\Qcom/vaadin/hilla/startup/RouteUnifyingServiceInitListener.class\\E"
}, {
"pattern":"\\Qconfig/application-default.properties\\E"
}, {
"pattern":"\\Qconfig/application-default.xml\\E"
}, {
"pattern":"\\Qconfig/application-default.yaml\\E"
}, {
"pattern":"\\Qconfig/application-default.yml\\E"
}, {
"pattern":"\\Qconfig/application.properties\\E"
}, {
"pattern":"\\Qconfig/application.xml\\E"
}, {
"pattern":"\\Qconfig/application.yaml\\E"
}, {
"pattern":"\\Qconfig/application.yml\\E"
}, {
"pattern":"\\Qgit.properties\\E"
}, {
"pattern":"\\Qhilla-openapi.json\\E"
}, {
"pattern":"\\Qio/async/control/\\E"
}, {
"pattern":"\\Qio/async/postman/\\E"
}, {
"pattern":"\\Qio/async/satellite/\\E"
}, {
"pattern":"\\Qjakarta/servlet/LocalStrings.properties\\E"
}, {
"pattern":"\\Qjakarta/servlet/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qjakarta/servlet/LocalStrings_de_DE.properties\\E"
}, { }, {
"pattern":"\\Qjakarta/servlet/ServletContainerInitializer.class\\E" "pattern":"\\Qjakarta/servlet/ServletContainerInitializer.class\\E"
}, { }, {
"pattern":"\\Qjakarta/servlet/ServletContextListener.class\\E" "pattern":"\\Qjakarta/servlet/ServletContextListener.class\\E"
}, {
"pattern":"\\Qjakarta/servlet/http/LocalStrings.properties\\E"
}, {
"pattern":"\\Qjakarta/servlet/http/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qjakarta/servlet/http/LocalStrings_de_DE.properties\\E"
}, { }, {
"pattern":"\\Qjakarta/websocket/Endpoint.class\\E" "pattern":"\\Qjakarta/websocket/Endpoint.class\\E"
}, { }, {
"pattern":"\\Qjakarta/websocket/MessageHandler$Whole.class\\E" "pattern":"\\Qjakarta/websocket/MessageHandler$Whole.class\\E"
}, { }, {
"pattern":"\\Qjakarta/websocket/MessageHandler.class\\E" "pattern":"\\Qjakarta/websocket/MessageHandler.class\\E"
}, {
"pattern":"\\Qjndi.properties\\E"
}, {
"pattern":"\\Qlogback-spring.groovy\\E"
}, {
"pattern":"\\Qlogback-spring.xml\\E"
}, {
"pattern":"\\Qlogback-test-spring.groovy\\E"
}, {
"pattern":"\\Qlogback-test-spring.xml\\E"
}, {
"pattern":"\\Qlogback-test.groovy\\E"
}, {
"pattern":"\\Qlogback-test.scmo\\E"
}, {
"pattern":"\\Qlogback-test.xml\\E"
}, {
"pattern":"\\Qlogback.groovy\\E"
}, {
"pattern":"\\Qlogback.scmo\\E"
}, {
"pattern":"\\Qlogback.xml\\E"
}, {
"pattern":"\\Qmessages.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/authenticator/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/authenticator/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/authenticator/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/authenticator/jaspic/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/authenticator/jaspic/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/authenticator/jaspic/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/connector/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/connector/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/connector/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/core/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/core/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/core/LocalStrings_de_DE.properties\\E"
}, { }, {
"pattern":"\\Qorg/apache/catalina/core/RestrictedFilters.properties\\E" "pattern":"\\Qorg/apache/catalina/core/RestrictedFilters.properties\\E"
}, { }, {
"pattern":"\\Qorg/apache/catalina/core/RestrictedListeners.properties\\E" "pattern":"\\Qorg/apache/catalina/core/RestrictedListeners.properties\\E"
}, { }, {
"pattern":"\\Qorg/apache/catalina/core/RestrictedServlets.properties\\E" "pattern":"\\Qorg/apache/catalina/core/RestrictedServlets.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/deploy/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/deploy/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/deploy/LocalStrings_de_DE.properties\\E"
}, { }, {
"pattern":"\\Qorg/apache/catalina/loader/JdbcLeakPrevention.class\\E" "pattern":"\\Qorg/apache/catalina/loader/JdbcLeakPrevention.class\\E"
}, {
"pattern":"\\Qorg/apache/catalina/loader/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/loader/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/loader/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/mapper/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/mapper/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/mapper/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/mbeans/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/mbeans/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/mbeans/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/realm/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/realm/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/realm/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/security/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/security/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/security/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/session/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/session/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/session/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/startup/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/startup/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/startup/LocalStrings_de_DE.properties\\E"
}, { }, {
"pattern":"\\Qorg/apache/catalina/util/CharsetMapperDefault.properties\\E" "pattern":"\\Qorg/apache/catalina/util/CharsetMapperDefault.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/util/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/util/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/util/LocalStrings_de_DE.properties\\E"
}, { }, {
"pattern":"\\Qorg/apache/catalina/util/ServerInfo.properties\\E" "pattern":"\\Qorg/apache/catalina/util/ServerInfo.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/valves/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/valves/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/valves/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/webresources/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/webresources/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/catalina/webresources/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/coyote/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/coyote/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/coyote/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/coyote/http11/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/coyote/http11/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/coyote/http11/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/coyote/http11/filters/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/coyote/http11/filters/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/coyote/http11/filters/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/naming/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/naming/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/naming/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/buf/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/buf/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/buf/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/compat/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/compat/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/compat/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/descriptor/web/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/descriptor/web/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/descriptor/web/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/http/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/http/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/http/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/http/parser/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/http/parser/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/http/parser/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/modeler/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/modeler/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/modeler/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/net/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/net/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/net/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/scan/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/scan/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/scan/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/threads/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/threads/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/util/threads/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/websocket/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/websocket/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/websocket/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/websocket/pojo/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/websocket/pojo/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/websocket/pojo/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/websocket/server/LocalStrings.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/websocket/server/LocalStrings_de.properties\\E"
}, {
"pattern":"\\Qorg/apache/tomcat/websocket/server/LocalStrings_de_DE.properties\\E"
}, {
"pattern":"\\Qorg/atmosphere/annotation/\\E"
}, { }, {
"pattern":"\\Qorg/atmosphere/util/version.properties\\E" "pattern":"\\Qorg/atmosphere/util/version.properties\\E"
}, { }, {
"pattern":"\\Qorg/springframework/beans/factory/Aware.class\\E" "pattern":"\\Qorg/springframework/beans/factory/Aware.class\\E"
}, {
"pattern":"\\Qorg/springframework/beans/factory/BeanClassLoaderAware.class\\E"
}, { }, {
"pattern":"\\Qorg/springframework/beans/factory/BeanFactoryAware.class\\E" "pattern":"\\Qorg/springframework/beans/factory/BeanFactoryAware.class\\E"
}, { }, {
@ -264,6 +616,8 @@
"pattern":"\\Qorg/springframework/boot/autoconfigure/context/MessageSourceAutoConfiguration.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/context/PropertyPlaceholderAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/data/web/SpringDataWebAutoConfiguration.class\\E"
}, { }, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration.class\\E" "pattern":"\\Qorg/springframework/boot/autoconfigure/http/GsonHttpMessageConvertersConfiguration.class\\E"
}, { }, {
@ -306,8 +660,46 @@
"pattern":"\\Qorg/springframework/boot/autoconfigure/jackson/JacksonAutoConfiguration.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/jmx/JmxAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/netty/NettyAutoConfiguration.class\\E"
}, { }, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/orm/jpa/EntityManagerFactoryDependsOnPostProcessor.class\\E" "pattern":"\\Qorg/springframework/boot/autoconfigure/orm/jpa/EntityManagerFactoryDependsOnPostProcessor.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/reactor/ReactorAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/ConditionalOnDefaultWebSecurity.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/DefaultWebSecurityCondition$Beans.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/DefaultWebSecurityCondition$Classes.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/DefaultWebSecurityCondition.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/SecurityDataConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/reactive/ReactiveUserDetailsServiceAutoConfiguration$MissingAlternativeOrUserPropertiesConfigured$MissingAlternative.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/reactive/ReactiveUserDetailsServiceAutoConfiguration$MissingAlternativeOrUserPropertiesConfigured$NameConfigured.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/reactive/ReactiveUserDetailsServiceAutoConfiguration$MissingAlternativeOrUserPropertiesConfigured$PasswordConfigured.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/reactive/ReactiveUserDetailsServiceAutoConfiguration$MissingAlternativeOrUserPropertiesConfigured.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/reactive/ReactiveUserDetailsServiceAutoConfiguration$RSocketEnabledOrReactiveWebApplication$RSocketSecurityEnabledCondition.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/reactive/ReactiveUserDetailsServiceAutoConfiguration$RSocketEnabledOrReactiveWebApplication$ReactiveWebApplicationCondition.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/reactive/ReactiveUserDetailsServiceAutoConfiguration$RSocketEnabledOrReactiveWebApplication.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/reactive/ReactiveUserDetailsServiceAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/servlet/SecurityAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/servlet/SpringBootWebSecurityConfiguration$SecurityFilterChainConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/servlet/SpringBootWebSecurityConfiguration$WebSecurityEnablerConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/security/servlet/SpringBootWebSecurityConfiguration.class\\E"
}, { }, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class\\E" "pattern":"\\Qorg/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class\\E"
}, { }, {
@ -322,16 +714,34 @@
"pattern":"\\Qorg/springframework/boot/autoconfigure/ssl/SslAutoConfiguration.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/TaskExecutionAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/task/TaskExecutorConfigurations$SimpleAsyncTaskExecutorBuilderConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/task/TaskExecutorConfigurations$TaskExecutorBuilderConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/task/TaskExecutorConfigurations$TaskExecutorConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/task/TaskExecutorConfigurations$ThreadPoolTaskExecutorBuilderConfiguration.class\\E"
}, { }, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/task/TaskSchedulingAutoConfiguration.class\\E" "pattern":"\\Qorg/springframework/boot/autoconfigure/task/TaskSchedulingAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/task/TaskSchedulingConfigurations$SimpleAsyncTaskSchedulerBuilderConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/task/TaskSchedulingConfigurations$TaskSchedulerBuilderConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/task/TaskSchedulingConfigurations$TaskSchedulerConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/task/TaskSchedulingConfigurations$ThreadPoolTaskSchedulerBuilderConfiguration.class\\E"
}, { }, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/validation/PrimaryDefaultValidatorPostProcessor.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/validation/ValidationAutoConfiguration.class\\E"
}, { }, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfiguration$NotReactiveWebApplicationCondition$ReactiveWebApplication.class\\E" "pattern":"\\Qorg/springframework/boot/autoconfigure/web/client/NotReactiveWebApplicationCondition$ReactiveWebApplication.class\\E"
}, { }, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfiguration$NotReactiveWebApplicationCondition.class\\E" "pattern":"\\Qorg/springframework/boot/autoconfigure/web/client/NotReactiveWebApplicationCondition.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/client/RestClientAutoConfiguration.class\\E"
}, { }, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfiguration.class\\E" "pattern":"\\Qorg/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfiguration.class\\E"
}, { }, {
@ -418,6 +828,8 @@
"pattern":"\\Qorg/springframework/boot/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration$UndertowWebSocketConfiguration.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/autoconfigure/websocket/servlet/WebSocketServletAutoConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/context/properties/ConfigurationProperties.class\\E"
}, { }, {
"pattern":"\\Qorg/springframework/boot/context/properties/EnableConfigurationProperties.class\\E" "pattern":"\\Qorg/springframework/boot/context/properties/EnableConfigurationProperties.class\\E"
}, { }, {
@ -444,6 +856,28 @@
"pattern":"\\Qorg/springframework/core/Ordered.class\\E" "pattern":"\\Qorg/springframework/core/Ordered.class\\E"
}, { }, {
"pattern":"\\Qorg/springframework/core/annotation/Order.class\\E" "pattern":"\\Qorg/springframework/core/annotation/Order.class\\E"
}, {
"pattern":"\\Qorg/springframework/data/web/config/EnableSpringDataWebSupport$QuerydslActivator.class\\E"
}, {
"pattern":"\\Qorg/springframework/data/web/config/EnableSpringDataWebSupport$SpringDataWebConfigurationImportSelector.class\\E"
}, {
"pattern":"\\Qorg/springframework/data/web/config/EnableSpringDataWebSupport$SpringDataWebSettingsRegistar.class\\E"
}, {
"pattern":"\\Qorg/springframework/data/web/config/EnableSpringDataWebSupport.class\\E"
}, {
"pattern":"\\Qorg/springframework/data/web/config/ProjectingArgumentResolverRegistrar$ProjectingArgumentResolverBeanPostProcessor.class\\E"
}, {
"pattern":"\\Qorg/springframework/data/web/config/ProjectingArgumentResolverRegistrar.class\\E"
}, {
"pattern":"\\Qorg/springframework/data/web/config/SpringDataJacksonConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/data/web/config/SpringDataJacksonModules.class\\E"
}, {
"pattern":"\\Qorg/springframework/data/web/config/SpringDataWebConfiguration.class\\E"
}, {
"pattern":"\\Qorg/springframework/web/bind/annotation/ResponseBody.class\\E"
}, {
"pattern":"\\Qorg/springframework/web/bind/annotation/RestController.class\\E"
}, { }, {
"pattern":"\\Qorg/springframework/web/context/ServletContextAware.class\\E" "pattern":"\\Qorg/springframework/web/context/ServletContextAware.class\\E"
}, { }, {
@ -454,115 +888,146 @@
"pattern":"\\Qorg/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.class\\E" "pattern":"\\Qorg/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.class\\E"
}, { }, {
"pattern":"\\Qorg/springframework/web/servlet/config/annotation/WebMvcConfigurer.class\\E" "pattern":"\\Qorg/springframework/web/servlet/config/annotation/WebMvcConfigurer.class\\E"
}, {
"pattern":"\\Qpublic/index.html\\E"
}, {
"pattern":"\\Qresources/index.html\\E"
}, {
"pattern":"\\Qspring.properties\\E"
}, {
"pattern":"\\Qstatic/index.html\\E"
}, { }, {
"pattern":"\\Qvaadin-featureflags.properties\\E" "pattern":"\\Qvaadin-featureflags.properties\\E"
}, {
"pattern":"\\Qvaadin-i18n/\\E"
}, {
"pattern":"\\Qvaadin-i18n/translations.properties\\E"
}, {
"pattern":"\\Qvaadin-i18n\\E"
}, { }, {
"pattern":"\\Qvite.generated.ts\\E" "pattern":"\\Qvite.generated.ts\\E"
}, {
"pattern":"java.desktop:\\Qsun/awt/resources/awt_de_DE.properties\\E"
}, {
"pattern":"java.xml:\\Qjdk/xml/internal/jdkcatalog/JDKCatalog.xml\\E"
}, {
"pattern":"jdk.internal.le:\\Qjdk/internal/org/jline/utils/capabilities.txt\\E"
}, {
"pattern":"jdk.internal.le:\\Qjdk/internal/org/jline/utils/xterm-256color.caps\\E"
}]}, }]},
"bundles":[{ "bundles":[{
"name":"jakarta.servlet.LocalStrings", "name":"jakarta.servlet.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"jakarta.servlet.http.LocalStrings", "name":"jakarta.servlet.http.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.catalina.authenticator.LocalStrings", "name":"org.apache.catalina.authenticator.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.catalina.authenticator.jaspic.LocalStrings", "name":"org.apache.catalina.authenticator.jaspic.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.catalina.connector.LocalStrings", "name":"org.apache.catalina.connector.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.catalina.core.LocalStrings", "name":"org.apache.catalina.core.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.catalina.deploy.LocalStrings", "name":"org.apache.catalina.deploy.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.catalina.loader.LocalStrings", "name":"org.apache.catalina.loader.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.catalina.mapper.LocalStrings", "name":"org.apache.catalina.mapper.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.catalina.mbeans.LocalStrings", "name":"org.apache.catalina.mbeans.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.catalina.realm.LocalStrings", "name":"org.apache.catalina.realm.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.catalina.security.LocalStrings", "name":"org.apache.catalina.security.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.catalina.session.LocalStrings", "name":"org.apache.catalina.session.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.catalina.startup.LocalStrings", "name":"org.apache.catalina.startup.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.catalina.util.LocalStrings", "name":"org.apache.catalina.util.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.catalina.valves.LocalStrings", "name":"org.apache.catalina.valves.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.catalina.webresources.LocalStrings", "name":"org.apache.catalina.webresources.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.coyote.LocalStrings", "name":"org.apache.coyote.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.coyote.http11.LocalStrings", "name":"org.apache.coyote.http11.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.coyote.http11.filters.LocalStrings", "name":"org.apache.coyote.http11.filters.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.naming.LocalStrings", "name":"org.apache.naming.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.tomcat.util.LocalStrings", "name":"org.apache.tomcat.util.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.tomcat.util.buf.LocalStrings", "name":"org.apache.tomcat.util.buf.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.tomcat.util.compat.LocalStrings", "name":"org.apache.tomcat.util.compat.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.tomcat.util.descriptor.web.LocalStrings", "name":"org.apache.tomcat.util.descriptor.web.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.tomcat.util.http.LocalStrings", "name":"org.apache.tomcat.util.http.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.tomcat.util.http.parser.LocalStrings", "name":"org.apache.tomcat.util.http.parser.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.tomcat.util.modeler.LocalStrings", "name":"org.apache.tomcat.util.modeler.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.tomcat.util.net.LocalStrings", "name":"org.apache.tomcat.util.net.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.tomcat.util.scan.LocalStrings", "name":"org.apache.tomcat.util.scan.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.tomcat.util.threads.LocalStrings", "name":"org.apache.tomcat.util.threads.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.tomcat.websocket.LocalStrings", "name":"org.apache.tomcat.websocket.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.tomcat.websocket.pojo.LocalStrings", "name":"org.apache.tomcat.websocket.pojo.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"org.apache.tomcat.websocket.server.LocalStrings", "name":"org.apache.tomcat.websocket.server.LocalStrings",
"locales":[""] "locales":["de-DE"]
}, { }, {
"name":"sun.awt.resources.awt", "name":"sun.awt.resources.awt",
"classNames":["sun.awt.resources.awt", "sun.awt.resources.awt_de"] "locales":["de-DE"]
}, {
"name":"sun.text.resources.cldr.FormatData",
"locales":["de", "de-DE", "en", "en-US", "und"]
}, {
"name":"sun.util.resources.cldr.CalendarData",
"locales":["und"]
}, {
"name":"sun.util.resources.cldr.TimeZoneNames",
"locales":["en", "en-US", "und"]
}] }]
} }

View file

@ -1,13 +0,0 @@
package com.ModeratorElection;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class DemoApplicationTests {
@Test
void contextLoads() {
}
}

View file

@ -5,12 +5,13 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
//@SpringBootTest @SpringBootTest(classes = MainView.class)
public class MainViewTest { public class MainViewTest {
@Test @Test
void mainViewConstructor() { void mainViewConstructor() {
MainView sut = new MainView("Harry,Sven,Ida"); MainView sut = new MainView("Harry,Sven,Ida");
CheckboxGroup cgroupTest = (CheckboxGroup) sut.getChildren().filter(child -> child instanceof CheckboxGroup).findAny().orElse(null); CheckboxGroup cgroupTest = (CheckboxGroup) sut.getChildren().filter(child -> child instanceof CheckboxGroup).findAny().orElse(null);
assert cgroupTest != null;
int cgroupTestSelectedItemsSize = cgroupTest.getSelectedItems().size(); int cgroupTestSelectedItemsSize = cgroupTest.getSelectedItems().size();
Assertions.assertEquals(3,cgroupTestSelectedItemsSize); Assertions.assertEquals(3,cgroupTestSelectedItemsSize);
} }