Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
b96d203
separated api layer from fx implementation
makbn Aug 1, 2025
8b06a8c
added new runner to run the javafx submodule
makbn Aug 1, 2025
d1f9b4b
fixed the package mismatch
makbn Aug 1, 2025
1b19e84
The deprecated `JLJavaFXMapView` implementation was removed, and its …
makbn Aug 1, 2025
eafb63c
added transport layer for js call. added default return type to js sc…
makbn Aug 15, 2025
a250901
defined base LeafletLayer specification and made all leaflet layer im…
makbn Aug 15, 2025
26a000d
updated gitignore to exclude vaadin generated files
makbn Aug 20, 2025
2d2347d
updated models to have a unified structure for vaadin component
makbn Aug 20, 2025
c1157c2
refactored event and event handler to match with leaflet layers
makbn Aug 20, 2025
d4ddf24
refactored layer and added layer hierarchy and inheritance to be able…
makbn Aug 20, 2025
5eb25cb
AssertJ dependency was added and refactoring of JLMapCallbackHandler …
makbn Aug 20, 2025
8110cc5
adapted api changes to the jlmap-api v2
makbn Aug 20, 2025
f36d3d2
added first draft of Vaadin implementation. added Vaadin adapted laye…
makbn Aug 20, 2025
6de365a
added vaadin demo project as an example of using jlmap fluent api
makbn Aug 20, 2025
95634b8
added unit tests. updated maven pom files. updated dependencies. adde…
makbn Aug 20, 2025
c91fdcb
removed old files. cleaned up the structure.
makbn Aug 20, 2025
b94d13f
updated author name
makbn Aug 20, 2025
0eca83c
updated property names that clash with constants. removed unnecessary…
makbn Aug 20, 2025
2b605f2
parameterized web engine. removed unnecessary variable.
makbn Aug 20, 2025
5c90f8c
refactored and code cleanup.
makbn Aug 20, 2025
8d327a6
parameterized map controller and web engine fields. added new layer e…
makbn Aug 20, 2025
a2e2ffd
parameterized map controller and web engine fields. added new layer e…
makbn Aug 20, 2025
5eb3f48
updated readme file.
makbn Aug 20, 2025
51176aa
added migration guid
makbn Aug 20, 2025
c3be9f8
completed JLVaadinVectorLayer implementation
makbn Aug 20, 2025
ddd8ced
added new demo items to the vaadin demo project for vector layer
makbn Aug 20, 2025
fac31f4
updated demo homeview class to make it more readable
makbn Aug 21, 2025
063db96
added url and map provider parameters to MapType. separate MapType fr…
makbn Aug 21, 2025
3939eb9
updated JLMapProvider and renamed it.
makbn Aug 21, 2025
4c88bad
added map option selector to the HomeView
makbn Aug 22, 2025
99fb9ee
added geojson layer
makbn Aug 23, 2025
c326100
added icon and point classes
makbn Aug 25, 2025
f902cbd
added new constructor with message and throwable
makbn Aug 25, 2025
e1d6ee5
updated the transport layer to be able to return the result from an e…
makbn Aug 25, 2025
493a63d
implemented marker specific methods using transporter
makbn Aug 25, 2025
be674b7
added image overlay and add function
makbn Aug 28, 2025
0e5d0de
moved shared property to JLObject
makbn Aug 28, 2025
af1536a
implemented image builder
makbn Aug 30, 2025
89c0a7e
added getTransporter to JLVaadinLayer and used as default transport p…
makbn Aug 30, 2025
5e67894
added image example to HomeView
makbn Aug 30, 2025
69ea3a8
fixed the incompatibility with javafx version and api
makbn Aug 30, 2025
4897db9
improved documentation
makbn Aug 30, 2025
93ebc8f
added image overlay functionality to javafx
makbn Aug 31, 2025
a30f1f2
updated readme file with the available features for the available jl …
makbn Aug 31, 2025
81bab95
fixed the issue with findIndex method for images
makbn Aug 31, 2025
799ac17
updated ignore file to exclude DS_Store files
makbn Aug 31, 2025
0f0a781
update git ignore to exclude node modules
makbn Aug 31, 2025
cb29ade
added lock file to git ignore
makbn Aug 31, 2025
e5ee650
added generated front end files git ignore
makbn Aug 31, 2025
bc9ba09
removed DS_store files
makbn Aug 31, 2025
64c71b7
Merge remote-tracking branch 'origin/master' into dev/v2.0.0
makbn Aug 31, 2025
d5982e3
updated fx version to use the same jl object builder as vaadin module
makbn Sep 2, 2025
722f146
removed index.html file and generated the page using j2html library. …
makbn Sep 3, 2025
ac7d9da
Add test module and integration tests for JLMap components
makbn Sep 5, 2025
b6f8cb9
Enhance JLImageOverlayBuilder to set bounds using JLLatLng for improv…
makbn Sep 9, 2025
67df807
Refactor JLLatLng to include a builder constructor for improved objec…
makbn Sep 9, 2025
ca014e0
Refactor JLPopupBuilder to enhance content sanitization and improve t…
makbn Sep 9, 2025
cf378c4
Fix JLUiLayerTest to assert text equality without quotes for accurate…
makbn Sep 9, 2025
fafad6f
Fix JLVaadinGeoJsonLayer to correctly remove GeoJson layers by updati…
makbn Sep 9, 2025
42438ae
Add Jacoco code coverage plugin and implement tests for JLVaadin comp…
makbn Sep 9, 2025
093212c
Implement callback registration for various actions in JLGeoJsonLayer…
makbn Sep 9, 2025
336cddc
Enhance callback registration for user interactions in JLVaadin layers
makbn Sep 10, 2025
4827edb
Add CI/CD pipeline for tests and coverage reporting
makbn Sep 10, 2025
6df55dd
Update license to GNU Lesser General Public License (LGPL) Version 2.…
makbn Sep 10, 2025
b75f4ae
Refactor LICENSE file formatting for improved readability
makbn Sep 10, 2025
79ad9fa
Add Contributor License Agreement and contributing guidelines
makbn Sep 13, 2025
506c5c8
Refactor transport interfaces and enhance GeoJSON layer functionality…
makbn Sep 14, 2025
360a86a
Add buttons for flying to NYC and demoing styled GeoJSON features wit…
makbn Sep 14, 2025
4846562
Implement JLMap and JLObjectBase classes, refactor event handling, an…
makbn Sep 14, 2025
cd4e405
Refactor map event handling to include event parameters for improved …
makbn Sep 14, 2025
9c6e1a5
Update migration guide for v2.0.0: document new JLMap interface, enha…
makbn Sep 14, 2025
1408b72
Add Simple GeoJSON usage examples documentation with code snippets fo…
makbn Sep 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
225 changes: 225 additions & 0 deletions .github/workflows/ci-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
name: CI/CD - Tests and Coverage

on:
push:
branches: [ master, dev/*, develop ]
pull_request:
branches: [ master ]

permissions:
contents: read
pull-requests: write
checks: write
statuses: write

jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 30

strategy:
matrix:
java-version: [ 17, 21 ]
os: [ ubuntu-latest ]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up JDK ${{ matrix.java-version }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java-version }}
distribution: 'corretto'

- name: Cache Maven dependencies
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2

- name: Setup virtual display for JavaFX tests
run: |
sudo apt-get update
sudo apt-get install -y xvfb
export DISPLAY=:99
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &

- name: Run tests with coverage
run: |
export DISPLAY=:99
mvn clean test -Dmaven.test.failure.ignore=false -Dheadless=true
env:
MAVEN_OPTS: "-Xmx1024m"

- name: Generate JaCoCo coverage reports
run: |
mvn org.jacoco:jacoco-maven-plugin:0.8.8:report -pl jlmap-fx,jlmap-vaadin

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4
with:
files: |
./jlmap-fx/target/site/jacoco/jacoco.xml
./jlmap-vaadin/target/site/jacoco/jacoco.xml
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false
verbose: true
token: ${{ secrets.CODECOV_TOKEN }}
if: matrix.java-version == '17'

- name: Generate test summary
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: Test Results (Java ${{ matrix.java-version }})
path: '**/target/surefire-reports/TEST-*.xml'
reporter: java-junit
fail-on-error: false

- name: Comment coverage on PR
if: github.event_name == 'pull_request' && matrix.java-version == '17'
uses: madrapps/jacoco-report@v1.6.1
with:
paths: |
${{ github.workspace }}/jlmap-fx/target/site/jacoco/jacoco.xml
${{ github.workspace }}/jlmap-vaadin/target/site/jacoco/jacoco.xml
token: ${{ secrets.GITHUB_TOKEN }}
min-coverage-overall: 70
min-coverage-changed-files: 80
title: 'Code Coverage Report'
update-comment: true

- name: Publish test results
uses: EnricoMi/publish-unit-test-result-action@v2
if: always()
with:
files: '**/target/surefire-reports/TEST-*.xml'
check_name: 'Test Results (Java ${{ matrix.java-version }})'
comment_title: 'Test Results (Java ${{ matrix.java-version }})'
fail_on: 'nothing'

- name: Upload test artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-java-${{ matrix.java-version }}
path: |
**/target/surefire-reports/
**/target/site/jacoco/
retention-days: 30

sonarqube:
runs-on: ubuntu-latest
needs: test
if: github.event_name == 'pull_request' || github.ref_name == 'master'

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'corretto'

- name: Cache SonarQube packages
uses: actions/cache@v4
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar

- name: Cache Maven dependencies
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2

- name: Setup virtual display for JavaFX tests
run: |
sudo apt-get update
sudo apt-get install -y xvfb
export DISPLAY=:99
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &

- name: Build and analyze with SonarQube
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
DISPLAY: :99
run: |
mvn clean verify sonar:sonar \
-Dsonar.projectKey=makbn_java_leaflet \
-Dsonar.organization=makbn \
-Dsonar.host.url=https://sonarcloud.io \
-Dsonar.coverage.jacoco.xmlReportPaths=**/target/site/jacoco/jacoco.xml
if: env.SONAR_TOKEN != null

security-scan:
runs-on: ubuntu-latest
needs: test
permissions:
security-events: write
actions: read
contents: read

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'corretto'

- name: Cache Maven dependencies
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2

- name: Run dependency check
run: |
mvn org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=8

- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: target/dependency-check-report.sarif

build-status:
runs-on: ubuntu-latest
needs: [ test, sonarqube, security-scan ]
if: always()

steps:
- name: Check build status
run: |
if [[ "${{ needs.test.result }}" == "success" ]]; then
echo "✅ Tests passed"
else
echo "❌ Tests failed"
exit 1
fi

if [[ "${{ needs.sonarqube.result }}" == "success" || "${{ needs.sonarqube.result }}" == "skipped" ]]; then
echo "✅ Code quality check passed or skipped"
else
echo "⚠️ Code quality check failed"
fi

if [[ "${{ needs.security-scan.result }}" == "success" ]]; then
echo "🔒 Security scan passed"
else
echo "⚠️ Security scan failed"
fi
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,7 @@ application.properties
/src/main/java/META-INF/
/src/main/java/io/github/makbn/jlmap/META-INF/
/src/main/resources/final.geo.json
**/.DS_Store
jlmap-vaadin/node_modules/
jlmap-vaadin/src/frontend/generated/
jlmap-vaadin/package-lock.json
15 changes: 15 additions & 0 deletions .run/Vaadin Demo.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Vaadin Demo" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
<module name="jlmap-vaadin-demo" />
<option name="SPRING_BOOT_MAIN_CLASS" value="io.github.makbn.vaadin.demo.Application" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="io.github.makbn.vaadin.demo.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
</component>
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="jlmap [javafx:run]" type="MavenRunConfiguration" factoryName="Maven" nameIsGenerated="true">
<configuration default="false" name="jlmap-fx [javafx:run]" type="MavenRunConfiguration" factoryName="Maven">
<MavenSettings>
<option name="myGeneralSettings" />
<option name="myRunnerSettings" />
Expand All @@ -15,15 +15,15 @@
</list>
</option>
<option name="multimoduleDir" />
<option name="pomFileName" />
<option name="pomFileName" value="pom.xml" />
<option name="profilesMap">
<map />
</option>
<option name="projectsCmdOptionValues">
<list />
</option>
<option name="resolveToWorkspace" value="false" />
<option name="workingDirPath" value="$PROJECT_DIR$" />
<option name="workingDirPath" value="$PROJECT_DIR$/jlmap-fx" />
</MavenRunnerParameters>
</option>
</MavenSettings>
Expand Down
43 changes: 43 additions & 0 deletions CLA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Contributor License Agreement (CLA)

**JL (Java Leaflet) Map Project**

Thank you for your interest in contributing to **JL (Java Leaflet) Map** (“the Project”).
To clarify the intellectual property rights granted with contributions, you agree to the following terms by submitting a
contribution (including code, documentation, or other material) to the Project.

## 1. Copyright License

You grant the Project Maintainers a **perpetual, worldwide, non-exclusive, transferable, sublicensable, royalty-free
license** to use, reproduce, modify, publicly display, publicly perform, sublicense, and distribute your contributions
and derivative works.

## 2. Relicensing Rights

You expressly allow the Project Maintainers to **relicense your contributions under any license of their choosing** in
the future, including permissive, copyleft, dual, or commercial licenses.

## 3. Patent License

You grant the Project Maintainers and recipients of the Project a perpetual, worldwide, non-exclusive, royalty-free
patent license to make, use, sell, offer for sale, import, and otherwise transfer your contributions.

## 4. Representations and Warranties

By submitting a contribution, you represent that:

- The contribution is your original work, or you have the right to submit it.
- You are legally entitled to grant the above licenses.
- The contribution does not violate any third-party rights.

## 5. Definitions

- **“Contribution”** means any source code, object code, patch, documentation, or other material submitted to the
Project.
- **“Project Maintainers”** currently means the copyright holders of JL (Java Leaflet) Map and any successors they
designate.

## 6. Acceptance

By submitting a contribution to the Project (e.g., via pull request, patch, or other means), you **agree to the terms of
this Contributor License Agreement.**
44 changes: 44 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Contributing to This Project

First off — thanks for checking out this project.

While this is a small and focused library, and I'm not actively contributing, you're still welcome to open issues,
suggest improvements, or fork it for your own use.

## Guidelines

If you do want to contribute, please read the CLA first, and then here are a few quick guidelines to follow to keep
things clean and consistent:

### 1. Keep It Aligned with the Project Scope

This library is meant to stay minimal, maintainable, and aligned with its current goals. If you're adding something,
ask:

- Does this keep the project simple?
- Does it make it easier to integrate JL (Java Leaflet) Map into existing projects?
- Is it a core use case?

If you're not sure, open an issue first before writing code — happy to talk about it.

### 2. Code Style

Stick to standard Java conventions. If you're using an IDE like IntelliJ, the default formatter should be fine. We also
added spotless since v2.2.1. Some specific preferences:

- Keep every block of the code as small as possible, break it down if possible
- Avoid unnecessary abstractions.
- Avoid unnecessary documentation.
- Keep the code, variable/class/method/etc naming self explanatory.
- Don’t go overboard creating tons of classes and interfaces just to perfectly follow a specific design or
pattern—they're guidelines, not laws of nature.
- Prefer immutability where possible.
- Javadoc ,at least, public APIs.

### 3. Commit Messages

- Keep commit messages short and meaningful.
- Avoid using any special characters.
- Focus on delivering enough context than being grammatically correct.

Thank you.
Loading
Loading