{"id":14973410,"url":"https://github.com/glytching/dragoman","last_synced_at":"2026-03-08T11:31:42.055Z","repository":{"id":44221730,"uuid":"109266946","full_name":"glytching/dragoman","owner":"glytching","description":"A sort of interpreter providing a SQL-esque query facade and a subscription mechanism over disparate data sources","archived":false,"fork":false,"pushed_at":"2023-07-16T08:44:50.000Z","size":1467,"stargazers_count":4,"open_issues_count":12,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-01T01:25:10.295Z","etag":null,"topics":["angular1","antlr","bootstrap3","handlebars-js","java","javascript","junit5","mockito","mongodb","rxjava","sql-query","vertx","vertx-web"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/glytching.png","metadata":{"files":{"readme":"readme-upgrade-java10.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-11-02T13:15:02.000Z","updated_at":"2023-02-21T04:03:30.000Z","dependencies_parsed_at":"2022-09-19T05:12:15.671Z","dependency_job_id":null,"html_url":"https://github.com/glytching/dragoman","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glytching%2Fdragoman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glytching%2Fdragoman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glytching%2Fdragoman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glytching%2Fdragoman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/glytching","download_url":"https://codeload.github.com/glytching/dragoman/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238418216,"owners_count":19468865,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular1","antlr","bootstrap3","handlebars-js","java","javascript","junit5","mockito","mongodb","rxjava","sql-query","vertx","vertx-web"],"created_at":"2024-09-24T13:48:40.741Z","updated_at":"2025-10-27T01:30:33.506Z","avatar_url":"https://github.com/glytching.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"Prerequisites\n----\n\n### Install Java 10 JDK\n\nThe following instructions all relate to MacOs.\n\n```\n$ brew update\n$ brew tap caskroom/cask\n$ brew tap caskroom/versions\n$ brew cask info java\n# this is valid as long as the current version of java is 10, if not you may have to specify java10\n$ brew cask install java\n```\n\nCheck the installations:\n\n```\n$ ls /Library/Java/JavaVirtualMachines/\njdk-10.0.2.jdk/  jdk1.8.0_51.jdk/\n```\n\nFor help with running multiple versions of Java on MacOs:\n\n* Install `jenv`: `brew install jenv`\n* Add the following lines to ~/.bash_profile to initialize `jenv`:\n    ```\n    # Init jenv\n    if which jenv \u003e /dev/null; then eval \"$(jenv init -)\"; fi\n    ```\n* Tell `jenv` about the installed JDKs:\n    ```\n    jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/\n    jenv add /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home/\n    ```\n* Check that the JDKs have been registered: `jenv versions`, the output will be something like the following (the asterix marks the active version):\n    ```\n    $ jenv versions\n      system\n      1.8\n      1.8.0.51\n      10.0\n      10.0.2\n    * oracle64-1.8.0.51\n      oracle64-10.0.2\n    ```\n* Set the default JDK to 1.8: `jenv global oracle64-1.8.0.51`\n* Set the project specific JDK to 10: `cd dragoman; jenv global oracle64-10.0.2`\n\n### IDE\n\nIf using Intellij, upgrade to 2018.1+ and reconfigure the `dragoman` project to use Java 10:\n\n* `Module Settings` \u003e `Platform Settings` \u003e ``SDKs` \u003e Add a new SDK pointing at `/Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home/`\n* `Module Settings` \u003e `Project Settings` \u003e `Project SDK`: 10\n* `Module Settings` \u003e `Project Settings` \u003e `Project Language Level`: 10\n\nCompile the Application With Java 10\n----\n\nThis makes Java 10 features avaialble to the application but it requires some changes:\n\n* Tell Maven to build with Java 10 and to target Java 10 output\n* Upgrade some internal dependencies to Java 10 compatible versions\n\n### Required Changes to `dragoman`\n\n* Change `maven.compiler.source` to `1.10`\n* Change `maven.compiler.target` to `1.10`\n* Upgrade Maven Compiler Plugin:\n    ```\n    \u003cplugin\u003e\n        \u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\n        \u003cartifactId\u003emaven-compiler-plugin\u003c/artifactId\u003e\n        \u003cversion\u003e3.8.0\u003c/version\u003e\n        \u003cconfiguration\u003e\n            \u003crelease\u003e10\u003c/release\u003e\n        \u003c/configuration\u003e\n    \u003c/plugin\u003e\n    ```\n* Add a dependency on `org.ow2.asm:asm:6.1.1` to the `maven-surefire-plugin` declaration:\n    ```\n    \u003cdependency\u003e\n        \u003cgroupId\u003eorg.ow2.asm\u003c/groupId\u003e\n        \u003cartifactId\u003easm\u003c/artifactId\u003e\n        \u003cversion\u003e6.1.1\u003c/version\u003e\n    \u003c/dependency\u003e\n    ```\n* Upgrade Mockito for compatability with Java 10: change `mockito.version` to `2.21.0`\n* Upgrade Jacoco for compatability with Java 10: change `maven.jacoco.plugin.version` to `0.8.1`\n* Tell Travis CI to build with Java 10, in `.travis.yml`:\n    ```\n    jdk:\n      - oraclejdk10\n    ```\n\n### Optional Changes to `dragoman`\n\n* Upgrade `de.flapdoodle.embed.mongo` to `2.1.1`, see [this issue](https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo/issues/241)\n* Update `GroovyFactory` to replace the deprecated `clazz.newInstance()` with `clazz.getConstructor().newInstance()`\n\nModularize the Application\n----\n\nThis uses Java 10's module system.\n\nAdd a file named `module-info.java` to `src/main/java` with the following content:\n\n```\nmodule io.github.glytching {\n    requires antlr4;\n    requires bson;\n    requires guava;\n    requires vertx.core;\n    requires vertx.web;\n    requires vertx.dropwizard.metrics;\n    requires slf4j.api;\n    requires rxjava;\n    requires org.apache.commons.lang3;\n    requires javax.inject;\n    requires mongodb.driver.rx;\n    requires jackson.databind;\n    requires guice;\n    requires guice.multibindings;\n    requires jolokia.jvm;\n    requires de.flapdoodle.embed.mongo;\n    requires de.flapdoodle.embed.process;\n    requires mongodb.driver.core;\n    requires mongodb.driver.async;\n    requires netty.codec;\n    requires netty.handler;\n    requires metrics.core;\n    requires metrics.healthchecks;\n    requires okhttp;\n    requires commons.validator;\n    requires handlebars;\n    requires constretto.api;\n    requires constretto.core;\n    requires org.apache.commons.io;\n}\n```\n\nCompile the project and you'll encounter the 'split package' issue (two members of the same package coming from different modules):\n\n```\n[ERROR] the unnamed module reads package org.constretto from both constretto.api and constretto.core\n[ERROR] the unnamed module reads package org.constretto.model from both constretto.api and constretto.core\n[ERROR] module constretto.api reads package org.constretto from both constretto.api and constretto.core\n[ERROR] module constretto.api reads package org.constretto.model from both constretto.api and constretto.core\n[ERROR] module handlebars reads package org.constretto from both constretto.api and constretto.core\n[ERROR] module handlebars reads package org.constretto.model from both constretto.api and constretto.core\n```\n\nStop, because ...\n\n* The libraries used by this project which manifest the 'split package' issue are not in our control\n* This project isn't a strong candidate for modularisation. This might change if the webapp is separated from the library.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglytching%2Fdragoman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglytching%2Fdragoman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglytching%2Fdragoman/lists"}