Skip to content
Merged
Changes from all commits
Commits
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
36 changes: 36 additions & 0 deletions flow-diff/src/main/java/com/snowflake/openflow/FlowDiff.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
Expand Down Expand Up @@ -567,6 +568,11 @@ public static Set<FlowDifference> getDiff(final String pathA, final String pathB
}
final FlowSnapshotContainer snapshotB = getFlowContainer(pathB, factory);

if (snapshotA != null) {
sanitizeProcessGroup(snapshotA.getFlowSnapshot().getFlowContents());
}
sanitizeProcessGroup(snapshotB.getFlowSnapshot().getFlowContents());

processGroups = new HashMap<>();
VersionedProcessGroup rootPG = snapshotB.getFlowSnapshot().getFlowContents();
processGroups.put(rootPG.getIdentifier(), rootPG);
Expand Down Expand Up @@ -646,6 +652,36 @@ private static void registerProcessGroups(VersionedProcessGroup rootPG) {
}
}

private static void sanitizeProcessGroup(final VersionedProcessGroup group) {
if (group == null) {
return;
}
if (group.getProcessors() != null) {
for (final VersionedProcessor processor : group.getProcessors()) {
sanitizeConfigurableExtension(processor);
}
}
if (group.getControllerServices() != null) {
for (final VersionedControllerService service : group.getControllerServices()) {
sanitizeConfigurableExtension(service);
}
}
if (group.getProcessGroups() != null) {
for (final VersionedProcessGroup child : group.getProcessGroups()) {
sanitizeProcessGroup(child);
}
}
}

private static void sanitizeConfigurableExtension(final VersionedConfigurableExtension extension) {
if (extension.getProperties() == null) {
extension.setProperties(new LinkedHashMap<>());
}
if (extension.getPropertyDescriptors() == null) {
extension.setPropertyDescriptors(new LinkedHashMap<>());
}
}

static FlowSnapshotContainer getFlowContainer(final String path, final JsonFactory factory) throws IOException {
final File snapshotFile = new File(path);
try (final JsonParser parser = factory.createParser(snapshotFile)) {
Expand Down