From b9fb24b7693b741a154248019bfeeda1a0c7df67 Mon Sep 17 00:00:00 2001 From: Javier Godoy <11554739+javier-godoy@users.noreply.github.com> Date: Wed, 12 Aug 2026 15:12:02 -0300 Subject: [PATCH 1/4] ci: add dance profile for cleanup --- pom.xml | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6831ccd..15fe075 100644 --- a/pom.xml +++ b/pom.xml @@ -585,6 +585,65 @@ - + + + dance + + + + org.apache.maven.plugins + maven-clean-plugin + 3.3.2 + + + + ${project.basedir} + + package.json + package-lock.json + tsconfig.json + tsconfig.json.* + types.d.ts + types.d.ts.* + vite.config.ts + vite.generated.ts + webpack.config.js + webpack.generated.js + + + + ${project.basedir}/frontend + + index.html + + + + ${project.basedir}/frontend/generated + + + ${project.basedir}/src/main/frontend + + index.html + + + + ${project.basedir}/src/main/frontend/generated + + + ${project.basedir}/node_modules + + + ${project.basedir}/src/main/bundles + + + ${project.basedir}/src/main/dev-bundle + + + + + + + + From 8474104232f2e4125f9f1b0034b42aaa92ba7ad6 Mon Sep 17 00:00:00 2001 From: Javier Godoy <11554739+javier-godoy@users.noreply.github.com> Date: Wed, 12 Aug 2026 16:38:32 -0300 Subject: [PATCH 2/4] refactor: remove jackson dependency Close #100 --- pom.xml | 5 --- .../vaadin/addons/orgchart/OrgChart.java | 37 +++++++++++------- .../vaadin/addons/orgchart/OrgChartItem.java | 39 +++++++++++++++++-- .../addons/orgchart/client/OrgChartState.java | 2 + .../META-INF/frontend/fc-orgchart.js | 3 +- 5 files changed, 61 insertions(+), 25 deletions(-) diff --git a/pom.xml b/pom.xml index 15fe075..53298a9 100644 --- a/pom.xml +++ b/pom.xml @@ -167,11 +167,6 @@ font-awesome 4.7.0 test - - - com.fasterxml.jackson.core - jackson-databind - 2.13.4.2 com.flowingcode.vaadin.addons.demo diff --git a/src/main/java/com/flowingcode/vaadin/addons/orgchart/OrgChart.java b/src/main/java/com/flowingcode/vaadin/addons/orgchart/OrgChart.java index b91e1ca..7b19235 100644 --- a/src/main/java/com/flowingcode/vaadin/addons/orgchart/OrgChart.java +++ b/src/main/java/com/flowingcode/vaadin/addons/orgchart/OrgChart.java @@ -20,8 +20,6 @@ package com.flowingcode.vaadin.addons.orgchart; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import com.flowingcode.vaadin.addons.orgchart.client.OrgChartState; import com.flowingcode.vaadin.addons.orgchart.event.ChildrenAddedEvent; import com.flowingcode.vaadin.addons.orgchart.event.NodeUpdatedEvent; @@ -29,6 +27,7 @@ import com.flowingcode.vaadin.addons.orgchart.event.ParentAddedEvent; import com.flowingcode.vaadin.addons.orgchart.event.SiblingsAddedEvent; import com.flowingcode.vaadin.jsonmigration.JsonMigration; +import com.flowingcode.vaadin.jsonmigration.JsonSerializer; import com.vaadin.flow.component.AttachEvent; import com.vaadin.flow.component.ClientCallable; import com.vaadin.flow.component.ComponentEvent; @@ -39,7 +38,9 @@ import com.vaadin.flow.component.dependency.NpmPackage; import com.vaadin.flow.component.html.Div; import com.vaadin.flow.shared.Registration; +import elemental.json.Json; import elemental.json.JsonArray; +import elemental.json.JsonValue; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -97,7 +98,7 @@ protected void onAttach(AttachEvent attachEvent) { public void initializeChart() {} public void setValue(OrgChartItem orgChartItem) { - String value = convertToJsonObj(orgChartItem); + String value = convertToJsonObj(orgChartItem).toJson(); getState().value = value; } @@ -105,15 +106,20 @@ protected OrgChartState getState() { return this.state; } - private String convertToJsonObj(Object orgChartItem) { - String result = null; - ObjectMapper mapper = new ObjectMapper(); - try { - result = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(orgChartItem); - } catch (JsonProcessingException e) { - e.printStackTrace(); + private JsonValue convertToJsonObj(OrgChartState state) { + return JsonSerializer.toJson(state); + } + + private JsonValue convertToJsonObj(OrgChartItem orgChartItem) { + return orgChartItem.toJson(); + } + + private JsonValue convertToJsonObj(List items) { + JsonArray array = Json.createArray(); + for (OrgChartItem item : items) { + array.set(array.length(), convertToJsonObj(item)); } - return result; + return array; } public void setChartNodeTitle(String chartNodeTitle) { @@ -425,10 +431,11 @@ public void addSiblings(Integer nodeId, List siblings) { } // Update the visual representation by calling the client-side method addSiblings - String siblingsJson = convertToJsonObj(siblings); + JsonValue siblingsJson = convertToJsonObj(siblings); this.getElement().executeJs("this.addSiblings($0, $1)", nodeId, siblingsJson); } + /** * Handles sibling addition events from the client side. Converts the received JsonArray of * sibling IDs to a List and fires a {@link SiblingsAddedEvent}. @@ -502,7 +509,7 @@ public void addChildren(Integer nodeId, List children) { appendItemsToParent(targetNode, children); // Update the visual representation - String itemsJson = convertToJsonObj(children); + JsonValue itemsJson = convertToJsonObj(children); if (currentChildrenEmpty) { this.getElement().executeJs("this.addChildren($0, $1)", nodeId, itemsJson); } else { @@ -636,7 +643,7 @@ public void addParent(OrgChartItem newParentItem) { this.orgChartItem = newParentItem; // Update the visual representation by calling the client-side method addParent - String parentJson = convertToJsonObj(newParentItem); + JsonValue parentJson = convertToJsonObj(newParentItem); this.getElement().executeJs("this.addParent($0)", parentJson); } @@ -708,7 +715,7 @@ public void updateNode(Integer nodeId, OrgChartItem newDataItem) { } // Call the client-side JS function to update the visual representation - String newDataJson = convertToJsonObj(newDataItem); + JsonValue newDataJson = convertToJsonObj(newDataItem); this.getElement().executeJs("this.updateNode($0, $1)", nodeId, newDataJson); } else { throw new IllegalArgumentException("Node not found: " + nodeId); diff --git a/src/main/java/com/flowingcode/vaadin/addons/orgchart/OrgChartItem.java b/src/main/java/com/flowingcode/vaadin/addons/orgchart/OrgChartItem.java index 17221de..7b97247 100644 --- a/src/main/java/com/flowingcode/vaadin/addons/orgchart/OrgChartItem.java +++ b/src/main/java/com/flowingcode/vaadin/addons/orgchart/OrgChartItem.java @@ -20,6 +20,10 @@ package com.flowingcode.vaadin.addons.orgchart; +import elemental.json.Json; +import elemental.json.JsonArray; +import elemental.json.JsonObject; +import elemental.json.JsonValue; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; @@ -28,8 +32,6 @@ import java.util.Map; import java.util.Optional; -import com.fasterxml.jackson.annotation.JsonProperty; - /** @author pbartolo */ @SuppressWarnings("serial") public class OrgChartItem implements Serializable { @@ -152,7 +154,6 @@ public boolean isHybrid() { * @param hybrid {@code true} to mark this node as hybrid; {@code false} * otherwise */ - @JsonProperty("isHybrid") public void setHybrid(boolean hybrid) { this.hybrid = hybrid; } @@ -192,4 +193,36 @@ private void printChildren(OrgChartItem item, StringBuilder sb, int count) { printChildren(item.getChildren().get(i), sb, count); } } + + JsonValue toJson() { + JsonObject json = Json.createObject(); + json.put("name", toJson(name)); + json.put("title", toJson(title)); + json.put("className", toJson(className)); + json.put("id", id != null ? Json.create(id) : Json.createNull()); + json.put("isHybrid", Json.create(hybrid)); + + JsonObject dataJson = Json.createObject(); + if (data != null) { + for (Map.Entry entry : data.entrySet()) { + dataJson.put(entry.getKey(), toJson(entry.getValue())); + } + } + json.put("data", dataJson); + + JsonArray childrenJson = Json.createArray(); + if (children != null) { + for (OrgChartItem child : children) { + childrenJson.set(childrenJson.length(), child.toJson()); + } + } + json.put("children", childrenJson); + + return json; + } + + private static JsonValue toJson(String value) { + return value != null ? Json.create(value) : Json.createNull(); + } + } diff --git a/src/main/java/com/flowingcode/vaadin/addons/orgchart/client/OrgChartState.java b/src/main/java/com/flowingcode/vaadin/addons/orgchart/client/OrgChartState.java index dc2746d..c46eae6 100644 --- a/src/main/java/com/flowingcode/vaadin/addons/orgchart/client/OrgChartState.java +++ b/src/main/java/com/flowingcode/vaadin/addons/orgchart/client/OrgChartState.java @@ -23,9 +23,11 @@ import com.flowingcode.vaadin.addons.orgchart.client.constants.ChartConstants; import com.flowingcode.vaadin.addons.orgchart.client.enums.ChartDirectionEnum; import java.io.Serializable; +import lombok.Getter; /** @author pbartolo */ @SuppressWarnings("serial") +@Getter public class OrgChartState implements Serializable { public String value; diff --git a/src/main/resources/META-INF/frontend/fc-orgchart.js b/src/main/resources/META-INF/frontend/fc-orgchart.js index af82aae..ab687fd 100644 --- a/src/main/resources/META-INF/frontend/fc-orgchart.js +++ b/src/main/resources/META-INF/frontend/fc-orgchart.js @@ -33,9 +33,8 @@ import JSONDigger from "./json-digger.js"; */ class FCOrgChart extends PolymerElement { - initializeOrgChart(statestring,data,identifier) { + initializeOrgChart(state,data,identifier) { var $ = window.jQuery || jQuery; - var state = $.parseJSON(statestring); let exportChart = state.chartExportButton; let exportExt = state.chartExportFileExtension; From ea0bb259eb6062f0da58074f774c6f4bbb5fcd0a Mon Sep 17 00:00:00 2001 From: Javier Godoy <11554739+javier-godoy@users.noreply.github.com> Date: Wed, 12 Aug 2026 16:39:06 -0300 Subject: [PATCH 3/4] build: set version to 5.4.0-SNAPSHOT --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 53298a9..d8d6a91 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 com.flowingcode.vaadin.addons orgchart-addon - 5.3.2-SNAPSHOT + 5.4.0-SNAPSHOT OrgChart Add-on From 3b523c2b6183de88623eea567fdd25b5f298972f Mon Sep 17 00:00:00 2001 From: Javier Godoy <11554739+javier-godoy@users.noreply.github.com> Date: Wed, 12 Aug 2026 16:42:13 -0300 Subject: [PATCH 4/4] chore: update .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index bcd56c8..b5da8d0 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,6 @@ /frontend/generated /frontend/index.html /.claude/settings.local.json +/src/main/bundles +/src/main/frontend/generated +/src/main/frontend/index.html \ No newline at end of file