<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>