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