[Bug-12365] Defer Updates on Property Key Name Edit

When creating new property keys with similar names to previously created keys (ex. creating ‘key12’ with existing ‘key1’), as soon as ‘key1’ is typed in (before typing ‘2’), they are flagged as duplicate keys. If the new key is a different type than the original, the original is updated to the new type (ex. original is type ‘object’ and new is type ‘value’, original is updated or overwritten to type ‘value’).

Is it possible to defer updates on key name edits until enter is pressed or focus is lost?

Build b2019011102

Before
After

Whew! And even after tab or enter, a new duplicate should not wipe out the previous one – the new one should be rejected.

I just replicated this locally and it’s definitely an annoying bug. I went ahead and opened a ticket for it.

Thanks!
Jonathan C

Not sure if this is the same bug or related.
I may have been able to save and exit from a view with Duplicate Key Parameters available.
However, I could not access the view again (or the .json) to troubleshoot or fix.
------------------------------Error---------------------------------------
Unable to deserialize resource DowntimeEvent :

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Duplicate key params. (attempted merging values com.inductiveautomation.perspective.common.config.PropertyConfig@7cf9b6f6 and com.inductiveautomation.perspective.common.config.PropertyConfig@24ee73da)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:224)
at com.google.gson.Gson.fromJson(Gson.java:888)
at com.google.gson.Gson.fromJson(Gson.java:826)
at com.inductiveautomation.perspective.designer.workspace.ViewResourceEditor.deserialize(ViewResourceEditor.java:179)
at com.inductiveautomation.perspective.designer.workspace.ViewResourceEditor.deserialize(ViewResourceEditor.java:54)
at com.inductiveautomation.ignition.designer.tabbedworkspace.ResourceEditor.loadResource(ResourceEditor.java:51)
at com.inductiveautomation.ignition.designer.tabbedworkspace.ResourceEditor.(ResourceEditor.java:34)
at com.inductiveautomation.perspective.designer.workspace.ViewResourceEditor.(ViewResourceEditor.java:129)
at com.inductiveautomation.perspective.designer.workspace.ViewWorkspace.newResourceEditor(ViewWorkspace.java:282)
at com.inductiveautomation.perspective.designer.workspace.ViewWorkspace.newResourceEditor(ViewWorkspace.java:86)
at com.inductiveautomation.ignition.designer.tabbedworkspace.TabbedResourceWorkspace.open(TabbedResourceWorkspace.java:182)
at com.inductiveautomation.ignition.designer.tabbedworkspace.ResourceNode.onDoubleClick(ResourceNode.java:140)
at com.inductiveautomation.ignition.designer.navtree.NavTreePanel$MouseListener$1.run(NavTreePanel.java:678)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.IllegalStateException: Duplicate key params. (attempted merging values com.inductiveautomation.perspective.common.config.PropertyConfig@7cf9b6f6 and com.inductiveautomation.perspective.common.config.PropertyConfig@24ee73da)
at java.base/java.util.stream.Collectors.duplicateKeyException(Unknown Source)
at java.base/java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Unknown Source)
at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(Unknown Source)
at java.base/java.util.Iterator.forEachRemaining(Unknown Source)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.base/java.util.stream.ReferencePipeline.collect(Unknown Source)
at com.inductiveautomation.perspective.common.config.PropertyConfigCollection$GsonAdapter.deserialize(PropertyConfigCollection.java:71)
at com.inductiveautomation.perspective.common.config.PropertyConfigCollection$GsonAdapter.deserialize(PropertyConfigCollection.java:63)
at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220)
… 25 more

Ignition v8.0.0-beta0 (b2019011802)
Java: Azul Systems, Inc. 11.0.1

This issue was fixed in the build that was uploaded today (2/4). Please let us know if you continue to see this behavior after upgrading.

2 posts were split to a new topic: Duplicate Property Key Corrupts Original Property Value