Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

dodex-vertx

DaveO-Home311MIT4.0.2

A java asynchronous server for Dodex and Dodex-mess

Java, RxJava, vertx

readme

doDex-vertx, a java asynchronous server for Dodex, Dodex-input and Dodex-mess

Install Assumptions

  1. Using Vertx5
  2. Java 17 or higher installed with JAVA_HOME set.
  3. Gradle 8+ installed(app will install gradle 8). If you have sdkman installed, execute sdk install gradle 8.14
  4. Node with npm javascript package manager installed.

Important Note: The ./gradlew run is much more complex out of the box. The kotlin, gRPC web application requires a gradle composite build configuration. See the Kotlin, gRPC Web Application section below.
Important Note; The kotlin, gRPC application can now run without a proxy(Envoy). After initial configuration(javascript npm installs), the gRPC client now connects directly to Vert.x. Simply execute gradlew run and enter localhost:8087/handicap.html in a browser. The envoy proxy can still be used by setting an environment variable, GRPC_SERVER=true.

Also note that the io.vertx.launcher.application.VertxApplication is not used since in development only a maven plugin is supported for auto-reload. In addition, the replacement for AbstractVerticle which is VerticalBase is not used. Too many code changes would be required.

New Additions(7/24)

  1. Added Vert.x gRPC Server, see Grpc README
  2. Added the Vert.x Mqtt Broker to communicate with the dodex-akka microservice client to process dodex-mess messages.
    • see Mqtt Broker section below for the broker and dodex-akka README for the client

Getting Started

  1. npm install dodex-vertx or download from https://github.com/DaveO-Home/dodex-vertx. If you use npm install, move node_modules/dodex-vertx to an appropriate directory.
  2. cd <install directory>/dodex-vertx/src/main/resources/static and execute npm install --save to install the dodex modules.
  3. cd <install directory>/dodex-vertx and execute ./gradlew run. This should install java dependencies and startup the server in development mode against the default sqlite3 database. In this mode, any modifications to java source will be recompiled.
  4. Execute url http://localhost:8087/test in a browser.
  5. You can also run http://localhost:8087/test/bootstrap.html for a bootstrap example.
  6. Follow instructions for dodex at https://www.npmjs.com/package/dodex-mess and https://www.npmjs.com/package/dodex-input.
  7. You can turn off colors by setting "color": to false in application-conf.json.
  8. The Cassandra database has been added via an Akka microservice. See; https://www.npmjs.com/package/dodex-akka.
  9. Added Cassandra database to the React demo allowing the login component to use Cassandra.
  10. See the Firebase section for using Google's Firestore backend.
  11. Added a verticle for Java21 Virtual Threads test; "localhost:8881/threads" when "dodex.virtual.threads" is set to "true" in "application-conf.json"
  12. Made "h2" default database.

Operation

  1. Execute ./gradlew tasks to view all tasks.
  2. Execute ./gradlew shadowJar to build the production fat jar.
  3. Execute java -jar build/libs/dodex-vertx-4.0.0-prod.jar to start up the production server.
  4. Execute url http://localhost:8880/dodex or .../dodex/bootstrap.html in a browser.
    • Note: This is a different port and url than development.
    • Note: The default database on the backend is "h2", no further configuration is necessary. Dodex-vertx also has Postgres/Cubrid/Mariadb/Ibmdb2/Cassandra/Firebase implementations. See <install directory>/dodex-vertx/src/main/resources/static/database_config.json for configuration.
  5. Swapping among databases; Use environment variable DEFAULT_DB by setting it to either sqlite3 ,postgres, cubrid, mariadb, ibmdb2, cassandra, firebase, mongo or set the default database in database_config.json.
  6. The environment variable VERTXWEB_ENVIRONMENT can be used to determine the database mode. It can be set to either prod or unset for production and dev for the development database as defined in database_config.json.
  7. When Dodex-vertx is configured for the Cubrid database, the database must be created using UTF-8. For example cubrid createdb dodex en_US.utf8.
  8. Version 1.3.0 adds an auto user clean up process. See application-conf.json for configuration. It is turned off by default. Users and messages may be orphaned when clients change a handle when the server is offline.

Mqtt Broker for Dodex-Mess via Dodex-Akka

  • By default, dodex-vertx uses a TCP/Event Bus to communicate with dodex-akka with a backend Cassandra database.
  • Dodex-Vertx can be configured to use Mqtt as the transport between Vert.x and Akka. This allows the dodex-mess application to send messages among dodex users.
    • Execute export USE_MQTT=true, export DEFAULT_DB=cassandra and execute gradlew run
    • For a permanent change, set "use.mqtt": true in .../src/main/resource/application-conf.json
    • Startup the dodex-akka microservice configured with Mqtt

Debug

  • Execute gradlew run -DDEBUG=true to debug the Vertx Verticle.
  • The default port is 5005, see build.gradle to change.
  • Tested with VSCode, the launch.json =

javascript { "type": "java", "name": "Debug (Launch) - Dodex", "request": "attach", "hostName": "localhost", "port": 5005 }

Test Dodex

  1. Make sure the demo Java-vertx server is running in development mode.
  2. Test Dodex-mess by entering the URL localhost:3087/test/index.html in a browser.
  3. Ctrl+Double-Click a dial or bottom card to pop up the messaging client.
  4. To test the messaging, open up the URL in a different browser and make a connection by Ctrl+Double-Clicking the bottom card. Make sure you create a handle.
  5. Enter a message and click send to test.
  6. For dodex-input Double-Click a dial or bottom card to pop up the input dialog. Allows for uploading, editing and removal of private content. Content in JSON can be defined as arrays to make HTML more readable.

Java Linting with PMD

  • Run gradlew pmdMain and gradlew pmdTest to verify code using a subset of PMD rules in dodexstart.xml
  • Reports can be found in build/reports/pmd

Optimizing with Graalvm

  • You can run the Vertx Server in native assembled code by compiling the fat jar with graalvm.

    1. Install from https://github.com/graalvm/graalvm-ce-builds/releases.
    2. Follow install instructions.
    3. Execute <graalvm directory>/bin/gu install native-image to install the native-image program.
    4. In the dodex-vertx directory execute gradlew installDist and gradlew shadowJar.
    5. Modify the dodexvm8/vm11 or dodexvm.bat shell to the graalvm install directory.
    6. In your dodex-vertx directory execute the dodexvm8 or dodexvm11 shell script. This should create an executable named io.vertx.core.Launcher.
    7. Execute the production server with io.vertx.core.Launcher.

      Note: dodex-vertx will not build as a stand alone, therefore, if you move the executable to different directory, you must also move the shadowJar to the same directory with structure build\libs.

Single Page React Application to demo Development and Integration Testing

Development Environment in a docker container using CentOS

  • Assumes docker is installed with the daemon running and the envoy proxy is running on the host.

    1. From dodex-vertx directory; execute centos/buildcontainer or on windows centos\buildcontainer
    2. Execute gradlew run to start development. Execute ctl-c && exit to shutdown.
    3. Execute centos/execontainer or centos\execontainer on subsequent startups.

Firebase

  • Create an account: https://firebase.google.com
  • Getting started: https://firebase.google.com/docs/admin/setup#java
  • Make sure you create a Service-Account-Key.json file as instructed. Dodex-Vertx uses the environment variable option to set the service-account - GOOGLE_APPLICATION_CREDENTIALS. See gradle.build as one way to set it.
  • You will need to log in to the Firebase console and create the dodex-firebase project. See src/main/java/dmo/fs/router/FirebaseRouter.java for usage of the project-id and Google Credentials. Note: The Firebase rules are not used, so they should be set to allow read, write: if false; which may be the default.
  • You only need the Authentication and Firestore extensions.
  • If you want a different project name, change .firebaserc.

    Testing

    • To make sure your project is created and the setup works, you should run the tests. Note: They are written in Typescript.
    • cd ../dodex-vertx/src/firebase and run npm install
    • execute npm run emulators to start up the emulators for testing.
    • To test the model and rules after starting the emulators, in a different terminal window, run npm test.

Neo4j

  • See https://neo4j.com/docs/operations-manual/current/ for usage.
  • To use a container with apoc you can try: Note: this has --privileged set.
      docker run \
      -p 7474:7474 -p 7687:7687 \
      -v $PWD/neo4j/data:/neo4j/data -v $PWD/neo4j/plugins:/neo4j/plugins \
      --name neo4j-apoc \
      --privileged \
      -e 'NEO4J_AUTH=neo4j/secret' \
      -e NEO4J_apoc_export_file_enabled=true \
      -e NEO4J_apoc_import_file_enabled=true \
      -e NEO4J_apoc_import_file_use**neo4j**config=true \
      -e NEO4JLABS_PLUGINS=\[\"apoc\"\] \
      -e NEO4J_dbms_security_procedures_unrestricted=apoc.\\\* \
      neo4j:4.3
    To restart and stop: docker start neo4j-apoc and docker stop neo4j-apoc

The Neo4j was tested with the apoc install, however the database should work without it.

Simply execute export DEFAULT_DB=neo4j to use, after database setup.

Mongodb

  • Uses a separate OpenAPI setup, located in "..../dmo.fs.db/mongodb"
  • Configure in ..../src/main/resources/database_config.json
  • Make sure the database is set up with something like;
            use dodex
            db.createUser(
              {
                user: "dodex",
                pwd: passwordPrompt(), // or cleartext password
                roles: [
                  { role: "dbOwner", db: "dodex" },
                ]
              }
            )

Dodex Monitoring

Getting Started

  • Apache Kafka must be installed.

    • Kafka Quickstart - A container should also work
    • .../config/server.properties should be modified if using a local install
      • advertised.listeners=PLAINTEXT://localhost:9092
      • num.partitions=2 # at least 2
    • local startup
      • ./bin/zookeeper-server-start.sh config/zookeeper.properties
      • ./bin/kafka-server-start.sh config/server.properties
  • Setup Vertx for Kafka

    • set environment variable DODEX_KAFKA=true or
    • set "dodex.kafka" to true in the application-conf.json file(default is false)
    • startup Vertx - the monitor should work with any of the databases
    • the monitor configuration can be found in application-conf.json
  • Monitor Dodex

    • in a browser enter localhost:8087/monitor or localhost:8880/monitor in production.
    • as dodex messaging executes the events should be recorded.
    • in the browser's developer tools console execute stop(); and start(); to stop/start the polling. Polling is started by default.

      Note: you can open the messaging dialog with ctrl-doubleclick on the dials

Dodex Groups using OpenAPI

  • A default javascript client is included in .../dodex-vertx/src/main/resources/static/group/. It can be regenerated in .../dodex-vertx/handicap/src/grpc/client/ by executing npm run group:prod.
  • The group javascript client is in .../src/grpc/client/js/dodex/groups.js and group.js.
    Note: The client is included in the static directory by default.
  • See .../src/main/resources/openapi/groupApi31.yml for OpenAPI declarations. The Vert.x implementation generates routes for .../src/main/java/dmo/fs/router/OpenApiRouter.java

Installing in Dodex

  1. Implementing in a javascript module; see .../dodex-vertx/handicap/src/grpc/client/js/dodex/index.js
    • import { groupListener } from "./groups";
    • in the dodex init configuration, add
      ...
      .then(function () {
          groupListener();
      ...
  2. Implementing with inline html; see .../dodex-vertx/main/resources/test/index.html
    • <script src="../group/main.min.js"></script>
    • in the dodex init configuration, add
      ...
      .then(function () {
          window.groupListener();
      ...
  3. Using dodex-messaging group functionality
    Note: Grouping is only used to limit the list of "handles" when sending private messages.
  4. Adding a group using @group+<name>
    • select Private Message from the more button dropdown to get the list of handles.
    • enter @group+<name> for example @group+aces
    • select the handles to include and click "Send". Members can be added at any subsequent time.
  5. Removing a group using @group-<name>
    • enter @group-<name> for example @group-aces and click "Send". Click the confirmation popup to complete.
  6. Removing a member
    • enter @group-<name> for example @group-aces
    • select a "handle" from the dropdown list and click "Send"
  7. Selecting a group using @group=<name>
    • enter @group=<name> for example @group=aces and click "Send"
    • Select from reduced set of "handles" to send private message.

Note: By default the entry "dodex.groups.checkForOwner" in application-conf.json is set to false. This means that any "handle" can delete a "group" or "member". Setting the entry to true prevents global administration, however, if the owner "handle" changes, group administration is lost.

Kotlin, gRPC Web Application

  • This web application can be used to maintain golfer played courses and scores and to calculate a handicap index. The application has many moving parts from the envoy proxy server to kotlin, protobuf, gRPC, jooq, bootstrap, webpack, esbuild, gradle, java and javascript.

    See documentation at; https://github.com/DaveO-Home/dodex-vertx/blob/master/handicap/README.md

Docker, Podman and Minikube(Kubernetes)

  • Assumes docker, podman and minikube are installed

Building an image and container with docker

  1. cd to the dodex-vertx install directory
  2. make sure dodex and the handicap node_modules and application are installed
  3. If using Envoy and ./kube/Dockerfile_Envoy, add -p 9901 when creating an image or container.

    • in src/main/resources/static execute npm install
    • in handicap/src/grpc/client execute npm install and npm run webpack:prod or npm run esbuild:prod
    • startup Vertx in dev mode - gradlew run
    • optionally install the spa_react application and in src/spa-react/devl execute npx gulp prod or npx gulp prd(does not need dodex-vertx started)
    • stop the vertx server - ctrl-c
    • build the production fat jar - execute ./gradlew clean(optional) shadowJar
    • verify the jar's name - if different from dodex-vertx-4.0.0-prod.jar, change in ./kube/Dockerfile and run_dodex.sh
  4. execute cp build/libs/dodex-vertx-4.0.0-prod.jar to kube/

  5. execute docker build -t dufferdo2/dodex-vertx:latest -f kube/Dockerfile ./kube
  6. execute docker create -t -p 8880:8880 -p 8070:8070 --name dodex_vertx dufferdo2/dodex-vertx
  7. execute docker start dodex_vertx, make sure envoy is not running on the host.
  8. use browser to view - http://localhost:8880/handicap.html, http://localhost:8880/dodex or http://localhost:8880/dodex/bootstrap.html, if the spa-react was installed this link should work, http://localhost:8880/dist/react-fusebox/appl/testapp.html
  9. execute docker stop dodex_vertx
  10. to clean up execute docker rm dodex_vertx and docker rmi dodex-vertx, however you should keep the dufferdo2/dodex-vertx image if trying out podman or minikube.
  11. to pull and generate a local image from the docker hub, execute docker build -t dodex-vertx:latest -f kube/vertx/Dockerfile .
  12. you can also build/run dufferdo2/dodex-vertx(image) and dufferdo2/dodex_vertx(container) with; docker compose -f kube/docker-compose.yaml up -d, assumes that envoy is running for dodex-vertx
  13. Use run to test different databases; docker run --rm -p 8880:8880 -p 8070:8070 -e DEFAULT_DB=postgres -e USE_HANDICAP=true --name dodex_vertx dufferdo2/dodex-vertx. To stop, run docker container stop dodex_vertx.

Note: When running the dufferdo2/dodex-vertx image based on ./kube/Dockerfile_Envoy, there is no need to have envoy running on the host machine. Envoy is included in the image.

Building an image and container with podman

  1. generate an empty pod execute podman pod create -n vertx-pod -p 0.0.0.0:8880:8880 -p 0.0.0.0:8070:8070
  2. generate a container execute podman create -t --pod vertx-pod --name vertx_server dufferdo2/dodex-vertx:latest.
  3. start the container execute podman start vertx_server
  4. view in browser
  5. to clean-up execute podman stop vertx_server, podman rm vertx_server, podman pod rm vertx-pod
  6. before cleaning up, you can generate a yaml template. Execute podman generate kube vertx-pod > vertx.yaml

Building a deployment, service and persistent volume with minikube

  • Since including the Handicap application(multiple exposed ports, persistent volume) to dodex-vertx, the minikube deployment must be from configuration files.
  • execute minikube start
  • to make sure the dufferdo2/dodex-vertx image is set up, execute docker build -t dufferdo2/dodex-vertx:latest -f kube/Dockerfile ./kube
  • edit kube/vertx.yml and change env: to desired database(DEFAULT_DB) - defaults to h2, no database configuration necessary otherwise set DEFAULT_DB to mariadb or postgres
  • execute kubectl create -f kube/db-volume.yml
  • execute kubectl create -f kube/vertx.yml
  • execute minikube service vertx-service to start dodex-vertx in the default browser - add --url to get just the URL
  • verify that dodex-vertx started properly - execute ./execpod and cat ./logs/vertx.log - enter exit to exit the pod

For postgres make sure postgres.conf has entry:

             listen_addresses = '*'          # what IP address(es) to listen on;

and pg_hba.conf has entry:

             host    all    all    <ip from minikube vertx-service --url>/32   <whatever you use for security> (default for dodex-vertx "password")

and database_config.json(also in ../dodex-vertx/generate...resources/database(spa)confg.json) entry: postgres... (both dev/prod)

              "config": {
              "host": "<ip value from `hostname -i`>",

netstat -an |grep 5432 should look like this

             tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN     
             tcp6       0      0 :::5432                 :::*                    LISTEN     
             unix  2      [ ACC ]     STREAM     LISTENING     57905233 /var/run/postgresql/.s.PGSQL.5432
             unix  2      [ ACC ]     STREAM     LISTENING     57905234 /tmp/.s.PGSQL.5432

Development

  1. Make changes to the dodex-vertx code
  2. execute gradlew clean(optional)
  3. build the fat jar and image as described in the Operation and Building an image and container with docker sections, e.g.
    • build the production fat jar - ./gradlew shadowJar
      • Optional When building the fat jar, set DEFAULT_DB=h2 or mariadb or postgres and USE_HANDICAP=true
      • verify the jar's name - if different from dodex-vertx-4.0.0-prod.jar, change in ./kube/Dockerfile
    • copy the build/dodex-vertx-4.0.0-prod.jar to ./kube
    • if the dodex_vertx and/or the dufferdo2/dodex-vertx exist, remove them docker rm dodex_vertx and docker rmi dufferdo2/dodex-vertx
    • build the image docker build -t dufferdo2/dodex-vertx:latest -f ./kube/Dockerfile ./kube
  4. execute ./deleteapp
  5. execute minikube image rm dufferdo2/dodex-vertx
  6. execute minikube load image dufferdo2/qodex-vertx
  7. execute kubectl create -f kube/vertx.yml
  8. execute minikube service vertx-service
  9. clean-up execute ./deleteapp, kubectl delete pvc vertx-pvc, kubectl delete pv vertx-pv, minikube image rm dufferdo2/dodex-vertx
  10. execute minikube stop

Exposing the minikube dodex-vertx container to the internet

  1. cd .../dodex-vertx and execute npm install - this will install localtunnel
  2. execute minikube service vertx-service --url to view the local host ip address - can be used for the --local-host value
  3. in separate terminals

    • execute npx localtunnel --host https://localtunnel.me --subdomain my-app --port 30080 --local-host $(minikube service vertx-service --url | cut -d":" -f2 | cut -d"/" -f3)
    • for the gRPC tunnel, execute npx localtunnel --host https://localtunnel.me --subdomain my-app2 --port 30070 --local-host $(minikube service vertx-service --url | cut -d":" -f2 | cut -d"/" -f3)
      • the --subdomain for my-app and my-app2 should be changed to unique values
      • the naming convention is required(otherwise edit src/grpc/client/js/client.js and tweak) e.g. coolapp for port 30080 and coolapp2 for port 30070
    • view https://YOUR-UNIQUE-APP.loca.lt or https://YOUR-UNIQUE-APP.lt/handicap.html in browser

    Note: Make sure your Ad-Blocker is turned off for the website.

  4. The client also supports loophole https://loophole.cloud/docs. Much better bandwidth running out of Europe and is also free.

    • loophole http 30080 $(minikube service vertx-service --url | cut -d":" -f2 | cut -d"/" -f3) --hostname my-coolapp
    • loophole http 30070 $(minikube service vertx-service --url | cut -d":" -f2 | cut -d"/" -f3) --hostname my-coolapp2

      Note: You will have to create a login to use loophole.

ChangeLog

https://github.com/DaveO-Home/dodex-vertx/blob/master/CHANGELOG.md

Authors

License

This project is licensed under the MIT License - see the LICENSE file for details

changelog

Changelog

v4.0.2 (2025-06-03)

Full Changelog

  • Fixed vertx null pointer exception for databases
  • Upgraded Javascript dependencies
  • Changed Dockerfile to default to Vert.x 5, no Envoy
  • Added Dockerfile_Envoy to run Envoy
  • Changed README.md for building docker/podman/minikube applications
  • See ./kube/dev_minikube.txt cheat sheet for building docker/minikube vert.x application exposed to the internet using loophole tunnelling software.

v4.0.0 (2025-05-20)

Full Changelog

  • Upgraded to vertx 5.0.0
  • grpc-web now works out of the box without a proxy(envoy), see handicap/src/main/kotlin/golf/handicap/vertx/HandicapGrpcServer.kt
  • The Envoy proxy can still be used by setting the environment variable GRPC_SERVER=true
  • Dodex-Vertx does not use the new Vert.x 5.0.0 Launcher and VerticleBase Class
    • The new Launcher for development uses a maven plugin for reload. Not useful when using Gradle
    • The VerticalBase required more code changes. Anything related to Vert.x classes and rxjava3, e.g. io.vertx.rxjava3.core.Vertx needs to change to io.vertx.core.Vertx.

v3.3.1 (2025-01-27)

Full Changelog

  • Upgraded to vertx 4.5.12
  • Upgraded Java and Javascript dependencies
  • Fixed deprecated database pool creation, now using a builder pattern
  • Fixed the gRPC javascript client to handle latest google-protobuf version
  • Added new weather widget to the handicap client
  • Made the static router a little more performant

v3.3.0 (2024-07-31)

Full Changelog

  • Upgraded to vertx 4.5.9
  • Implemented new gRPC server as described in the docs:
    ''Vert.x gRPC Server is a new gRPC server powered by Vert.x HTTP server superseding the integrated Netty based gRPC client.
    This server provides a gRPC request/response oriented API as well as the generated stub approach with a service bridge.''
    • see .../handicap/src/main/kotlin/golf/handicap/vertx/HandicapGrpcServer.kt, however, the Netty configuration is still default.
    • To use the new gRPC Vert.x server, execute export GRPC_SERVER=true or change "grpc.server": true in .../src/main/resources/application-conf.json for a permanent change
  • Added the Vert.x Mqtt Broker to communicate with the dodex-akka microservice client to process dodex-mess messages.
    • see the dodex-vertx README for the broker and dodex-akka README for the client

v3.2.1 (2024-02-05)

Full Changelog

  • Upgraded to vertx 4.5.2
  • Fixed handicap to correctly update golfer scores with asterisk indicating which scores are used for handicap
  • Upgraded javascript dependencies
  • Fixed postgresql table "net_score" with proper precision
    • use ALTER TABLE scores ALTER COLUMN net_score TYPE numeric(4,1) if table is already defined.

v3.2.0 (2024-01-05)

Full Changelog

  • Upgraded to vertx 4.5.1
  • Added "h2" database, supports dodex and the handicap application
  • Made "h2" the default DB - with latest java jdbc-client, sqlite3 no longer returns "generated key"
  • Added a verticle for Java21 Virtual Threads; "localhost:8881/threads" when "dodex.virtual.threads" is set to "true" in "application-conf.json"
  • Made "static" router a little less problematic (removed unnecessary routing)
  • Removed future deprecations from PMD - dodexstart.xml
  • Added "mongodb" for use with "dodex"
  • Organized the db package

v3.1.2 (2023-11-18)

Full Changelog

  • Upgraded to vertx 4.4.6 final
  • Upgraded javascript dependencies
  • Fixed openapi validation and sqlite3 database functions for dodex openapi addon

v3.1.1 (2023-10-18)

Full Changelog

  • Upgraded to vertx 4.4.6 final
  • Upgraded javascript dependencies
  • Fixed "duplicate key" when adding group members in the dodex openapi addon

v3.1.0 (2023-08-15)

Full Changelog

  • Upgraded to vertx 4.4.5 final
  • Upgraded javascript dependencies
  • Added handicap dodex group capability using OpenApi
    • see Dodex Groups using OpenAPI section in the README
  • Added group openapi client to static directory for use with other dodex implementations
  • Fixed skipped tests, however the "dev" server and "envoy" proxy must be running to complete successfully.
  • Fixed error: incompatible types: DodexDatabasePostgres cannot be converted to DodexDatabase, gradle compile dependency problem and package/class name conflicts - no need to run clean first
  • upgraded to Gradle 8.1.1
  • Default vertx grpc port changed to 15002
  • Changed all mariadb table names to lowercase to make consistent with jooq/postgres generator
  • Fixed font-size on handicap form

v3.0.2 (2023-05-12)

Full Changelog

  • Upgraded to vertx 4.4.2 final
  • Upgraded javascript dependencies
  • Fixed dodex-mess (grab credentials)
  • Added default generated javascript grpc scripts: handicap_grpc_web_pb.js, handicap_pb.js
    • client can now be generated with just npm run webpack:build etc.

v3.0.0 (2023-04-17)

Full Changelog

  • Upgraded to vertx 4.4.1 final
  • Upgraded to gradle 8.0.2
  • Upgraded java/javascript dependencies
  • Major upgrade of React to v18.2.0
  • Added docker config for grpc
  • Added minikube with exposure to internet
  • Cleaned up gradle warnings and dependency conflicts
  • Changed centos/Dockfile to handle latest dependencies
  • Added content to handicap dodex widget
  • Process Changes:
    • Must run ./gradlew clean before building production jar
    • Must run ./gradlew shadowJar or ./gradlew build to build production jar
    • Should set USE_HANDICAP=true before building the jar
    • Making database changes and using jooqGenerate
      • Set DEFAULT_DB to either sqlite3 or postgres ("mariadb" handles booleans and floats differently)
      • If using sqlite3 remove handicap/dodex_tests.db(Assumes that DbSqlite3.java has been changed and all other used databases)
        • Note: In ..../dodex-vertx directory run for each database, find . -name DbSqlite3.java to find the db schema
      • Optionally remove handicap/src/main/kotlin/golf/handicap/generated directory
      • Run ./gradlew jooqGenerate

v2.5.2 (2022-11-13)

Full Changelog

  • Upgraded to vertx 4.3.4 final
  • Upgraded java/javascript dependencies
  • Added a web application using "kotlin", "protobuf", "gRPC", "envoy", "javascript/tools", "jooq" code generation
  • Major modification to "gradle" configuration for new application
  • Upgraded gradle to 7.5, requires Java17 or greater

v2.4.0 (2022-9-1)

Full Changelog

  • Upgraded to vertx 4.3.3 final
  • Upgraded java/javascript dependencies
  • Migrated to rxjava3
  • Added Neo4j database(using mutiny with database access)
  • Added Dodex monitor using Kafka/Zookeeper
  • Changed Logger to Log4j to control Kafka logging

v2.3.0 (2022-3-15)

Full Changelog

  • Upgraded to vertx 4.2.5 final
  • Upgraded spa-react dependencies
  • Fixed pointer on tools dropdown
  • Added custom @metahub package in karma to remove deprecation
  • Changed vertx static handler to remove deprecation
  • Upgraded marked to latest.
  • Upgraded react router to v6 - Needed changes to "MenuLinks" and "routertest.js"
  • Upgraded Bootstap 4 -> 5 - New layout
  • Upgraded fontawesome 4 -> 5

v2.2.2 (2021-10-29)

Full Changelog

  • Upgraded to vertx 4.2.0 final
  • upgraded dodex and vertx dependencies(cubrid/agroal)

v2.2.1 (2021-10-14)

Full Changelog

  • Upgraded and modified firebase tests - src/firebase/testsrc/dodex.tests.ts
  • Made dodex connections to server more generic - index.html, bootstrap.html, entry.jsx

v2.2.0 (2021-08-01)

Full Changelog

  • Added VERTX_PORT environment variable to change port at execution time
  • Setup graalvm with both java8 and java11 - dodexvm8 & dodexvm11
  • Upgraded javascript modules in spa react demo
  • Upgraded javascript modules in firebase setup
  • Added Firebase to spa react demo for 'login' table
  • Upgraded Vert.x to 4.1.2
  • Upgraded Gradle to 7.1.1 - faster rebuilds
  • Fixed AKKA connection problem
  • Fixed Postgres SPA login problem
  • Code clean-up - based on PMD and SonarLint
  • Separated out Cubrid database code from DbDefinitionBase.java to DbCubridOverride.java - fixed in 4.2.0?

v2.1.0 (2021-05-10)

Full Changelog

  • Added Firebase/Firestore as a backend.
  • Cleaned up some code.
  • Fixed startup messages.

v2.0.6 (2021-04-20)

Full Changelog

  • Display current database
  • Display regex route patterns
  • Changed sql "Update" to "Insert" form for Cubrid, Update,Select,Delete are still problematic

v2.0.5 (2021-04-14)

Full Changelog

  • Upgraded to Vertx 4.0.3
  • Upgraded Cubrid jdbc driver to v11, did not fix null exception
  • Upgraded javascript React app (removed potentially dangerous vulnerabilities)
  • Fixed deprecated karma server configuration
  • Added keystore to easily test ssl(commented out by default), see Server.java

v2.0.4 (2021-02-12)

Full Changelog

  • Upgraded to Vertx 4.0.2
  • Upgraded to Gradle 6.8.1
  • Fixed repository defines in build.gradle

v2.0.3 (2021-01-23)

Full Changelog

  • Upgraded the React spa app to remove many vulnerabilities.
  • Made jsoneditor default to z-index -1 to allow table pager

v2.0.2 (2020-12-31)

Full Changelog

  • Fixed deprecated merge sql & React Login
  • The login was modified for cassandra but caused other dbs to fail
  • The jooq merge command was deprecated, replaced with "insertInto" with onConflict

v2.0.1 (2020-12-30)

Full Changelog

  • Fixed Spa-React "login" component for Akka/Cassandra

v2.0.0 (2020-12-28)

Full Changelog

  • Migrated to Vertx4 - basically a re-write
  • Converted 'davidmoten:rxjava2-jdbc' library to 'io.vertx.reactivex.*'
  • Using Vertx4 PostgreSQL, MySQL, DB2 and JDBC clients

Just a note: 😞 Wondering if anyone tries this code out. No Issues!! not even a 👍.

v1.9.1 (2020-12-07)

Full Changelog

  • Added Cassandra database to the React SPA Demo to allow the login component.
  • Made the TCP bridge more global to allow multiple handlers. The complete setup now happens in Server.java.
  • Fixed the determination between dev/test and prod; See application-conf.json, also moved this file to the CLASSPATH so it can be loaded in production (Vertx always wants the command line --conf parameter).

v1.9.0 (2020-11-24)

Full Changelog

  • Added Cassandra database via an Akka microservice as an Event-Bus client, see; https://www.npmjs.com/package/dodex-akka
  • Added turning off color in application-conf.json. Also with ColorUtilConstants.colorOff() and colorOn()

v1.8.4 (2020-06-29)

Full Changelog

  • Fixed Exception when sending private message to multiple users
  • Made removing Undelivered/Messages non-blocking
  • Upgraded gradle 6.5

Full Changelog

  • Add databases to SPA application
  • Fixed potential thread issue with removing messages
  • Upgraded dependencies

v1.8.2 (2020-06-02)

Full Changelog

  • Detect old login in Browser Refresh (react component LoginC.jsx)
  • Upgraded gradle to 6.4.1 to allow Java14

v1.8.1 (2020-06-01)

Full Changelog

  • Added Change Log README

v1.8.0 (2020-06-01)

Full Changelog

  • Added Java Linting with PMD - See Java Linting section in README
  • Changed src to comply with a subset of PMD rules

v1.7.0 (2020-05-26)

Full Changelog

  • Made DodexRouter non-blocking with Future and Promise
  • All database calls are now non-blocking (removed await)
  • Made CleanOrphanedUsers non-blocking
  • Added React SPA Demo for testing/development
  • Upgraded vert.x to v3.9.1

* This Changelog was automatically generated by github_changelog_generator