<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi Kianwee,<br>
    I found a message that I sent that sums up the issue, see below.<br>
    So yes, this is a bug, but fixing it would break backward
    compatibility with ptolemy.util.FileUtilities.nameToFile().<br>
    <br>
    I've attached your classpath.xml as well.<br>
    <br>
    _Christopher<br>
    <blockquote type="cite">
      <meta http-equiv="content-type" content="text/html;
        charset=ISO-8859-1">
      <pre>I took a further look at FileParameter and why we sometimes
see xxxxxCLASSPATHxxxx


If I have a FileParameter that starts with $CLASSPATH,
then both stringValue() and asFile() will return a String
or a File that has xxxxxxCLASSPATHxxxxx in it:

   bash-3.2$ $PTII/bin/ptjacl
   % set myEntity [java::new {ptolemy.kernel.Entity String} myEntity]
   java0x1
   % set myFileParameter [java::new ptolemy.data.expr.FileParameter $myEntity myFileParameter]
   java0x2
   % $myFileParameter setExpression {$CLASSPATH/makefile}
   % $myFileParameter stringValue
   xxxxxxCLASSPATHxxxxxx/makefile
   % set f [$myFileParameter asFile]
   java0x3
   % $f toString
   xxxxxxCLASSPATHxxxxxx/makefile

However, getting the FileParameter as a URL works:
   % set url [$myFileParameter asURL]
   java0x4
   % $url toString
   <a class="moz-txt-link-freetext" href="file:/Users/cxh/ptII/makefile">file:/Users/cxh/ptII/makefile</a>


This occurs for the following reasons:

* Constant.java declares $CLASSPATH as a constant with the value
   xxxxxxCLASSPATHxxxxxx, which we later search for in FileUtilities.

* FileParameter.asFile() calls FileUtilities.nameToFile()

* FileParameter.asURL() calls FileUtilities.nameToURL()

* The difference between FileUtilities.nameToFile() and nameToURL()
   is documented in nameToFile as:

      *  <p>This method is similar to
      *  {@link #nameToURL(String, URI, ClassLoader)}
      *  except that in this method, the file or URL must be readable.
      *  Usually, this method is use for write a file and
      *  {@link #nameToURL(String, URI, ClassLoader)} is used for reading.

   Also, nameToFile() does not handle CLASSPATH, but nameToURL() does.

One possible solution would be to make nameToFile() look in the CLASSPATH.
However, in nameToFile(), the name need not necessarily exist.  This
is a documented feature of nameToFile(), and one I don't think we should
change.  The problem is that if we call nameToFile() with something
that starts with $CLASSPATH that does not exist in the classpath, then
it is a mistake to call new File() on a String that starts with
$CLASSPATH because the path of the File will have $CLASSPATH in it,
which is not likely to work.  Instead, I decided to replace $CLASSPATH
with $PTII, which is more likely to exist (but will have problems
with Jar URLs).

Anyway, I modified nameToFile() to handle $CLASSPATH.  In general,
I think it is a bug if the user ever sees xxxxxxCLASSPATHxxxxxxx.

This also neatly solves the problem that Michael was having with
bcvtp and not finding the executable.
</pre>
    </blockquote>
    <br>
    <br>
    On 10/24/11 10:36 PM, kianwee chen wrote:
    <blockquote
cite="mid:CAHwgn_yNec3SkkEtN7Z_FFwN2e_sv264+GhkxyWAnpfF2cdhgA@mail.gmail.com"
      type="cite">I did a file which show xxxxxxCLASSPATHxxxxxxx as a
      text display. It is attached with the email. <br>
      <br>
      ckw<br>
      <br>
      <div class="gmail_quote">On Tue, Oct 25, 2011 at 11:46 AM,
        Christopher Brooks <span dir="ltr"><<a
            moz-do-not-send="true" href="mailto:cxh@eecs.berkeley.edu">cxh@eecs.berkeley.edu</a>></span>
        wrote:<br>
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex;">
          <div bgcolor="#FFFFFF" text="#000000"> Hi Kianwee,<br>
            Usually the classpath is set when the Java process is
            started up.<br>
            Consult the web for more information about the Java
            classpath.  Basically, the classpath is a set of
            directories, jar files and zip files that Java searches to
            find Java class files and resources.  I've found that
            referring to resources using $CLASSPATH is necessary when
            models are delivered as Java Web Start applications or as
            applets.  The problem is somewhat complex, but has to do
            with jar urls and caching.<br>
            <br>
            The xxxxxxCLASSPATHxxxxxxx is a hack and should not appear. 
            If you send me a model that shows xxxxxxxCLASSPATHxxxxx,
            I'll take a look.<br>
            <br>
            Kepler uses kar files that contain Ptolemy models that are
            xml files.  I'm not that familiar with kar files, but I
            believe you could use the jar command to unjar a kar file
            and then use a file editor to edit the .xml file.<br>
            You can also export a .xml file from Kepler and then edit
            that using a file editor and then open the .xml file from
            within Kepler.<br>
            <font color="#888888"> <br>
              _Christopher</font>
            <div>
              <div class="h5"><br>
                <br>
                On 10/24/11 8:22 PM, kianwee chen wrote:
                <blockquote type="cite"><span
                    style="background-color:rgb(255, 204, 0)"><span
                      style="background-color:rgb(255, 255, 255)">Thanks
                      for the quick reply</span><br>
                    I often end up using $CLASSPATH, which looks in</span><span
                    style="background-color:rgb(255, 204, 0)"> the
                    classpath for the resource.</span><br>
                  <br>
                  I type in the $CLASSPATH and this is what is return "
                  xxxxxxCLASSPATHxxxxxx " is there a way to set the
                  classpath ?<br>
                  <br>
                  <span style="background-color:rgb(255, 255, 0)">For a
                    CompositeActor, you would probably need to edit the
                    MoML by hand and add a Parameter:</span><br>
                  <br>
                  How do you edit the MoML of a composite actor by hand
                  ? I right click and try all the options but did not
                  get any options that allow me to edit the MoML <br>
                  <br>
                  thanks <br>
                  ckw<br>
                  <br>
                  I typed in the $CLASSPATH and I only get this <br>
                  <div class="gmail_quote">On Tue, Oct 25, 2011 at 12:46
                    AM, Christopher Brooks <span dir="ltr"><<a
                        moz-do-not-send="true"
                        href="mailto:cxh@eecs.berkeley.edu"
                        target="_blank">cxh@eecs.berkeley.edu</a>></span>
                    wrote:<br>
                    <blockquote class="gmail_quote" style="margin:0 0 0
                      .8ex;border-left:1px #ccc solid;padding-left:1ex">
                      <div bgcolor="#FFFFFF" text="#000000"> Hi Kianwee,<br>
                        My comments are interspersed with your text
                        below.
                        <div><br>
                          <br>
                          On 10/24/11 8:39 AM, Edward A. Lee wrote:
                          <blockquote type="cite"> <br>
                            The documentation for FileParameter says: <br>
                            <br>
                            "If this attribute contains a parameter
                            named allowFiles with value false, then when
                            a file browser is used to select a file,
                            that file browser will be set to not show
                            files (only directories will be shown). If
                            this attribute contains a parameter named
                            allowDirectories with value true, then the
                            file browser will permit the user to select
                            directories (the default behavior is that
                            when a directory is selected, that directory
                            is opened and its contained files and
                            directories are listed)." <br>
                            <br>
                            (I'm not sure about Kepler, but in Ptolemy,
                            just drag in a FileParameter <br>
                            from the Utilities menu, right click on it,
                            and select Documentation.) <br>
                            <br>
                            I'm not sure what you mean by "list
                            parameter." Can you cite a specific <br>
                            example? <br>
                            <br>
                            Edward <br>
                            <br>
                            <br>
                            On 10/24/11 3:22 AM, kianwee chen wrote: <br>
                            <blockquote type="cite">Hi everyone, I am
                              trying to create a composite actor and
                              trying to setup <br>
                              the parameters for the composite actor.
                              Thus I have some question on <br>
                              adding parameters in composite actors. <br>
                              <br>
                              1.) Directory parameter: <br>
                              <br>
                              -I would like to let the users specify a
                              directory on the composite <br>
                              actor parameters interface, I know there
                              is a file parameter but I need <br>
                              a directory parameter. How can I customise
                              a directory parameter ? <br>
                            </blockquote>
                          </blockquote>
                          <br>
                        </div>
                        See Edward's explanation above.
                        <div><br>
                          <blockquote type="cite">
                            <blockquote type="cite"> <br>
                              -I have a problem with relative path too,
                              when I setup a file parameter <br>
                              it returns the string of the path relative
                              to my current kepler file <br>
                              that is open. Is there a way to get the
                              base file path ? Something like <br>
                              $CWD, but instead the file path of my
                              currently open file ? <br>
                            </blockquote>
                          </blockquote>
                          <br>
                        </div>
                        The FileParameter documentation says:<br>
                        <br>
                        <p>If the model containing
                        this                                                                                                                              


                        <br>
                         attribute has been saved to a MoML file, then
                        the file name can
                        be                                                                                           


                        <br>
                         given relative to the directory containing that
                        MoML
                        file.                                                                                                   


                        <br>
                         If the model has not been saved to a
                        file,                                                                                                                   


                        <br>
                         then the classpath is used for identifying
                        relative file
                        names.</p>                                                                                          


                        <br>
                                                                                                                                                                                      


                        <br>
                         <p>Files can be given relative to a
                        <i>base</i>, where the
                        baseis                                                                                           


                        <br>
                         the URI of the first container above this one
                        that has a
                        URIAttribute.                                                                                       


                        <br>
                         Normally, this URI specifies the file or URL
                        containing the
                        model                                                                                            


                        <br>
                         definition. Thus, files that are referred to
                        here can be kept in
                        the                                                                                         


                        <br>
                         same directory as the model, or in a related
                        directory, and
                        can                                                                                              


                        <br>
                         moved together with the
                        model.</p>                                                                                                                           


                        <br>
                                                                                                  


                        <br>
                        So, if you type in a relative path, then the
                        file should be relative to the model.<br>
                         <br>
                        There is a Ptolemy test at<br>
                        ptolemy/actor/lib/io/test/auto/FileReader.xml <br>
                        that illustrates the various possibilities.  If
                        this test is run in the
                        ptolemy/actor/lib/io/test<br>
                        directory, then it will work.  If the test is
                        run elsewhere, then the "FileReader Relative to
                        CWD"<br>
                        actor will fail because that actor uses $CWD,
                        which is expected to be
                        ptolemy/actor/lib/io/test<br>
                        in that test.<br>
                        <br>
                        In Java, the value of the user.dir property is
                        the " User's current working directory".<br>
                        However, when a Java program is opened in a
                        graphical windowing system by clicking on<br>
                        a menu choice, then the value of user.dir is not
                        clearly defined.  It should probably be<br>
                        the same value as the user's home directory, but
                        I've seen various values.<br>
                        For a FileParameter, the value of $CWD is set to
                        the value of the user.dir property,<br>
                        which is probably not what you want.  I often
                        end up using $CLASSPATH, which looks in<br>
                        the classpath for the resource.  The file
                        chooser does not have a way to add $CLASSPATH,<br>
                        you have to type it in manually.
                        <div><br>
                          <br>
                          <br>
                          <blockquote type="cite">
                            <blockquote type="cite"> <br>
                              2.) List Parameter: <br>
                              - I have seen some actor have List
                              parameters how do I customise one for <br>
                              my composite actor too ? <br>
                            </blockquote>
                          </blockquote>
                          <br>
                        </div>
                        For atomic actors, the
                        ptolemy/actor/lib/MathFunction.java uses the
                        addChoice() method:<br>
                        <br>
                               //
                        Parameters                                                                                                                                         


                        <br>
                                function = new StringParameter(this,
                        "function");<br>
                                function.setExpression("exp");<br>
                                function.addChoice("exp");<br>
                                function.addChoice("log");<br>
                                function.addChoice("modulo");<br>
                                function.addChoice("sign");<br>
                                function.addChoice("square");<br>
                                function.addChoice("sqrt");<br>
                                _function = _EXP;<br>
                        <br>
                        I believe that addChoice() is defined in
                        ptolemy/gui/Query.java<br>
                        <br>
                        For a CompositeActor, you would probably need to
                        edit the MoML by hand and add a Parameter:<br>
                        <br>
                        <property name="function"
                        class="ptolemy.data.expr.StringParameter"
                        value="square"><br>
                                    <property name="style"
                        class="ptolemy.actor.gui.style.ChoiceStyle"><br>
                                        <property name="exp"
                        class="ptolemy.kernel.util.StringAttribute"
                        value="exp"><br>
                                        </property><br>
                                <property name="log"
                        class="ptolemy.kernel.util.StringAttribute"
                        value="log"><br>
                                        </property><br>
                                        <property name="modulo"
                        class="ptolemy.kernel.util.StringAttribute"
                        value="modulo"><br>
                                </property><br>
                                        <property name="sign"
                        class="ptolemy.kernel.util.StringAttribute"
                        value="sign"><br>
                                        </property><br>
                                <property name="square"
                        class="ptolemy.kernel.util.StringAttribute"
                        value="square"><br>
                                        </property><br>
                                        <property name="sqrt"
                        class="ptolemy.kernel.util.StringAttribute"
                        value="sqrt"><br>
                                        </property><br>
                                    </property><br>
                                </property><br>
                        <br>
                        _Christopher
                        <div><br>
                          <blockquote type="cite">
                            <blockquote type="cite"> <br>
                              Thanks alot !! <br>
                              ckw <br>
                              <br>
                              <br>
                              _______________________________________________
                              <br>
                              Kepler-users mailing list <br>
                              <a moz-do-not-send="true"
                                href="mailto:Kepler-users@kepler-project.org"
                                target="_blank">Kepler-users@kepler-project.org</a>
                              <br>
                              <a moz-do-not-send="true"
                                href="http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users"
                                target="_blank">http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users</a>
                              <br>
                            </blockquote>
                            <br>
                            <fieldset></fieldset>
                            <br>
                            <pre>_______________________________________________
Kepler-users mailing list
<a moz-do-not-send="true" href="mailto:Kepler-users@kepler-project.org" target="_blank">Kepler-users@kepler-project.org</a>
<a moz-do-not-send="true" href="http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users" target="_blank">http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users</a>
</pre>
                          </blockquote>
                          <br>
                        </div>
                        <font color="#888888">
                          <pre cols="72">-- 
Christopher Brooks, PMP                       University of California
CHESS Executive Director                      US Mail: 337 Cory Hall
Programmer/Analyst CHESS/Ptolemy/Trust        Berkeley, CA 94720-1774
ph: <a moz-do-not-send="true" href="tel:510.643.9841" value="+15106439841" target="_blank">510.643.9841</a>                                (Office: 545Q Cory)
home: (F-Tu) <a moz-do-not-send="true" href="tel:707.665.0131" value="+17076650131" target="_blank">707.665.0131</a> cell: <a moz-do-not-send="true" href="tel:707.332.0670" value="+17073320670" target="_blank">707.332.0670</a> </pre>
                        </font></div>
                    </blockquote>
                  </div>
                  <br>
                </blockquote>
                <br>
                <pre cols="72">-- 
Christopher Brooks, PMP                       University of California
CHESS Executive Director                      US Mail: 337 Cory Hall
Programmer/Analyst CHESS/Ptolemy/Trust        Berkeley, CA 94720-1774
ph: <a moz-do-not-send="true" href="tel:510.643.9841" value="+15106439841" target="_blank">510.643.9841</a>                                (Office: 545Q Cory)
home: (F-Tu) <a moz-do-not-send="true" href="tel:707.665.0131" value="+17076650131" target="_blank">707.665.0131</a> cell: <a moz-do-not-send="true" href="tel:707.332.0670" value="+17073320670" target="_blank">707.332.0670</a> </pre>
              </div>
            </div>
          </div>
        </blockquote>
      </div>
      <br>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Christopher Brooks, PMP                       University of California
CHESS Executive Director                      US Mail: 337 Cory Hall
Programmer/Analyst CHESS/Ptolemy/Trust        Berkeley, CA 94720-1774
ph: 510.643.9841                                (Office: 545Q Cory)
home: (F-Tu) 707.665.0131 cell: 707.332.0670 </pre>
  </body>
</html>