This bug is proving impossible to trace. Here's the latest I know:
This seems to only happen with port parameter after a distributed workflow has been run. The port parameter changes from the normal dot and arrow to a blank box. I've traced through the XMLIcon and ComponentEntityConfig code. The only thing I can tell is that when the icon is succesfully placed, ComponentEntityConfig._addIconAttributeToNamedObj() gets called 6 times. When it writes the wrong icon, that method gets called 4 times.
Looking at the moml produced, the _icon attribute changes without reason in the moml. when it works correctly, the icon is this: <property name="_icon" class="ptolemy.vergil.icon.ValueIcon"></property> When it doesn't work, the icon is this: <property name="_icon" class="ptolemy.kernel.util.Attribute"></property>
This makes no sense as, since batik is enabled, it should be ignoring this property anyway. The only way I have been able to fix this bug is to set svgIconAttrib.setPersistent(true) in ComponentEntityConfig. This forces the xml to be written to the moml that is dropped on the canvas. Matthew purposefully set this to false, so I'm hesitant to check it in as true as it might cause other problems.
The weirdest thing is that I cannot find any other workflows that make this happen besides the distributed ones. The way I recreate this is:
1) open kepler
2) drag a port param to the canvas. it should work.
3) open any of the distributed workflows and execute it
4) drag a port param to the canvas. it will render as a box.
Currently have no idea as to what is doing this.