I played with Sinewave actor and noticed exactly same behavior as described. When I tried to change annotation, changes are reflected in the annotation component. However, they are not reflected on the canvas. Which indicated that annotation actor has changed in Kepler 2.x vs when the Sinewave actor was created. So I went ahead and created a composite actor with the same components as Sinewave actor using Kepler 2.x to see if the new composite actor behaves differently and what are the main differences in moml files. Results are following, the new composite actor behaves exactly the way it should. I can change the annotation and changes are reflected on the canvas. I can save it as a kar file and open without problem. Here are the main difference in he moml structure
(New Composite Actor)
<entity name="CompositeActor" class="org.kepler.moml.CompositeClassEntity">
<property name="_createdBy" class="ptolemy.kernel.attributes.VersionAttribute" value="8.1.devel">
</property>
<property name="Annotation" class="ptolemy.vergil.kernel.attributes.TextAttribute">
<property name="_hideName" class="ptolemy.data.expr.SingletonParameter" value="true">
</property>
........
</property>
<port name="frequency" class="ptolemy.actor.parameters.ParameterPort">
<property name="input"/>
<property name="dataType" value="unknown" class="ptolemy.kernel.util.StringAttribute"/>
<property name="isMultiport" value="false" class="ptolemy.kernel.util.StringAttribute"/>
<property name="_location" class="ptolemy.kernel.util.Location" value="{75.0, 115.0}">
</property>
</port>
......
</entity>
(Existing Sinewave actor)
<entity name="Sinewave" class="org.kepler.moml.CompositeClassEntity">
<property name="_createdBy" class="ptolemy.kernel.attributes.VersionAttribute" value="7.1.devel">
</property>
<property name="annotation" class="ptolemy.kernel.util.Attribute">
<property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
</property>
.......
</property>
<property name="frequency" class="ptolemy.actor.parameters.PortParameter" value="440.0">
<property name="_hideName" class="ptolemy.kernel.util.SingletonAttribute">
</property>
<property name="_icon" class="ptolemy.vergil.icon.ValueIcon">
</property>
<property name="_iconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
<configure>
<svg>
<polyline points="-15,-15, 3,-5, -16,5" style="stroke:black"></polyline>
<polygon points="-22,-1, -22,4, -10,-5, -22,-14, -22,-9, -30,-9, -30, -1" style="fill:lightGray"></polygon>
</svg>
</configure>
</property>
<property name="_smallIconDescription" class="ptolemy.kernel.util.SingletonConfigurableAttribute">
<configure>
<svg>
<text x="20" style="font-size:14; font-family:SansSerif; fill:black" y="20">-P</text>
</svg>
</configure>
</property>
<property name="_editorFactory" class="ptolemy.vergil.toolbox.VisibleParameterEditorFactory">
</property>
<property name="_location" class="ptolemy.kernel.util.Location" value="[100.0, 120.0]">
</property>
</property>
..
</entity>
The existing Sinewave actor is using ptolemy kernel 7.1 and new Composite actor uses kernel 8.1. In addition, there are changes in the 'annotation' object, portparameters etc.
So what are our options:
1) Should we replace the existing actor with the new one with identical functionality? Will it cause conflict in older workflows where this actor is used?
2) Should we just replace the moml components in the existing actor with the new one?
3) Are should we employ some other approach?