[kepler-dev] problem when adding dynamically created actors with latest cvs copies of PTII and KEPLER version ....

jagan Jagan.Kommineni at infotech.monash.edu.au
Tue Dec 13 14:58:19 PST 2005


Hi Ilkay,

I hope you have reached safely back to US.

As we discussed I tried to use latest copies of PTII and KEPLER from cvs 
repository.


As I have shown you I create an application specific actor dynamically 
with a number of specified input and output ports at runtime.

 I am finding the following problems when I try to create new actors 
dynamically.

Procedure for creating new actors,

1. After downloading latest copies of  PTII and KEPLER  run the commands 
in order
2. ant ptolemy,  ant buildkarlib,  ant run
3. Now I see all the actors and directors in the list
4. Next, I drag PN Director and  JGridletCreater actor from 
"Acotrs/Griddles/Gridlets"  repository on to the canvas
5. When I run click button, I can see an actor named "localActorName"  
in the folder "Acotrs/Griddles/Gridlets", this actor is a command line 
actor with a specified number of input and output ports in this case 
default one additional input port and an output port.
6. When I drag this actor "localActorName" on to the canvas and run it 
prodces stderr and stdout which emits through the error and output ports 
( note remove previous dragged JGridletCreater and put this actor on to 
the screen). Sofar it is good.
7. When I exit from Kepler and rerun Kepler with "ant run" command, I 
can see a number of Directors and Actors missing from the screen. It 
seems to me that annotations are causing some problem with the latest 
versions of the Kepler while adding actors dynamically.
8. I have tested and was working perfectly fine before using new 
packaging system (karlib).
=============================================================
My fire method of "JGridletCreater"  is as follows
-------------------------------------------------------------------------------------------
  public void fire() throws IllegalActionException {
    super.fire();
    boolean http_access = false;
    HttpURLConnection urlconn = null;
    try  {                       
      GriddlesExec wss = null;         
      KeplerLocalLSIDService service = KeplerLocalLSIDService.instance();
      AnnotationEngine engine = 
AnnotationEngine.instance();                     
      _actorNameStr = actorName.getExpression();
                   
      wss = new GriddlesExec(new EntityLibrary(), 
_actorNameStr);            
     
      String inPortsStr = inPortsList.getExpression();
      if(inPortsStr.length() > 1) {
        String inPortsArray[] = inPortsStr.split(":");
        for(int j=0;j<inPortsArray.length;j++) {
          TypedIOPort inp = (TypedIOPort) wss.newPort(inPortsArray[j]);
      inp.setTypeEquals(BaseType.STRING);
          //Change the line above with:
      // inp.setTypeEquals(convertTypeToPTIIType(typestr));
          //inp.setTypeEquals(convertTypeToPTIIType(BaseType.STRING));
      inp.setInput(true);
          StringParameter inPortParam = 
(StringParameter)wss.newStringParameter(inPortsArray[j]);
          inPortParam.setExpression(inPortsArray[j]);
          }
        }
      String outPortsStr = outPortsList.getExpression(); 
      if(outPortsStr.length() > 1) {
        String outPortsArray[] = outPortsStr.split(":");
        for(int j=0;j<outPortsArray.length;j++)
          {
          TypedIOPort outp = (TypedIOPort) wss.newPort(outPortsArray[j]);
      outp.setTypeEquals(BaseType.STRING);             
      //Change the line above with:
      //outp.setTypeEquals(convertTypeToPTIIType(BaseType.STRING));
      outp.setOutput(true);
          StringParameter outPortParam = 
(StringParameter)wss.newStringParameter(outPortsArray[j]);
          outPortParam.setExpression(outPortsArray[j]);
          }
        }                
      String strParametersArray[] 
="modelReference:executionHost:webServicePort".split(":");
      for(int j=0;j<strParametersArray.length;j++) {
        StringParameter addParam = 
(StringParameter)wss.newStringParameter(strParametersArray[j]);
        addParam.setExpression(strParametersArray[j]);
        }
      /*
      for(int j=0;j<addParametersArray.length;j++)
        {
         StringParameter addParam = 
(StringParameter)wss.newStringParameter(addParametersArray[j]);
         addParam.setExpression(addParametersArray[j]);
         }
      */  
     
      String 
keyLSID="urn:lsid:localhost:"+_actorNameStr+":LOCALID0";       
      Iterator lsidIter = service.getLSIDFor(wss);
      boolean isUpdated=false;
      while (lsidIter.hasNext()) {
    String nextLSID = (String) lsidIter.next();
        if(keyLSID.equals(nextLSID)) {
      service.updateLSID(nextLSID, wss);
      engine.addActorAnnotation(nextLSID, "PreConfiguredGridletActor");
      System.out.println("UPDATE: " + nextLSID);
          isUpdated=true;
          break;
          }
    }
      if(!(isUpdated)) {
        String newLSID = 
service.createLocallyUniqueLSID(_actorNameStr);          
        service.assignLSID(newLSID, wss);
    engine.addActorAnnotation(newLSID, "PreConfiguredGridletActor");
    System.out.println("NEW: " + newLSID);       
        }
      service.commitChanges();
      }
    catch (Exception e) {
      System.out.println(e);
      }
    } // end of fire
----------------------------------------------------------------------------------------------
Do you have any idea what is happening? Whether anyone has any solution 
to fix this problem.

with regards,

Jagan Kommineni



More information about the Kepler-dev mailing list