Skip to content

Instantly share code, notes, and snippets.

@cxbrooks
Created May 15, 2018 23:23
Show Gist options
  • Save cxbrooks/35d915116c58043a0525482de86d17c5 to your computer and use it in GitHub Desktop.
Save cxbrooks/35d915116c58043a0525482de86d17c5 to your computer and use it in GitHub Desktop.
Bugzilla to Github conversion script used to convert from the Ptolemy II Bugzilla pages at https://chess.eecs.berkeley.edu to GitHub issues at https://github.com/icyphy/ptII/issues. See https://github.com/icyphy/ptII/issues/2
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
#
# Bugzilla XML File to GitHub Issues Converter
# by Andriy Berestovskyy (https://github.com/semihalf-berestovskyy-andriy/tools/)
# Adapted for the Coq bug tracker migration by Théo Zimmermann
# This script is licensed under the Apache 2.0 license.
#
# How to use the script:
# 1. Generate a GitHub access token:
# - on GitHub select "Settings"
# - select "Personal access tokens"
# - click "Generate new token"
# - type a token description, i.e. "bugzilla2github"
# - select "public_repo" to access just public repositories
# - save the generated token into the migration script
# 2. Export Bugzilla issues into an XML file:
# - go to https://coq.inria.fr/bugs/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&limit=0&order=bug_id&query_format=advanced&resolution=---&resolution=FIXED&resolution=INVALID&resolution=WONTFIX&resolution=DUPLICATE&resolution=WORKSFORME&resolution=MOVED
# - at the very end click the XML icon
# - save the XML into a file: bugzilla.xml
# 3. Run the migration script and check all the warnings:
# bugzilla2github -x bugzilla.xml -o berestovskyy -r test -t beefbeefbeef
# 4. Run the migration script again and force the updates:
# bugzilla2github -x bugzilla.xml -o berestovskyy -r test -t beefbeefbeef -f
#
# The script depends on the requests package.
# Nix users can get the right environment by running:
# $ nix-shell -p python2 python2Packages.requests
import csv, getopt, json, os, pprint, re, requests, sys, time, xml.etree.ElementTree
# Existing issues means issue numbers already taken on GitHub (by PRs mostly).
# The script can find these by itself but this will spare API requests.
existingIssues = 1
force_update = False
xml_file = "bugzilla.xml"
github_url = "https://api.github.com"
github_owner = ""
github_repo = ""
github_token = ""
reload(sys)
sys.setdefaultencoding('utf-8')
email2login = {
"__name__": "email to GitHub login",
"cxh@eecs.berkeley.edu": "cxbrooks",
"Christopher Brooks": "cxbrooks",
"eal@eecs.berkeley.edu": "edwardalee",
"marten@berkeley.edu": "lhstrh",
"marten@eecs.berkeley.edu": "lhstrh",
"Marten Lohstroh": "lhstrh"
}
status2state = {
"__name__": "status to GitHub state",
"NEW": False,
"UNCONFIRMED": False,
"CONFIRMED": False,
"VERIFIED": False,
"ASSIGNED": False,
"IN_PROGRESS": False,
"RESOLVED": True,
"CLOSED": True,
"REOPENED": False,
}
component2labels = {
"__name__": "component to GitHub labels",
"CSP": ["CSP"],
"CT": ["CT"],
"Codegen": ["Codegen"],
"Continuous Domain": ["Continuous Domain"],
"Copernicus": ["Copernicus"],
"DDF": ["DDF"],
"DE": ["DE"],
"DT": ["DT"],
"Debugger": ["Debugger"],
"Documentation": ["Documentation"],
"Gui": ["Gui"],
"HSIF": ["HSIF"],
"Installer": ["Installer"],
"Matlab": ["Matlab"],
"MoML": ["MoML"],
"ModalModel": ["ModalModel"],
"Multicore": ["Multicore"],
"Ontologies": ["Ontologies"],
"PN": ["PN"],
"Parameters": ["Parameters"],
"Performance": ["Performance"],
"Properties": ["Properties"],
"Ptplot": ["Ptplot"],
"SDF": ["SDF"],
"SR": ["SR"],
"Vergil": ["Vergil"],
"Wireless": ["Wireless"],
"actors": ["actors"],
"build system": ["build system"],
"gr domain": ["gr domain"],
"jni": ["jni"],
"kernel": ["kernel"],
"printing": ["printing"],
"ptango": ["ptango"],
"pthomas": ["pthomas"],
"tokens": ["tokens"],
"undo": ["undo"],
}
keywords2labels = {
"__name__": "keywords to GitHub labels",
"compatibility": ["kind: compatibility"],
"performance": ["kind: performance"],
"performance, regression": ["kind: performance", "kind: regression"],
"regression": ["kind: regression"],
"pthomas": ["pthomas"],
"rome": ["rome"],
}
resolution2labels = {
"__name__": "resolution to GitHub labels",
"FIXED": [],
"DUPLICATE": ["resolved: duplicate"],
"INVALID": ["resolved: invalid"],
"MOVED": ["resolved: moved"],
"WONTFIX": ["resolved: won't fix"],
"WORKSFORME": ["resolved: works for me"],
}
op_sys2labels = {
"__name__": "Operating System to GitHub labels",
"Mac OS": [ "platform: OS X" ],
"Windows": [ "platform: Windows" ],
"Linux": [],
"Other": [],
"Mac OS X 10.3": ["Mac OS X 10.3"],
"Mac OS X 10.5": ["Mac OS X 10.5"],
"Mac OS X 10.6": ["Mac OS X 10.6"],
"Mac OS X 10.7": ["Mac OS X 10.7"],
"Solaris": ["Solaris"],
"Windows 7": ["Windows 7"],
"Windows Server 2003": ["Windows Server 2003"],
"Windows XP": ["Windows XP"],
"All": []
}
bug_unused_fields = [
"actual_time",
"assigned_to.name",
"attachment.isobsolete",
"attachment.ispatch",
"attachment.isprivate",
"bug_file_loc",
"cclist_accessible",
"classification",
"classification_id",
"comment_sort_order",
"deadline",
"delta_ts",
"estimated_time",
"everconfirmed",
"long_desc.isprivate",
"priority",
"product",
"remaining_time",
"reporter_accessible",
"rep_platform",
"bug_severity",
"target_milestone",
"token",
]
comment_unused_fields = [
"comment_count",
"attachid",
"work_time",
]
attachment_unused_fields = [
"attacher",
"attacher.name",
"date",
"delta_ts",
"token",
]
def usage():
print "Bugzilla XML file to GitHub Issues Converter"
print "Usage: %s [-h] [-f]\n" \
"\t[-x <src XML file>]\n" \
"\t[-o <dst GitHub owner>] [-r <dst repo>] [-t <dst access token>]\n" \
% os.path.basename(__file__)
print "Example:"
print "\t%s -h" % os.path.basename(__file__)
print "\t%s -x bugzilla.xml -o dst_login -r dst_repo -t dst_token" \
% os.path.basename(__file__)
exit(1)
def XML2dict(parent):
ret = {}
for key in parent:
# TODO: debug
# print len(key), key.tag, key.attrib, key.text
if len(key) > 0:
val = XML2dict(key)
else:
val = key.text
if key.text:
if key.tag not in ret:
ret[key.tag] = val
else:
if isinstance(ret[key.tag], list):
ret[key.tag].append(val)
else:
ret[key.tag] = [ret[key.tag], val]
# Parse attributes
for name, val in key.items():
ret["%s.%s" % (key.tag, name)] = val
return ret
def str2list(map, str):
if str not in map:
print "WARNING: unable to convert %s: %s" % (map["__name__"], str)
# Suppress further reports
map[str] = []
return map[str]
def str2str(map, str):
if str not in map:
print "WARNING: unable to convert %s: %s" % (map["__name__"], str)
# Suppress further reports
map[str] = None
return map[str]
def id_convert(id):
global github_owner, github_repo
return "[BZ#" + id + "](https://github.com/" + github_owner + "/" + github_repo + "/issues?q=is%3Aissue%20%22Original%20bug%20ID%3A%20BZ%23" + id + "%22)"
def id_convert_from_match(match):
return re.sub(r'\#', "", match.group(1)) + id_convert(match.group(2))
def ids_convert(ids):
ret = []
if not ids:
return ""
if isinstance(ids, list):
for id in ids:
ret.append(id_convert(id))
else:
ret.append(id_convert(ids))
return ", ".join(ret)
def see_also_convert(see_also):
result = re.search('id=(\d+)$', see_also)
if not result:
return see_also
else:
return id_convert(result.group(1))
def email_convert(email, name):
ret = str2str(email2login, email)
if ret:
return "@" + ret
else:
if name and not name.find("@") >= 0:
return "%s &lt;<%s>&gt;" % (name, email)
else:
return email
def emails_convert(emails):
ret = []
if isinstance(emails, list):
for email in emails:
if email != "coq-bugs-redist@lists.gforge.inria.fr":
ret.append(email_convert(email, None))
else:
ret.append(email_convert(emails, None))
return ret
def fields_ignore(obj, fields):
# Ignore some Bugzilla fields
for field in fields:
obj.pop(field, None)
def fields_dump(obj):
# Make sure we have converted all the fields
for key, val in obj.items():
print " " * 8 + "%s[%d] = %s" % (key, len(val), val)
def attachment_convert(idx, attach):
ret = []
id = attach.pop("attachid")
ret.append("> Attached file: [%s](https://coq.inria.fr/bugfiles/attachment.cgi?id=%s) (%s, %s bytes)" % (attach.pop("filename"), id, attach.pop("type"), attach.pop("size")))
if "desc" in attach:
ret.append("> Description: " + attach.pop("desc"))
# Ignore some fields
global attachment_unused_fields
fields_ignore(attach, attachment_unused_fields)
# Make sure we have converted all the fields
if attach:
print "WARNING: unconverted attachment fields:"
fields_dump(attach)
idx[id] = "\n".join(ret)
def attachments_convert(attachments):
ret = {}
if isinstance(attachments, list):
for attachment in attachments:
attachment_convert(ret, attachment)
else:
attachment_convert(ret, attachments)
return ret
def date_convert(date):
result = re.match(r'(\d\d\d\d-\d\d-\d\d) (\d\d:\d\d:\d\d) \-(\d\d)(\d\d)', date)
if not result:
print("Date %s was not converted!" % date)
exit(1)
return "{a}T{b}+{c}:{d}".format(a = result.group(1), b = result.group(2),
c = result.group(3), d = result.group(4))
def comment_convert(comment, attachments):
ret = []
id = int(comment.pop("commentid"))
if id >= 1658:
ret.append("Comment author: "
+ email_convert(comment.pop("who"), comment.pop("who.name", None)))
ret.append("")
ret.append(comment.pop("thetext", "*No description provided.*").replace("@", "@ "))
ret.append("")
# Convert attachments if any
if "attachid" in comment:
attachid = comment.pop("attachid")
if attachid in attachments:
ret.append(attachments.pop(attachid))
ret.append("")
ret.append("")
# Syntax: convert "bug id" to "BZ#id"
for i, val in enumerate(ret):
val = re.sub(r"\(In reply to comment \#\d+\)","", val)
ret[i] = re.sub(r"(?i)(bug(?:\s+report)?\s+|feature wish\s+|\s\#)(\d\d?\d?\d?)", id_convert_from_match, val)
created_at = date_convert(comment.pop("bug_when"))
# Ignore some comment fields
global comment_unused_fields
fields_ignore(comment, comment_unused_fields)
# Make sure we have converted all the fields
if comment:
print "WARNING: unconverted comment fields:"
fields_dump(comment)
return { "body": "\n".join(ret), "created_at": created_at }
def comments_convert(comments, attachments):
ret = []
if isinstance(comments, list):
for comment in comments:
ret.append(comment_convert(comment, attachments))
else:
ret.append(comment_convert(comments, attachments))
return ret
def bug_convert(bug):
ret = {}
ret["body"] = []
ret["body"].append("Note: the issue was created automatically with %s tool"
% os.path.basename(__file__))
ret["body"].append("")
ret["labels"] = []
ret["comments"] = []
attachments = {}
# Convert bug_id to number
ret["number"] = int(bug.pop("bug_id"))
# Convert attachments if any
if "attachment" in bug:
attachments = attachments_convert(bug.pop("attachment"))
# Convert long_desc and attachment to comments
ret["comments"].extend(comments_convert(bug.pop("long_desc"), attachments))
# Convert short_desc to title
ret["title"] = bug.pop("short_desc")
# Convert creation_ts to created_at
ret["created_at"] = date_convert(bug.pop("creation_ts"))
# Convert component to labels
ret["labels"].extend(str2list(component2labels, bug.pop("component")))
# Convert bug_status to state
ret["closed"] = str2str(status2state, bug.pop("bug_status"))
# We only assign open bug reports
assignee = str2str(email2login, bug.pop("assigned_to"))
if not ret["closed"] and assignee:
ret["assignee"] = assignee
# Approximate closing date with last update date
updated_at = bug.pop("delta_ts")
if ret["closed"]:
ret["closed_at"] = date_convert(updated_at)
# Convert (optional) keywords to labels
ret["labels"].extend(str2list(keywords2labels, bug.pop("keywords","")))
# Convert resolution to labels
if "resolution" in bug:
ret["labels"].extend(str2list(resolution2labels, bug.pop("resolution")))
# Convert op_sys to labels
if "op_sys" in bug:
ret["labels"].extend(str2list(op_sys2labels, bug.pop("op_sys")))
# Create the bug description
ret["body"].append("Original bug ID: BZ#%d" % ret["number"])
ret["body"].append("From: " + email_convert(bug.pop("reporter"),
bug.pop("reporter.name", None)))
ret["body"].append("Reported version: " + bug.pop("version"))
if "cc" in bug:
ret["body"].append("CC: " + ", ".join(emails_convert(bug.pop("cc"))))
# Extra information
ret["body"].append("")
if "dup_id" in bug:
ret["body"].append("Duplicates: " + ids_convert(bug.pop("dup_id")))
if "dependson" in bug:
ret["body"].append("Depends on: " + ids_convert(bug.pop("dependson")))
if "blocked" in bug:
ret["body"].append("Blocker for: " + ids_convert(bug.pop("blocked")))
if "see_also" in bug:
see_also = bug.pop("see_also")
if isinstance(see_also, basestring):
ret["body"].append("See also: " + see_also_convert(see_also))
else:
for item in see_also:
ret["body"].append("See also: " + see_also_convert(item))
ret["body"].append("")
# Put everything together
ret["body"] = "\n".join(ret["body"])
# Ignore some bug fields
global bug_unused_fields
fields_ignore(bug, bug_unused_fields)
# Make sure we have converted all the fields
if bug:
print "WARNING: unconverted bug fields:"
fields_dump(bug)
# Make sure we have converted all the attachments
if attachments:
print "WARNING: unconverted attachments:"
fields_dump(attachments)
return ret
def bugs_convert(xml_root):
issues = {}
for xml_bug in xml_root.iter("bug"):
bug = XML2dict(xml_bug)
issue = bug_convert(bug)
# Check for duplicates
id = issue.pop("number")
if id in issues:
print("Error checking for duplicates: bug #%d is duplicated in the '%s'"
% (id, xml_file))
issues[id] = issue
return issues
def github_get(url, avs = {}):
global xml_file, github_url, github_owner, github_repo, github_token
if url[0] == "/":
u = "%s%s" % (github_url, url)
elif url.startswith("https://"):
u = url
elif url.startswith("http://"):
u = url
else:
u = "%s/repos/%s/%s/%s" % (github_url, github_owner, github_repo, url)
# TODO: debug
print "GET: " + u
avs["access_token"] = github_token
return requests.get(u, params = avs)
def github_post(url, avs = {}, fields = []):
global force_update
global xml_file, github_url, github_owner, github_repo, github_token
if url[0] == "/":
u = "%s%s" % (github_url, url)
else:
u = "%s/repos/%s/%s/%s" % (github_url, github_owner, github_repo, url)
d = {}
# Copy fields into the data
for field in fields:
if field not in avs:
print "Error posting filed %s to %s" % (field, url)
exit(1)
d[field] = avs[field]
# TODO: debug
print "POST: " + u
print "DATA: " + json.dumps(d)
if force_update:
return requests.post(u, params = { "access_token": github_token },
data = json.dumps(d))
else:
if not github_post.warn:
print "Skipping POST... (use -f to force updates)"
github_post.warn = True
return True
github_post.warn = False
def github_label_create(label):
if not github_get("labels/" + label):
print "\tcreating label '%s' on GitHub..." % label
r = github_post("labels", {
"name": label,
"color": "0"*6,
}, ["name", "color"])
if not r:
print "Error creating label %s: %s" % (label, r.headers)
exit(1)
def github_labels_check(issues):
global force_update
labels_set = set()
for id in issues:
for label in issues[id]["labels"]:
labels_set.add(label)
for label in labels_set:
if github_get("labels/" + label):
print "\tlabel '%s' exists on GitHub" % label
else:
if force_update:
github_label_create(label)
else:
print "WARNING: label '%s' does not exist on GitHub" % label
def github_assignees_check(issues):
a_set = set()
for id in issues:
if "assignee" in issues[id]:
a_set.add(issues[id]["assignee"])
for assignee in a_set:
if not github_get("/users/" + assignee):
print "Error checking user '%s' on GitHub" % assignee
exit(1)
else:
print "Assignee '%s' exists" % assignee
def github_issue_exist(number):
if github_get("issues/%d" % number):
return True
else:
return False
def github_issue_get(number):
req = github_get("issues/%d" % number)
if not req:
print "Error getting GitHub issue #%d: %s" % (number, req.headers)
exit(1)
return req.json()
def github_issue_append(bugzilla_id, issue):
global github_owner, github_repo, github_token
params = { "access_token": github_token }
headers = { "Accept": "application/vnd.github.golden-comet-preview+json" }
print "\timporting BZ#%d on GitHub..." % bugzilla_id
u = "https://api.github.com/repos/%s/%s/import/issues" % (github_owner, github_repo)
comments = issue.pop("comments", [])
# We can't assign people which are not in the organization / collaborators on the repo
if github_owner != "icyphy":
issue.pop("assignee", None)
r = requests.post(u, params = params, headers = headers,
data = json.dumps({ "issue": issue, "comments": comments }))
if not r:
print "Error importing issue on GitHub:\n%s" % r.text
print "For the record, here was the request:\n%s" % json.dumps({ "issue": issue, "comments": comments })
exit(1)
u = r.json()["url"]
wait = 1
r = False
while not r or r.json()["status"] == "pending":
time.sleep(wait)
wait = 2 * wait
r = requests.get(u, params = params, headers = headers)
if not r.json()["status"] == "imported":
print "Error importing issue on GitHub:\n%s" % r.text
exit(1)
# The issue_url field of the answer should be of the form .../ISSUE_NUMBER
# So it's easy to get the issue number, to check that it is what was expected
result = re.match("https://api.github.com/repos/" + github_owner + "/" + github_repo + "/issues/(\d+)", r.json()["issue_url"])
if not result:
print "Error while parsing issue number:\n%s" % r.text
issue_number = result.group(1)
with open("bugzilla2github.log", "a") as f:
f.write("%d, %s\n" % (bugzilla_id, issue_number))
return issue_number
def github_issues_add(issues):
postponed = {}
id = 0
while True:
id += 1
print "Checking id: #%d" % id;
if id <= existingIssues or github_get("issues/%d" % id):
if id in issues:
print "Issue #%d already exists, postponing..." % id
postponed[id] = issues.pop(id)
else:
# @cxbrooks: This is where get different from the original
# Our ptII issues numbers are non-contiguous
# so we don't use the postpone mechanism
if id > existingIssues and not github_get("issues/%d" % id):
# Get the first issue
if len(issues) <= 0:
print "No more issues?"
exit(0)
for key in sorted(issues.iterkeys()):
issue = issues.pop(key)
print "First issue is %d " % key
print "len(issues): %d" % len(issues)
if force_update:
print "Creating issue #%d..." % id
github_issue_append(key, issue)
break;
else:
print "existingIssues: %d" % existingIssues;
if id in issues:
bugzilla_id = id
print "bugzilla_id: #%d" % bugzilla_id;
issue = issues.pop(id)
else:
print "len(postponed): #%d" % len(postponed);
if len(postponed) == 0:
if len(issues) == 0:
print "===> All done."
exit(0)
else:
print "len(postponed): %d" % len(postponed)
print "len(issues): %d" % len(issues)
print "Error: Hmm. 0 postponed issues, but %d issues to go? No more postponed issues? Exiting with 1." % len(issues)
exit(1)
print "Find the first postponed issue.";
# Find the first postponed issue
bugzilla_id = sorted(postponed.keys())[0]
issue = postponed.pop(bugzilla_id)
if force_update:
print "Creating issue #%d..." % id
github_issue_append(bugzilla_id, issue)
def args_parse(argv):
global force_update
global xml_file, github_owner, github_repo, github_token
try:
opts, args = getopt.getopt(argv,"hfo:r:t:x:")
except getopt.GetoptError:
usage()
for opt, arg in opts:
if opt == '-h':
usage()
elif opt == "-f":
print "WARNING: the repo will be UPDATED! No backups, no undos!"
# print "Press Ctrl+C within next 5 seconds to cancel the update:"
# time.sleep(5)
force_update = True
elif opt == "-o":
github_owner = arg
elif opt == "-r":
github_repo = arg
elif opt == "-t":
github_token = arg
elif opt == "-x":
xml_file = arg
# Check the arguments
if (not xml_file or not github_owner or not github_repo or not github_token):
print("Error parsing arguments: "
"please specify XML file, GitHub owner, repo and token")
usage()
def main(argv):
global xml_file, github_owner, github_repo, existingIssues
# Parse command line arguments
args_parse(argv)
print "===> Converting Bugzilla reports to GitHub Issues..."
print "\tSource XML file: %s" % xml_file
print "\tDest. GitHub owner: %s" % github_owner
print "\tDest. GitHub repo: %s" % github_repo
xml_tree = xml.etree.ElementTree.parse(xml_file)
xml_root = xml_tree.getroot()
issues = bugs_convert(xml_root)
try:
with open("bugzilla2github.log", "r") as f:
print "===> Skipping already imported issues (WARNING: this shouldn't happen when you run this script for the first time)..."
time.sleep(5)
imported_bugs = csv.reader(f)
for imported_bug in imported_bugs:
issues.pop(int(imported_bug[0]), None)
existingIssues = max(existingIssues, int(imported_bug[1]))
except IOError:
print "===> No log file found. Not skipping any issue."
print "===> Checking last existing issue actually exists."
if not github_issue_exist(existingIssues):
print "Last existing issue doesn't actually exist. Aborting!"
exit(1)
print "===> Checking whether the following issue was created but not saved."
github_issue = github_get("issues/%d" % (existingIssues + 1))
if github_issue:
result = re.search("Original bug ID: BZ#(\d+)", github_issue.json()["body"])
if result:
print "Indeed, this was the case."
bugzilla_id = int(result.group(1))
issues.pop(bugzilla_id, None)
with open("bugzilla2github.log", "a") as f:
f.write("%d, %d\n" % (bugzilla_id, existingIssues + 1))
print "===> Checking all the labels exist on GitHub..."
github_labels_check(issues)
print "===> Checking all the assignees exist on GitHub..."
github_assignees_check(issues)
# fake_issue = { "title": "Fake issue", "body": "Fake issue", "closed": True }
# for i in xrange(1,existingIssues + 1):
# github_issue_append(0, fake_issue)
print "===> Adding Bugzilla reports on GitHub..."
github_issues_add(issues)
if __name__ == "__main__":
main(sys.argv[1:])
This file has been truncated, but you can view the full file.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://chess.eecs.berkeley.edu/bugzilla/page.cgi?id=bugzilla.dtd">
<bugzilla version="5.0.3"
urlbase="https://chess.eecs.berkeley.edu/bugzilla/"
maintainer="root@moog.eecs.berkeley.edu"
exporter="cxh@eecs.berkeley.edu"
>
<bug>
<bug_id>33</bug_id>
<creation_ts>2006-07-27 15:58:45 -0700</creation_ts>
<short_desc>Multiport drag problem: wrong end moves</short_desc>
<delta_ts>2006-07-27 16:46:52 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>CLOSED</bug_status>
<resolution>DUPLICATE</resolution>
<dup_id>13</dup_id>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>blocker</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340161-7AibNS4dwJn4lxXsEz5kTb5u5VNlq291XAN9othOiEI</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>45</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 15:58:45 -0700</bug_when>
<thetext>If a link goes to a multiport and I click and drag on the
multiport end, the wrong ends gets dragged.
This is really annoyiing and should be fixed before 6.0,
thus I&apos;m making this a blocker.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>51</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 16:20:52 -0700</bug_when>
<thetext>
*** This bug has been marked as a duplicate of 13 ***</thetext>
</long_desc>
</bug>
<bug>
<bug_id>66</bug_id>
<creation_ts>2007-05-24 08:14:37 -0700</creation_ts>
<short_desc>Instantiating an actor oriented class that contains a Publisher fail</short_desc>
<delta_ts>2007-06-11 15:59:16 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>6.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>WONTFIX</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>critical</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340161-6wae1W8TaUcBfGZ_n8uvz7EMHKCHp32uyEUEB-u20Jg</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>116</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-05-24 08:14:37 -0700</bug_when>
<thetext>If an actor oriented class contains a Publisher,
then instantiating that class twice in a model
results in an error because there are two
Publishers with the same name.
See ptolemy/actor/lib/test/Publisher.tcl</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>126</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-06-11 15:59:16 -0700</bug_when>
<thetext>It turns out that this is a feature not a bug.
Edward writes:
This exception is correct. Having two publishers with the same
channel name is an error, and detecting it at run time is correct
(detecting it at model construction time would be wrong, since then
you couldn&apos;t actually create two instances).
The fix is that the class should have a parameter for the channel
name, like in the attached model.
However, until a change I just checked in, it wasn&apos;t possible to create
such a model... I checked in a change that will tolerate conflicting
channel names if the model is not executing... If the problem isn&apos;t
fixed before the model gets run, then the exception will be thrown
at run time.
I checked in his example model as
$PTII/ptolemy/actor/lib/test/auto/twoPublishers.xml</thetext>
</long_desc>
</bug>
<bug>
<bug_id>239</bug_id>
<creation_ts>2009-02-17 17:32:09 -0800</creation_ts>
<short_desc>Current implementation of NonDeterministicMerge often results in models that never stop.</short_desc>
<delta_ts>2009-02-25 15:00:03 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows Server 2003</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>major</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340161-yy1tnaORU-j6xPJuyOSFVWzmSDNRM6kZ7yZWFy6MibE</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>407</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-02-17 17:32:09 -0800</bug_when>
<thetext>This is the result of moving the initialization code of the ChannelActors from attributeChanged to initialize. The following sections explains why this was done:
&lt;quote&gt;
What happens is that the NondeterministicMerge will call getWidth in
its attributeChanged method, this will cause IORelation to request a
token from the width Parameter, which will trigger
IORelation.attributeChanged (expressions are always lazy, which gives
unexpeced behaviors with the attributeChanged mechanism).
(Before the cached version of the width was being used at this moment,
which resulted in the wrong value being used (this was a very old
bug).)
The call of IORelation.attributeChanged will set the cached width,
which results in IOPort.attributeChanged being called, which calls
NondeterministicMerge.connectionsChanged (again!). This one sees that
the component has not added yet and does so. Finally the functions all
return and we end up in the first
NondeterministicMerge.connectionsChanged again. At the time it called
getWidth it knew it had to add the component and does so, but in
between this was already done by the second
NondeterministicMerge.connectionsChanged, which results in the
exception.
When I move the code that triggers the width and adds to new actors to
the initialize method of the NondeterministicMerge the model runs
again, but I&apos;m reluctant to do so, since it might mess up the
initialization process.
Moving the code to preinitialize has the disadvantage however that
width inference might happen multiple times (and definitely will for
certain type of models).
&lt;/quote&gt;
What now happens is that by moving the code to initialize, is that the new components are added during initialization phase which will result in
manager.requestInitialization, which adds the components in a list of actors to be initialized. This list won&apos;t be processed until the next iteration. When the sources dry up the NondeterministicMerge iterated again which results in the reinitialization of these added components, which creates new threads for these components. And than somehow the bookkeeping gets messed up.
ptolemy/domains/pn/test/auto/FourExpressions.xml illustrates this problem.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>408</commentid>
<comment_count>1</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-02-24 20:50:14 -0800</bug_when>
<thetext>I have studied the problem some more and now know how to fix this.
NondeterministicMerge will do this:
public void initialize() throws IllegalActionException {
_reinitializeInnerActors();
super.initialize();
}
_reinitializeInnerActors() will add the new actors and sets the container. When you set the container of the new actors it is requested to director to initialize them. The director delegates this to the manager. Let&apos;s define this Initialization 1.
_reinitializeInnerActors() will also explicitly call manager.requestInitialization(localActor). Let&apos;s define this Initialization 2.
Since NondeterministicMerge is a opaque Composite Actor super.initialize() will initialize its director (the MergeDirector, deriving from the PNDirector) which will always initialize its actors. This is Initialization 3.
Initialization 1 and 2 will happen in a later iteration since the initialization process has already started. Initialization 3 on the other hand will start immediately. Which makes Initialization 1 and 2 useless.
I will change the code so that they won&apos;t happen anymore. For Initialization 1, this is a non-trivial. For this one I need to override MergeDirector.requestInitialization(Actor actor) and give it an empty body.
It is also interesting that at the second initialization, the threads were created, and registered at the PNDirector, but they weren&apos;t started. This explained why the model would not stop anymore.
Lastly, ProcessDirector.initializate did not use locking (synchronize(this)). Especially in the case that initialization happened a second time while executing this occasionally caused havoc. I haven&apos;t seen a problem in practice when in removed Initialization 1 and 2, but it is probably useful to add this locking anyway.
Also ptolemy/domains/pn/test/auto/BrockAckermanTest.xml, which is a erroneous model (this is not the demo version, but one that results in an exception in the Test Actor) is a better model to reproduce this problem.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>61</bug_id>
<creation_ts>2007-02-01 17:51:54 -0800</creation_ts>
<short_desc>Cut and paste of parameters that end in numbers and underscores is strange</short_desc>
<delta_ts>2007-03-05 13:27:42 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0.1</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>major</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340161-6BS5PdOTyLbZG_6_g0KP2zwrI2LmBRm0Y8I_QR3fmu8</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>93</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-02-01 17:51:54 -0800</bug_when>
<thetext>From the Rome 1/17/07 Telcon:
If you have a parameter &quot;myport_1_4&quot; and you cut and paste it, then
the new parameter is &quot;myport&quot;. This is because NamedObj._stripNumericSuffix()
removes all the trailing underscores and numbers
/** Return a string that is identical to the specified string except
* that any trailing characters that are numeric or underscores
* are removed.
* @param string The string to strip of its numeric suffix.
* @return A string with no numeric suffix.
*/
protected static String _stripNumericSuffix(String string) {
...
This method is used by NamedObj.uniqueName():
/** Return a name that is guaranteed to not be the name of any
* contained attribute. In derived classes, this should be overridden
* so that the returned name is guaranteed to not conflict with
* any contained object. In this implementation, the argument
* is stripped of any numeric suffix, and then a numeric suffix
* is appended and incremented until a name is found that does not
* conflict with a contained attribute.
* @param prefix A prefix for the name.
* @return A unique name, which will be exactly the prefix if possible,
* or the prefix extended by a number.
*/
public String uniqueName(String prefix) {
Perhaps this code should be modified so that it only replaces the last
underscore and any following numbers?</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>96</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-03-05 13:27:42 -0800</bug_when>
<thetext>I&apos;ve fixed this problem by editing NamedObj and adding a test.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>232</bug_id>
<creation_ts>2009-01-31 16:12:38 -0800</creation_ts>
<short_desc>Output ports in modal model actor lead to problems if actor inside Continuous domain</short_desc>
<delta_ts>2011-02-26 22:53:21 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>ModalModel</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>WORKSFORME</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>major</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340161-nxFrPDetNDG3RGu-YwA0qL2Rp6MYDOBL_yJqvNaHgf8</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>395</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-01-31 16:12:38 -0800</bug_when>
<thetext>If you create output ports in a modal model (by pushing on the output port button in the while in the modal model) they become input/output ports. This however changes the semantics of the modal model since if it is inside Continuous domain transitions are not taken if not input ports are available (unless they are preemptive).
What&apos;s more. If you change the port to be a output port save and close the model and reopen it again the output port is changed again into a input/output port. And hence the model doesn&apos;t work anymore.
The model in attachment illustrates the problem. If you execute it nothing is shown in the display. Open the modal model. Click on the right mouse button, in the menu: Customize -&gt; Ports, deselect input. Now the display displays something. Save the project, close it, open it again =&gt; the model does not work anymore (since the port has become an input/output port again).</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>396</commentid>
<comment_count>1</comment_count>
<attachid>26</attachid>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-01-31 16:13:26 -0800</bug_when>
<thetext>Created attachment 26
The model.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>398</commentid>
<comment_count>2</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-02-02 14:42:24 -0800</bug_when>
<thetext>Some more details about the problem:
Output ports in the controller (FSM diagram) of a ModalModel are automatically converted into input/output ports.
This is done in the following code:
ptolemy.domains.fsm.modal.ModalPort.setOutput
[...]
// If the entity is a controller, then set the
// port to also be an input.
if (entity.getName().equals(&quot;_Controller&quot;)) {
[...]
castPort.setInput(true);
Even if you change the input/output port back to output port online, the next time you open the model the port again becomes an outport port by the same method.
Since HybridModalDirectors won&apos;t take transitions if there is one input port that is not known yet (using the method port.isKnown(), which happens in HybridModalDirectors.fire()), automatically setting output ports and input/output ports changes the semantics of the model and might have unexpected behavior (transitions are not taken anymore) if the output is not initialized to some value first.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>739</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2011-02-26 22:53:21 -0800</bug_when>
<thetext>The original model uses domains.fsm, which is obsolete.
The problem is not reproducible if we substitute domains.modal for domains.fsm.
For information about why ports are both inputs and outputs, see page 37 of
Finite State Machines and Modal Models in Ptolemy II at
http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-151.html
&quot;Note that state refinements are fired before any non-preemptive guard
is evaluated. One consequence of this is that the outputs resulting
from firing the refinement can be referenced in the guards of
nonpreemptive transitions! Thus, whether a transition is taken can
depend on how the current refinement reacts to the inputs. In fact,
the astute reader may have already noticed in the figures here that
the when the controller FSMActor of a ModalModel is shown, that the
icon for output ports does not look like a normal output port (see for
example the heat port in the middle diagram of Figure 17). This icon,
in fact, is the icon for a port that is both an input and an
output. In fact, it serves both of these roles for the modal model
controller, since it can influence the evaluation of guards and it can
provide outputs to the environment.&quot;</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>26</attachid>
<date>2009-01-31 16:13:26 -0800</date>
<delta_ts>2009-01-31 16:13:26 -0800</delta_ts>
<desc>The model.</desc>
<filename>model.xml</filename>
<type>text/xml</type>
<size>7597</size>
<attacher name="Bert Rodiers">bert.rodiers@gmail.com</attacher>
<token>1526340161-qoJcJnC_IZrviZ-iVa0OkLq27UQlbrtLaZOoeAeRtXE</token>
</attachment>
</bug>
<bug>
<bug_id>236</bug_id>
<creation_ts>2009-02-12 10:09:01 -0800</creation_ts>
<short_desc>The Continuous director is not thread-safe and doesn&apos;t implement fireAt semantics correctly</short_desc>
<delta_ts>2009-02-12 10:15:36 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Continuous Domain</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340161-Etp5JkekdccNJMgE5Zq0u_yLrySqj9ZbdU7-MhrL8RE</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>402</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-02-12 10:09:01 -0800</bug_when>
<thetext>The Continuous director is not thread-safe (no locking in the different fire methods).
More it doesn&apos;t implement fireAt semantics correctly. The new sematics says that time that is past as an argument should be increased when it is in the past. Currently an exception is thrown.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>403</commentid>
<comment_count>1</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-02-12 10:14:15 -0800</bug_when>
<thetext>This will typically make actors like the ThreadedComposite or ArrowKeySensor that work in a different thread of control fail.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>41</bug_id>
<creation_ts>2006-07-27 16:43:44 -0700</creation_ts>
<short_desc>The nightly build should build an installer</short_desc>
<delta_ts>2007-02-20 06:03:19 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Installer</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340161-SNQyjREvRZpeo3I6I9Y94LLBS6aW-q8t0D25W_1oNgM</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>58</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 16:43:44 -0700</bug_when>
<thetext>The nightly build should make an installer available.
(From the July Rome AFRL Visit)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>94</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-02-20 06:03:19 -0800</bug_when>
<thetext>The nightly build has been building installers for awhile, see
http://chess.eecs.berkeley.edu/ptexternal/nightly/index.htm</thetext>
</long_desc>
</bug>
<bug>
<bug_id>340</bug_id>
<creation_ts>2010-05-05 11:32:36 -0700</creation_ts>
<short_desc>ModularCodeGenTypedComposite inside TypedComposite fails because of Pub/Sub</short_desc>
<delta_ts>2010-08-25 14:56:57 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Codegen</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>60.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>86.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-9M_RnuqaXsCvCouMpbxWbvzYC99hwIxnLyUmZ3f6TB0</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>680</commentid>
<comment_count>0</comment_count>
<attachid>35</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-05 11:32:36 -0700</bug_when>
<thetext>Created attachment 35
ModularCodeGen model that fails because it is inside a TypedComposite
Attached are two test cases, one that works, one that does not.
The difference is that the one that fails has a
ModularCodeGenTypedCompositeActor is inside a TypedComposteActor.
The stack trace is below.
I&apos;ve been experimenting with modifying ModularCodeGenTypedComposite
so that when we create a relation, we set the width to 1, but that
does not seem to do it.
Error encountered in:
&lt;param name=&quot;channel&quot; value=&quot;AnotherChannel&quot;/&gt;
Cannot create receivers
in .ModularCodeGenPubSubAggLazy3SubH.CompositeActor.ModularCodeGenTypedComposite
Because:
The width of relation .ModularCodeGenPubSubAggLazy3SubH.CompositeActor.ModularCodeGenTypedComposite.publisherRelation can not be uniquely inferrePlease make the width inference deterministic by explicitly specifying the width of this relation.
in .ModularCodeGenPubSubAggLazy3SubH.CompositeActor.ModularCodeGenTypedComposite.publisherRelation
ptolemy.kernel.util.InternalErrorException: Cannot create receivers
in .ModularCodeGenPubSubAggLazy3SubH.CompositeActor.ModularCodeGenTypedComposite
Because:
The width of relation .ModularCodeGenPubSubAggLazy3SubH.CompositeActor.ModularCodeGenTypedComposite.publisherRelation can not be uniquely inferrePlease make the width inference deterministic by explicitly specifying the width of this relation.
in .ModularCodeGenPubSubAggLazy3SubH.CompositeActor.ModularCodeGenTypedComposite.publisherRelation
at ptolemy.actor.CompositeActor.connectionsChanged(CompositeActor.java:355)
at ptolemy.cg.lib.ModularCodeGenTypedCompositeActor.connectionsChanged(ModularCodeGenTypedCompositeActor.java:214)
at ptolemy.kernel.ComponentPort._doLink(ComponentPort.java:1164)
at ptolemy.kernel.ComponentPort.liberalLink(ComponentPort.java:526)
at ptolemy.actor.IOPort.liberalLink(IOPort.java:2450)
at ptolemy.cg.lib.ModularCodeGenTypedCompositeActor.registerPublisherPort(ModularCodeGenTypedCompositeActor.java:920)
at ptolemy.actor.lib.Publisher.attributeChanged(Publisher.java:154)
at ptolemy.data.expr.Variable._setTokenAndNotify(Variable.java:1992)
at ptolemy.data.expr.Variable._evaluate(Variable.java:1646)
at ptolemy.data.expr.Variable._propagate(Variable.java:1732)
at ptolemy.data.expr.Variable.validate(Variable.java:1430)
at ptolemy.moml.MoMLParser.endDocument(MoMLParser.java:666)
at com.microstar.xml.XmlParser.doParse(XmlParser.java:162)
at com.microstar.xml.XmlParser.parse(XmlParser.java:132)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1418)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1374)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1530)
at ptolemy.actor.LazyTypedCompositeActor.populate(LazyTypedCompositeActor.java:773)
at ptolemy.cg.lib.ModularCodeGenTypedCompositeActor.populate(ModularCodeGenTypedCompositeActor.java:782)
at ptolemy.actor.LazyTypedCompositeActor.deepEntityList(LazyTypedCompositeActor.java:337)
at ptolemy.actor.Director.wrapup(Director.java:1345)
at ptolemy.actor.CompositeActor.wrapup(CompositeActor.java:2021)
at ptolemy.cg.lib.ModularCodeGenTypedCompositeActor.wrapup(ModularCodeGenTypedCompositeActor.java:1072)
at ptolemy.actor.Director.wrapup(Director.java:1350)
at ptolemy.actor.CompositeActor.wrapup(CompositeActor.java:2021)
at ptolemy.actor.Manager.wrapup(Manager.java:1379)
at ptolemy.actor.Manager.execute(Manager.java:384)
at ptolemy.actor.Manager.run(Manager.java:1162)
at ptolemy.actor.Manager$3.run(Manager.java:1215)
Caused by: ptolemy.kernel.util.IllegalActionException: The width of relation .ModularCodeGenPubSubAggLazy3SubH.CompositeActor.ModularCodeGenTypedposite.publisherRelation can not be uniquely inferred.
Please make the width inference deterministic by explicitly specifying the width of this relation.
in .ModularCodeGenPubSubAggLazy3SubH.CompositeActor.ModularCodeGenTypedComposite.publisherRelation
at ptolemy.actor.RelationWidthInference.inferWidths(RelationWidthInference.java:388)
at ptolemy.actor.CompositeActor.inferWidths(CompositeActor.java:730)
at ptolemy.actor.IORelation.getWidth(IORelation.java:321)
at ptolemy.actor.IOPort.createReceivers(IOPort.java:619)
at ptolemy.actor.CompositeActor.connectionsChanged(CompositeActor.java:352)
... 28 more
Caused by: ptolemy.kernel.util.IllegalActionException: The width of relation .ModularCodeGenPubSubAggLazy3SubH.CompositeActor.ModularCodeGenTypedposite.publisherRelation can not be uniquely inferred.
Please make the width inference deterministic by explicitly specifying the width of this relation.
in .ModularCodeGenPubSubAggLazy3SubH.CompositeActor.ModularCodeGenTypedComposite.publisherRelation
at ptolemy.actor.RelationWidthInference.inferWidths(RelationWidthInference.java:388)
at ptolemy.actor.CompositeActor.inferWidths(CompositeActor.java:730)
at ptolemy.actor.IORelation.getWidth(IORelation.java:321)
at ptolemy.actor.IOPort.createReceivers(IOPort.java:619)
at ptolemy.actor.CompositeActor.connectionsChanged(CompositeActor.java:352)
at ptolemy.cg.lib.ModularCodeGenTypedCompositeActor.connectionsChanged(ModularCodeGenTypedCompositeActor.java:214)
at ptolemy.kernel.ComponentPort._doLink(ComponentPort.java:1164)
at ptolemy.kernel.ComponentPort.liberalLink(ComponentPort.java:526)
at ptolemy.actor.IOPort.liberalLink(IOPort.java:2450)
at ptolemy.cg.lib.ModularCodeGenTypedCompositeActor.registerPublisherPort(ModularCodeGenTypedCompositeActor.java:920)
at ptolemy.actor.lib.Publisher.attributeChanged(Publisher.java:154)
at ptolemy.data.expr.Variable._setTokenAndNotify(Variable.java:1992)
at ptolemy.data.expr.Variable._evaluate(Variable.java:1646)
at ptolemy.data.expr.Variable._propagate(Variable.java:1732)
at ptolemy.data.expr.Variable.validate(Variable.java:1430)
at ptolemy.moml.MoMLParser.endDocument(MoMLParser.java:666)
at com.microstar.xml.XmlParser.doParse(XmlParser.java:162)
at com.microstar.xml.XmlParser.parse(XmlParser.java:132)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1418)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1374)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1530)
at ptolemy.actor.LazyTypedCompositeActor.populate(LazyTypedCompositeActor.java:773)
at ptolemy.cg.lib.ModularCodeGenTypedCompositeActor.populate(ModularCodeGenTypedCompositeActor.java:782)
at ptolemy.actor.LazyTypedCompositeActor.deepEntityList(LazyTypedCompositeActor.java:337)
at ptolemy.actor.Director.wrapup(Director.java:1345)
at ptolemy.actor.CompositeActor.wrapup(CompositeActor.java:2021)
at ptolemy.cg.lib.ModularCodeGenTypedCompositeActor.wrapup(ModularCodeGenTypedCompositeActor.java:1072)
at ptolemy.actor.Director.wrapup(Director.java:1350)
at ptolemy.actor.CompositeActor.wrapup(CompositeActor.java:2021)
at ptolemy.actor.Manager.wrapup(Manager.java:1379)
at ptolemy.actor.Manager.execute(Manager.java:384)
at ptolemy.actor.Manager.run(Manager.java:1162)
at ptolemy.actor.Manager$3.run(Manager.java:1215)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>702</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-08-22 10:46:38 -0700</bug_when>
<work_time>80.0</work_time>
<thetext>ModularCodeGen works inside a TypedComposite with Pub/Sub.
However
$PTII/bin/vergil $PTII/ptolemy/cg/lib/test/auto/ModularCodeGenLazyPubSubGlobal.xml
fails when opened and then run the first time.
The stack trace is
ptolemy.kernel.util.IllegalActionException: Failed to find a publisher to match &quot;AnotherChan.*&quot;
in .ModularCodeGenLazyPubSubGlobal.SubscriptionAggregator
at ptolemy.actor.CompositeActor.linkToPublishedPort(CompositeActor.java:1283)
at ptolemy.actor.lib.SubscriptionAggregator._updateLinks(SubscriptionAggregator.java:236)
at ptolemy.actor.lib.Subscriber.preinitialize(Subscriber.java:278)
at ptolemy.actor.Director.preinitialize(Director.java:998)
at ptolemy.actor.Director.preinitialize(Director.java:979)
at ptolemy.domains.sdf.kernel.SDFDirector.preinitialize(SDFDirector.java:640)
at ptolemy.actor.CompositeActor.preinitialize(CompositeActor.java:1664)
at ptolemy.actor.Manager.preinitializeAndResolveTypes(Manager.java:983)
at ptolemy.actor.Manager.initialize(Manager.java:643)
at ptolemy.actor.Manager.execute(Manager.java:340)
at ptolemy.actor.Manager.run(Manager.java:1164)
at ptolemy.actor.Manager$3.run(Manager.java:1217)
However, if the model is run the second time, then it works?
However, the model runs fine if I do:
1. $PTII/bin/vergil $PTII/ptolemy/cg/lib/test/auto/ModularCodeGenLazyPubSubGlobal.xml
2. Open the &quot;CompositeActor&quot;
3. Open the &quot;ModularCodeGenTypedCompositeActor&quot;
4. Hit the run button.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>707</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-08-25 14:56:57 -0700</bug_when>
<work_time>6.0</work_time>
<thetext>Fixed by Dai!
I wrote:
&gt; ModularCodeGen works inside a TypedComposite with Pub/Sub.
&gt; &gt;&gt;
&gt; &gt;&gt; However
&gt; &gt;&gt; $PTII/bin/vergil
&gt; &gt;&gt; $PTII/ptolemy/cg/lib/test/auto/ModularCodeGenLazyPubSubGlobal.xml
&gt; &gt;&gt; fails when opened and then run the first time.
&gt; &gt;&gt;
&gt; &gt;&gt; The stack trace is
&gt; &gt;&gt; ptolemy.kernel.util.IllegalActionException: Failed to find a publisher to match
&gt; &gt;&gt; &quot;AnotherChan.*&quot;
&gt; &gt;&gt; in .ModularCodeGenLazyPubSubGlobal.SubscriptionAggregator
&gt; &gt;&gt; at
&gt; &gt;&gt; ptolemy.actor.CompositeActor.linkToPublishedPort(CompositeActor.java:1283)
&gt; &gt;&gt; at
&gt; &gt;&gt; ptolemy.actor.lib.SubscriptionAggregator._updateLinks(SubscriptionAggregator.java:236)
&gt; &gt;&gt; at ptolemy.actor.lib.Subscriber.preinitialize(Subscriber.java:278)
&gt; &gt;&gt; at ptolemy.actor.Director.preinitialize(Director.java:998)
&gt; &gt;&gt; at ptolemy.actor.Director.preinitialize(Director.java:979)
&gt; &gt;&gt; at
&gt; &gt;&gt; ptolemy.domains.sdf.kernel.SDFDirector.preinitialize(SDFDirector.java:640)
&gt; &gt;&gt; at ptolemy.actor.CompositeActor.preinitialize(CompositeActor.java:1664)
&gt; &gt;&gt; at ptolemy.actor.Manager.preinitializeAndResolveTypes(Manager.java:983)
&gt; &gt;&gt; at ptolemy.actor.Manager.initialize(Manager.java:643)
&gt; &gt;&gt; at ptolemy.actor.Manager.execute(Manager.java:340)
&gt; &gt;&gt; at ptolemy.actor.Manager.run(Manager.java:1164)
&gt; &gt;&gt; at ptolemy.actor.Manager$3.run(Manager.java:1217)
&gt; &gt;&gt;
&gt; &gt;&gt; However, if the model is run the second time, then it works?
&gt; &gt;&gt;
&gt; &gt;&gt;
&gt; &gt;&gt; However, the model runs fine if I do:
&gt; &gt;&gt; 1. $PTII/bin/vergil
&gt; &gt;&gt; $PTII/ptolemy/cg/lib/test/auto/ModularCodeGenLazyPubSubGlobal.xml
&gt; &gt;&gt; 2. Open the &quot;CompositeActor&quot;
&gt; &gt;&gt; 3. Open the &quot;ModularCodeGenTypedCompositeActor&quot;
&gt; &gt;&gt; 4. Hit the run button.
&gt;</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>35</attachid>
<date>2010-05-05 11:32:36 -0700</date>
<delta_ts>2010-05-05 11:32:36 -0700</delta_ts>
<desc>ModularCodeGen model that fails because it is inside a TypedComposite</desc>
<filename>ModularCodeGenPubSubAggLazy3SubH.xml</filename>
<type>text/xml</type>
<size>13378</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340162-HGdliAx439b2I3tVvqRE7aa-CYlxNGIXrp2uMLusxJg</token>
</attachment>
</bug>
<bug>
<bug_id>226</bug_id>
<creation_ts>2008-12-22 21:03:04 -0800</creation_ts>
<short_desc>Width inference is triggered too early by Distributor</short_desc>
<delta_ts>2008-12-23 16:32:53 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows Server 2003</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162--ymqzQ7_j2oCrrSj0t-2xLYvM99c5MHbDCbhvJbQZHs</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>382</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-12-22 21:03:04 -0800</bug_when>
<thetext>ptolemy.actor.lib.Distributor.connectionsChanged will trigger the width inference of relations. This is typically when the user is still creating his model.
To reproduce this:
remove
&lt;property name=&quot;width&quot; class=&quot;ptolemy.data.expr.Parameter&quot; value=&quot;1&quot;&gt;
&lt;/property&gt;
from test MoMLParser-6.4 or MoMLParser-6.5. In this case the widths can no longer be uniquely determined and hence an exception is thrown.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>346</bug_id>
<creation_ts>2010-05-07 10:53:16 -0700</creation_ts>
<short_desc>Modular Codegen models that have Pub/Subs with widths other than 1 have problems</short_desc>
<delta_ts>2010-08-25 14:58:27 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Codegen</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>80.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>66.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-mmRwJeg-mfjDm6OnLmDcntdFUCdkDwm_ztAlUxIW3_c</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>692</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-07 10:53:16 -0700</bug_when>
<thetext>I&apos;ve see problmes with Modular Codegen pub/sub models that have a Publisher
with multiple Subscribers outside the ModularCodeGenTypedAtomicActor.
We need some test cases that illustrate this common scenario.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>703</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-08-22 11:27:58 -0700</bug_when>
<work_time>60.0</work_time>
<thetext>$PTII/bin/vergil /Users/cxh/ptII/ptolemy/cg/lib/test/auto/PubSubAggTypedCompositeWidth2.xml
fails with
ptolemy.actor.TypeConflictException: Types resolved to unacceptable types in .PubSubAggTypedCompositeWidth2 due to the following inequalities:
(ptolemy.actor.TypedIOPort {.PubSubAggTypedCompositeWidth2.CompositeActor.SubscriptionAggregator2.input}, unknown) &lt;= (ptolemy.actor.TypedIOPort {.PubSubAggTypedCompositeWidth2.CompositeActor.SubscriptionAggregator2.output}, unknown)
(ptolemy.actor.TypedIOPort {.PubSubAggTypedCompositeWidth2.CompositeActor.SubscriptionAggregator2.output}, unknown) &lt;= (ptolemy.actor.TypedIOPort {.PubSubAggTypedCompositeWidth2.CompositeActor.Test2.input}, unknown)
at ptolemy.actor.TypedCompositeActor.resolveTypes(TypedCompositeActor.java:324)
at ptolemy.actor.Manager.resolveTypes(Manager.java:1113)
at ptolemy.actor.Manager.preinitializeAndResolveTypes(Manager.java:995)
at ptolemy.actor.Manager.initialize(Manager.java:643)
at ptolemy.actor.Manager.execute(Manager.java:340)
at ptolemy.actor.Manager.run(Manager.java:1164)
at ptolemy.actor.Manager$3.run(Manager.java:1217)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>708</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-08-25 14:58:27 -0700</bug_when>
<work_time>6.0</work_time>
<thetext>Fixed by Dai!</thetext>
</long_desc>
</bug>
<bug>
<bug_id>36</bug_id>
<creation_ts>2006-07-27 16:04:21 -0700</creation_ts>
<short_desc>Compare Expression vs AddSubtract Performance</short_desc>
<delta_ts>2006-08-03 17:03:04 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Performance</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-xO07uoI4d-oo44JqOrBv6tD08zDSYUFOzZz_ADHGNmc</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>48</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 16:04:21 -0700</bug_when>
<thetext>It would be interesting to compare Expression vs AddSubtract performance.
(From the July Rome AFRL Visit)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>62</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-08-03 17:03:04 -0700</bug_when>
<thetext>The executive summary is that AddSubtract is about 20% faster than
Expression in my simple test case.
I created two models in $PTII/ptolemy/actor/lib/test/performance
that consist of
Ramp ----&gt;
AddSubtract ---&gt; Discard
Ramp ----&gt;
and
Ramp ----&gt;
Expression ---&gt; Discard
Ramp ----&gt;
Where the Ramps are producing integers.
When I run the models, I run for 100k iterations and
I throw away the data from the first run when computing the average time.
I get:
AddSubtractPerformance.xml: Average time of 2 through 5 runs: 696 ms.
ExpressionPerformance.xml: Average time of 2 through 5 runs: 866 ms.
This means that in this extreme case AddSubtract runs about 20% faster
than Expression when adding two integers.
Below is a sample run with Integers on my laptop using
MoMLSimpleApplication:
bash-3.1$ make
make runModel MODEL=AddSubtractPerformance.xml
make[1]: Entering directory `/cygdrive/c/cxh/pt
II/ptolemy/actor/lib/test/performance&apos;
Run AddSubtractPerformance.xml 5 times
721 ms. Memory: 1984K Free: 1155K (58%)
701 ms. Memory: 1984K Free: 1155K (58%)
691 ms. Memory: 1984K Free: 1155K (58%)
691 ms. Memory: 1984K Free: 1155K (58%)
701 ms. Memory: 1984K Free: 1155K (58%)
AddSubtractPerformance.xml: Average time of 2 through 5 runs: 696 ms.
make[1]: Leaving directory `/cygdrive/c/cxh/pt
II/ptolemy/actor/lib/test/performance&apos;
make runModel MODEL=ExpressionPerformance.xml
make[1]: Entering directory `/cygdrive/c/cxh/pt
II/ptolemy/actor/lib/test/performance&apos;
Run ExpressionPerformance.xml 5 times
872 ms. Memory: 1984K Free: 1601K (81%)
881 ms. Memory: 1984K Free: 1601K (81%)
861 ms. Memory: 1984K Free: 1601K (81%)
861 ms. Memory: 1984K Free: 1601K (81%)
861 ms. Memory: 1984K Free: 1601K (81%)
ExpressionPerformance.xml: Average time of 2 through 5 runs: 866 ms.
make[1]: Leaving directory `/cygdrive/c/cxh/pt
II/ptolemy/actor/lib/test/performance&apos;
bash-3.1$
Changing the step to doubles increases the time slightly but
not that much
AddSubtract Expression AddSubtract/Expression
Integers 696 866 0.804
Integers 693.5 ms 856.25 ms 0.809
Integers 703.5 883.75 0.796
Doubles 711 883.75 0.805
Doubles 708 874 0.810
Doubles 701 878.5 0.798
This is basically a worst case situation, where we are attempting
to run the models flat out.
I ran the C code generator on these models and I get
times of 50ms for AddSubtract and 60ms for Expression, a speed
up on the order of 15x.
bash-3.1$ time ./AddSubtractPerformance.exe
real 0m0.050s
user 0m0.030s
sys 0m0.030s
bash-3.1$ time ./ExpressionPerformance.exe
real 0m0.060s
user 0m0.020s
sys 0m0.050s
Of course, the problem here is that the accuracy of the Windows
clock is pretty small. To get really good numbers, we should increase
the number of iterations.
We could do more here, like profiling, but would be a separate bug.
_Christopher
&quot;There are lies, damn lies and statistics&quot;
- Mark Twain
</thetext>
</long_desc>
</bug>
<bug>
<bug_id>37</bug_id>
<creation_ts>2006-07-27 16:07:06 -0700</creation_ts>
<short_desc>Extend Wireless Channels to work with other domains</short_desc>
<delta_ts>2006-07-27 16:07:06 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Wireless</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-bQErFJE_eSnx8CG_WtyOrIVIsWiZNeHlVwP6BzSG6wM</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>49</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 16:07:06 -0700</bug_when>
<thetext>Look into implementing a mechanism for Wireless that does not
require the Discrete Event Domain (so it can handle other domains).
(From the July Rome AFRL Visit)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>217</bug_id>
<creation_ts>2008-11-25 18:02:04 -0800</creation_ts>
<short_desc>exportMoML() does not support level crossing links</short_desc>
<delta_ts>2012-05-18 12:23:44 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>kernel</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P1</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<blocked>165</blocked>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-hi4QHnwS0fYbdkqdZkflxGW-4fRh__ph8pK0vBgpdKk</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>367</commentid>
<comment_count>0</comment_count>
<attachid>24</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-11-25 18:02:04 -0800</bug_when>
<thetext>Created attachment 24
Tcl test that illustrates problem with exportMoML and level crossing links
If I create a model that has an inner transparent composite that has an actor
with a level crossing link to an actor in the top level, then the model
runs, and exporting the moml works, but trying to reload the moml fails because
the inner composite is parsed first and it refers to a relation in the top
level that does not yet exist.
The parse fails with:
com.microstar.xml.XmlException: No relation named &quot;.top._R&quot; in .top.e1 in file:/Users/cxh/ptII/ptolemy/moml/test/ at line 51 and column 8
at ptolemy.moml.MoMLParser._checkForNull(MoMLParser.java:3685)
at ptolemy.moml.MoMLParser._processLink(MoMLParser.java:5842)
at ptolemy.moml.MoMLParser.access$700(MoMLParser.java:204)
at ptolemy.moml.MoMLParser$LinkRequest.execute(MoMLParser.java:6899)
at ptolemy.moml.MoMLParser._processPendingRequests(MoMLParser.java:6010)
at ptolemy.moml.MoMLParser.endElement(MoMLParser.java:911)
The offending line is:
&lt;link port=&quot;ramp.output&quot; relation=&quot;.top._R&quot;/&gt;
The problem is that the relation is not declared until the very end:
&lt;link port=&quot;rec.input&quot; relation=&quot;_R&quot;/&gt;
I also tried placing the relation inside the inner composite:
$e1 connect \
[java::field [java::cast ptolemy.actor.lib.Source $ramp] output] \
[java::field [java::cast ptolemy.actor.lib.Sink $rec] input]
and that failed with:
while executing
com.microstar.xml.XmlException: No relation named &quot;.top.e1._R&quot; in .top in file:/Users/cxh/ptII/ptolemy/moml/test/ at line 65 and column 4
If I take the output and change:
&lt;link port=&quot;rec.input&quot; relation=&quot;.top.e1._R&quot;/&gt;
to
&lt;link port=&quot;rec.input&quot; relation=&quot;e1._R&quot;/&gt;
ptolemy.kernel.util.IllegalActionException: Link crosses levels of the hierarchy
in .top.rec.input and .top.e1._R
So, it appears that there is no way for MoML to represent models that have
level crossing links?</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>368</commentid>
<comment_count>1</comment_count>
<attachid>25</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-11-25 18:04:55 -0800</bug_when>
<thetext>Created attachment 25
MoML file with level crossing link
This file was created by the test case and has a level crossing link.
It fails to parse.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>514</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-04-14 10:05:40 -0700</bug_when>
<thetext>Edward suggests a solution:
1) MoMLParser needs to detect when a link crosses levels and use the
liberalLink method instead of the link() method.
2) When exporting MoML a level crossing link needs to be exported at
the lowest common container (or the top level?). The idea is that
the level crossing link is created after the two ports and their
containers are created.
Edward proposes this MoML file as an example of the solution:
?xml version=&quot;1.0&quot; standalone=&quot;no&quot;?&gt;
&lt;!DOCTYPE entity PUBLIC &quot;-//UC Berkeley//DTD MoML 1//EN&quot;
&quot;http://ptolemy.eecs.berkeley.edu/xml/dtd/MoML_1.dtd&quot;&gt;
&lt;entity name=&quot;foo&quot; class=&quot;ptolemy.kernel.CompositeEntity&quot;&gt;
&lt;entity name=&quot;A&quot; class=&quot;ptolemy.kernel.CompositeEntity&quot;&gt;
&lt;entity name=&quot;Ramp&quot; class=&quot;ptolemy.kernel.CompositeEntity&quot;&gt;
&lt;port name=&quot;P&quot; class=&quot;ptolemy.kernel.ComponentPort&quot;/&gt;
&lt;/entity&gt;
&lt;/entity&gt;
&lt;entity name=&quot;B&quot; class=&quot;ptolemy.kernel.CompositeEntity&quot;&gt;
&lt;entity name=&quot;Ramp&quot; class=&quot;ptolemy.kernel.CompositeEntity&quot;&gt;
&lt;port name=&quot;P&quot; class=&quot;ptolemy.kernel.ComponentPort&quot;/&gt;
&lt;/entity&gt;
&lt;/entity&gt;
&lt;relation name=&quot;R&quot; class=&quot;ptolemy.kernel.ComponentRelation&quot;/&gt;
&lt;link port=&quot;A.Ramp.P&quot; relation=&quot;R&quot;/&gt;
&lt;link port=&quot;B.Ramp.P&quot; relation=&quot;R&quot;/&gt;
&lt;/entity&gt;</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>515</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-04-14 15:07:58 -0700</bug_when>
<thetext>Making this P1 so that models can be partially parsed and stored, which will
improve startup time.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>527</commentid>
<comment_count>4</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-04-24 12:34:59 -0700</bug_when>
<thetext>Edward wrote:
I&apos;ve just checked in a change to ptolemy.kernel.ComponentPort
so that a MoML file with level-crossing links can be read correctly.
Specifcally, MoML files like the one attached can now be opened
in Vergil.
Note that once it is opened, there are some issues:
1) The level-crossing links are not shown.
2) If you save it, the resulting MoML is incorrect and cannot be
re-opened.
I&apos;ll address problem (2) next. I&apos;m not sure what to do about
problem 1. Probably we need some sort of visual indication
that there is a level-crossing link there. Perhaps it should
show the full name of the destination?</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>561</commentid>
<comment_count>5</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-06-22 15:11:34 -0700</bug_when>
<thetext>Marking this as assigned, can we close it?</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>941</commentid>
<comment_count>6</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-05-18 12:23:44 -0700</bug_when>
<thetext>exportMoML() has supported level crossing links for some time.
I updated moml/test/LevelCrossingLinkTest.tcl to illustrate this fact.</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>24</attachid>
<date>2008-11-25 18:02:04 -0800</date>
<delta_ts>2008-11-25 18:02:04 -0800</delta_ts>
<desc>Tcl test that illustrates problem with exportMoML and level crossing links</desc>
<filename>LevelXing.tcl</filename>
<type>application/octet-stream</type>
<size>1206</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340162-jXAIu1ORu2dDfOv1R3dTDS6j2MDoM_rFd6nzzVq3HMI</token>
</attachment>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>25</attachid>
<date>2008-11-25 18:04:55 -0800</date>
<delta_ts>2008-11-25 18:04:55 -0800</delta_ts>
<desc>MoML file with level crossing link</desc>
<filename>LevelCrossingLink.xml</filename>
<type>text/xml</type>
<size>3232</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340162-R4NPdEZfX_Vfy_Jp8O1CZ8oNfHSijNMdYncu4dGMEfg</token>
</attachment>
</bug>
<bug>
<bug_id>22</bug_id>
<creation_ts>2006-07-27 14:43:37 -0700</creation_ts>
<short_desc>Should not need relation black diamonds</short_desc>
<delta_ts>2009-04-06 19:10:42 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P1</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>bert.rodiers@gmail.com</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>24.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-MHICpNTiM5ZwnPcCX_8I9NbQjCiGZwqe5Mx6wrMAZhY</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>34</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 14:43:37 -0700</bug_when>
<thetext>If I have a link and want to add another link to the middle, I
should not have to do as much redrawing.
Currently I have to:
1. Select the link and delete it
2. create a relation
3. drag from one port to the relation
4. drag from another port to the relation
5. drag from the new port to the relation.
In the perfect world, we could just drag the end point of the new
link to the old link and the relation would magically appear.
Another possibility would be to right click on the link and have
at automagically split into two links with a relation.
(From the July Rome AFRL Visit)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>241</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-20 12:36:38 -0700</bug_when>
<thetext>Ian Brown writes:
&gt; Ability to split a relationship line. Currently if you have 2 actors
&gt; wired together and you want to add a 3rd (e.g. a scope or a monitor)
&gt; you need to delete the existing line, ctrl-click to add a relationship
&gt; and then re-add the required 3 links. It would be nice to ctrl-click
&gt; on an existing link and it to automatically insert a relationship
&gt; triangle in that link (i.e. automate the deletion of the existing
&gt; link, addition of the new relationship diamond and then the creation
&gt; of the new 2 links). An extension could then allow ctrl-click + drag
&gt; to split an existing link and automatically start dragging a new link
&gt; from the split point. This is one of the major things missing from
&gt; Vergil that makes it harder to work with than Simulink.
This issue was also raised by Rome AFRL. I&apos;ve raised its priority.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>363</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-10-27 14:16:25 -0700</bug_when>
<thetext>Ian Brown mentioned this again:
&quot;A method to add a connection to an existing wire would be useful. Currently you
need to delete the existing wire, add a diamond and then connect 3 new wires to
it. If the original wire was connected to a multi-input port of say a switch, the
ordering will now be messed up and you&apos;ll need to delete all the wires going to
the multi-port of the switch and then re-add them all in the desired order.&quot;
I agree that this is annoying.
This is currently a P1 enhancement, we should see about doing this before 8.0.
See also
https://chess.eecs.berkeley.edu/bugzilla/show_bug.cgi?id=23
Multiport ordering problems: How do I change one connection?
Need to change visual order of ports to untangle wiring
https://chess.eecs.berkeley.edu/bugzilla/show_bug.cgi?id=146</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>369</commentid>
<comment_count>3</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-12-04 22:24:51 -0800</bug_when>
<thetext>I looked at this problem, but couldn&apos;t find a satisfying solution yet. The difficulty is that in a general solutions you can&apos;t just delete the existing link since then the order of the links at a multiport will change and hence you get a different behavior. I tried to change the model without removing the link, by using the relation of the existing link as the relation of the new link and using the existing link as the tail of the new link. The resulting resulting moml is what one would expect and hence works as expected, however the visual model is wrong. If you save this model and open it again a new relations diamond is drawn at position 0,0. Adding the diamond at the right location also looks non-trivial. Where it makes sense to me to add the vertex, the location of the mouse snap is no longer available. In comparison with the other issue, this is however a minor one.
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>370</commentid>
<comment_count>4</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-12-05 12:12:21 -0800</bug_when>
<thetext>Edward writes:
&gt; Bert,
&gt;
&gt; The solution here may lie with the MoML construct:
&gt;
&gt; &lt;link port=&quot;portname&quot; relation=&quot;r&quot; insertAt=&quot;indexNumberHere&quot;/&gt;
&gt;
&gt; This ultimately uses the CrossRefList method:
&gt;
&gt; insertLink(int index, CrossRefList farList)
&gt;
&gt; This is exposed by the Port method:
&gt;
&gt; insertLink(int index, Relation relation)
&gt;
&gt;
&gt; It may be easier to implement this using Java API calls
&gt; directly rather than MoML, but the challenge with that is
&gt; getting undo to work properly...
&gt;
&gt; Edward </thetext>
</long_desc><long_desc isprivate="0" >
<commentid>387</commentid>
<comment_count>5</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-01-14 16:36:55 -0800</bug_when>
<thetext>It is now possible to link with an existing link.
If this existing link has a vertex as head or tail, we will connect with the vertex, otherwise we will remove the old link, create a new vertex, link the head and tail of the existing link with the vertex and link the new link with the vertex.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>39</bug_id>
<creation_ts>2006-07-27 16:38:30 -0700</creation_ts>
<short_desc>Nightly build should produce jar files</short_desc>
<delta_ts>2008-03-20 23:54:57 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>build system</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-IIC4PrwO9OzPLgGWJVQ1NEw_6rou-zPfU0R42yQCIZI</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>56</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 16:38:30 -0700</bug_when>
<thetext>The nightly build should make jar files available</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>247</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-20 23:54:57 -0700</bug_when>
<thetext>http://chess.eecs.berkeley.edu/ptexternal/nightly/ contains:
A Windows installer
A tar file containing source files
A tar file containing jar files
So, this bug can be closed.
Note that there is a separate bug https://chess.eecs.berkeley.edu/bugzilla/show_bug.cgi?id=139
for converting to SVN so that people behind firewalls can get access.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>40</bug_id>
<creation_ts>2006-07-27 16:42:10 -0700</creation_ts>
<short_desc>Extend applet code generator to generate Web Start files</short_desc>
<delta_ts>2012-03-29 19:47:46 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Codegen</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P1</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>40.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>20.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-8ivFZQdg7J-bIwa2cfO9Mv4OcDcQKl8WTyr2BsbIeF4</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>57</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 16:42:10 -0700</bug_when>
<thetext>The applet code generator has a start on features to generate Web Start
files, we should complete it.
(From the July Rome AFRL Visit)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>502</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-04-06 19:09:10 -0700</bug_when>
<work_time>20.0</work_time>
<thetext>I posted the following to the ptdevel internal list, I&apos;m reposting it here
for the record.
I modified the copernicus applet generation facility to also generate
Web Start JNLP files. The reason I started with the copernicus applet
facility is because it already has code that manages some of the
package dependencies. This code is primitive, it just looks for
actors such as the colt actors and includes required jar files such
as lib/ptcolt.jar. The code uses the Soot command line handling
features, but does not use any of Soot&apos;s byte code analysis, so it
could easily be moved away from Copernicus.
The way signed JNLP applications work is that a .jnlp file is created
and then added to a jar file and the jar file is signed. I added
code that does this, though the signing facility has hardwired paths
in it (this can be easily fixed). At run time, the browser or
the javaws program is pointed to a standalone .jnlp file that includes
a reference to the signed jar file that contains a copy of the
.jnlp file. The signed jar is read and verified and then the .jnlp
within the signed jar is read. Then, other jar files are read
and the application is started.
So, what I can do now is: given a model, create a jnlp file and signed
jar files in a separate directory. Visiting this file with javaws
works. This is good.
Below are some restrictions:
* On the Mac, the Java 1.5.0 javaws binary segfaults?
However, the Java 1.6.0 javaws binary works.
Also, I can open the jnlp file from within Firefox on the Mac.
* In Java 1.6.0_10 and later, there are many enhancements to
Web Start including the ability to use relative codebases in the
.jnlp file. We would need this if we wanted to make it so that
if a user downloads a release that they can visit the jnlp files
and run the models - no matter where they downloaded the release.
* Unfortunately, the Mac has Java 1.6.0_08, not _10, so we
don&apos;t have these jnlp/applet facilities.
For publishing purposes, I believe we could create a directory
on the web server that contains the jar file and then we could
create .jnlp files for the models. I&apos;ll try creating .jnlp files
for a few of the demos and see if I can get this to work on the website.
BTW - I looked at using Maven to generate .jnlp files because I
did not want to have to write the code that signs files. I spent
a few hours looking at Maven and was finally able to create
a jnlp file. I then realized that the next step was to create
entries into the Maven pom.xml for each make jar file. This
could be done somewhat automatically using a tool similar
to the one I created for making OSGi bundles. I decided that
this seemed like busy-work that would be thrown away as we
moved to OSGi bundles. Instead, I spent a couple hours
working on code that creates the jnlp file and signs it.
All and all, Maven is ok except:
* One project file manages the entire project. There might be
away to split this up somehow, but it seems like the pom.xml
file has to have entries for all the modules of a file.
This is bad because it is better if each small module has
a local file that describes what is needed instead of
one master file. The reasons are:
- The local file tends to get updated, the master file
will be ignored and accumulate cruft.
- Version control clashes are likely on a large file
- Moving code around is easier when everything is in
one place.
I&apos;m calling this the &quot;One file rule them all&quot; problem
after Tolkien&apos;s Lord of the Rings. Every project should
have one file, but that file should be very small and
delegate to groups of modules.
* One of Maven&apos;s claims to fame is that it has a standard
layout for projects. This is great if you like their
choices, but their choice make little sense for Ptolemy,
where we consider the source code to be a form of publication
and something that is shipped and should be read by the user.
I was able to set up the Maven to use our layout, but &quot;mvn clean&quot;
removed the contents of $PTII! So, more work would be needed.
* Some of the Maven messages are very unclear, but part
of that is common to any new tool.
I think what we need is a simple command-line tool that
will handle the OSGi bundles. I&apos;m not yet sure what
tool that will be.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>685</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-05 12:14:58 -0700</bug_when>
<thetext>This is mostly complete, but still only usable by Christopher.
To complete this, we need better instructions on how to deploy Web Start
onto a server. The measure of success would be that give a set of models,
Edward should be able to deploy them onto the Ptolemy website.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>905</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-03-29 19:47:46 -0700</bug_when>
<thetext>Closing this because the Applet Code Generator can now generate Web Start Files. See
http://chess.eecs.berkeley.edu/ptexternal/wiki/Main/HTMLExport</thetext>
</long_desc>
</bug>
<bug>
<bug_id>156</bug_id>
<creation_ts>2008-03-20 13:37:24 -0700</creation_ts>
<short_desc>Review DE Domain actors</short_desc>
<delta_ts>2008-03-20 13:37:24 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>DE</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-RF26r-Zngcy2zpvAkXlKkAYQIcnHjmvTqoQzpMuDw_Y</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>246</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-20 13:37:24 -0700</bug_when>
<thetext>Ian Brown writes:
&gt; Many of the DE Domain actors are of the &apos;red&apos; status
&gt; (proposed / accepted status fields).
&gt; These should be reviewed to a &apos;green&apos; status.
The status of DE actors can be found at
http://chess.eecs.berkeley.edu/ptexternal/nightly/coverage.html#ptolemy.domains.de.lib
Red actors include:
EventButton.java - used very little, should be moved to de/lib/gui, which
does not exist yet.
NonInterruptibleTimer.java
Previous.java
Register.java
SingleEvent.java
TimeGap.java
UnionMerge.java
Wire.java
All the other actors, except for Merge, are yellow. Merge is Green.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>26</bug_id>
<creation_ts>2006-07-27 14:55:40 -0700</creation_ts>
<short_desc>Write tests for liberal links</short_desc>
<delta_ts>2007-05-22 11:44:14 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>kernel</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162--JgpWoY0hhGlElNOROLr1pki8zZpakZjUgmyB7I9dIw</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>38</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 14:55:40 -0700</bug_when>
<thetext>Liberal links should work if you have a single SDF director at the
top level. (no opaque composite actor with other domains).
(From the July Rome AFRL Visit)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>113</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-05-22 11:44:14 -0700</bug_when>
<thetext>I added an explicit test for a simple model that uses liberal links
to sdf/test/composition.tcl. Liberal links are also tested by the
Publisher/Subscriber demos, but adding a simple test helps here.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>27</bug_id>
<creation_ts>2006-07-27 14:57:59 -0700</creation_ts>
<short_desc>Check sizes and locations of subcomponents</short_desc>
<delta_ts>2008-04-28 17:53:54 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>ASSIGNED</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>25.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-Tzt8C-UCfLNBnBu4nX2kx2HWn08AiIlVfhnb5VO20lI</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>39</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 14:57:59 -0700</bug_when>
<thetext>The sizes and locations of subcomponents needs to be checked.
For example, MaximumEntropySpectrum contains references to
TypedCompositeActors that are located off screen.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>265</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-04-28 17:53:54 -0700</bug_when>
<work_time>25.0</work_time>
<thetext>The about facility now checks for the centering of submodels.
The remaining problem is that some of the gt demos do not appear to be
centered.
For example
1. cd $PTII/ptolemy/actor/gt/demo/ConstOptimization
2. $PTII/bin/vergil ConstOptimization.xml
3. Right click on the OptimizeOnce actor, select Open Actor
4. The GT editor comes up and the &quot;pattern&quot; tab is open
5. click on the &quot;Zoom Reset&quot; arrow.
6. The model jumps up a few pixes.
7. File | Save
8. Exit
9. Rerun steps 2 -&gt;5. The model gets recentered again,
even though we saved it.
</thetext>
</long_desc>
</bug>
<bug>
<bug_id>29</bug_id>
<creation_ts>2006-07-27 15:49:01 -0700</creation_ts>
<short_desc>Need to be able to listen to ports on composite transparent actors and actor classes</short_desc>
<delta_ts>2009-04-06 18:52:10 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P1</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-noehVqnmm8hui4qFdjJCDVtPTIiW6C0EqG7zZcNyT7w</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>41</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 15:49:01 -0700</bug_when>
<thetext>We need to be able to listen to ports on Composite Transparent Actor
and Actor Classes.
One way to do this would be to delegate the listen to the inside ports.
(From the July Rome AFRL Visit)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>30</bug_id>
<creation_ts>2006-07-27 15:50:24 -0700</creation_ts>
<short_desc>Highlight actors that have errors</short_desc>
<delta_ts>2010-08-22 08:35:04 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P1</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>8.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>17.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-Taju990aB67tbmB_peAq8Vv8uY6OPu8_sd_IKBr8yBA</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>42</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 15:50:24 -0700</bug_when>
<thetext>If you get an error, highlight the block.
In the first stack trace window, have a button to
open the composite actor that contains the offending actor.
(From the July Rome AFRL Visit)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>270</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-04-29 10:14:42 -0700</bug_when>
<thetext>Edward has highlighting of errors set up, the next step is to
add a button to the stack trace window that opens composite actor that
threw the exception.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>281</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-11 15:19:34 -0700</bug_when>
<thetext>Anything that is a subclass of KernelException should have a NamedObj
associated with it. The tricky part is to look up the hierarchy until
something is found that can be opened.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>499</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-04-06 18:45:11 -0700</bug_when>
<work_time>12.0</work_time>
<thetext>To close this we need to augment the stack trace window so that it
has a button that brings up the composite that contains the actor with
the error.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>670</commentid>
<comment_count>4</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-04 17:47:21 -0700</bug_when>
<thetext>From the April, 2010 visit:
&quot;Error Dialog Improvements - Add in a &quot;go to&quot; button, which
would open the container of the actor that was responsible for
throwing an error.&quot;</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>700</commentid>
<comment_count>5</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-08-22 08:35:04 -0700</bug_when>
<work_time>5.0</work_time>
<thetext>Added protected methods to parent MessageHandler classes and created ActorGraphicalMessageHandler that handles KernelException and KernelRuntimeException.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>31</bug_id>
<creation_ts>2006-07-27 15:51:48 -0700</creation_ts>
<short_desc>Disable MonitorValue and Display updates with a shared parameters</short_desc>
<delta_ts>2009-04-06 18:52:49 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P1</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-SNSq1NM6KUHh7WppIS9elJYOim965vht4aL15l3Xt20</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>43</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 15:51:48 -0700</bug_when>
<thetext>It would be nice if it was easy to disable MonitorValue and Display
updates with shared parameters so that models can run more quickly.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>227</bug_id>
<creation_ts>2008-12-22 21:06:43 -0800</creation_ts>
<short_desc>The nightly build should also run on Windows machines</short_desc>
<delta_ts>2008-12-22 21:06:43 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>build system</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows Server 2003</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P1</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-sPdozic6gD-Nynxux55vRFfmxZN6doslg57UPoHK6ms</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>383</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-12-22 21:06:43 -0800</bug_when>
<thetext>There are a lot of tests that fail only on Windows machines due to a different file system. Doing a nightly build regularly on such machines allows to keep track of those kind of problems.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>32</bug_id>
<creation_ts>2006-07-27 15:53:37 -0700</creation_ts>
<short_desc>Create ArrayUpdateElement, which updates the element of an array.</short_desc>
<delta_ts>2012-05-18 12:00:41 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P1</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-s3m3LQ6UERSczmhkZZ2SIdBzLGHhRyJPIAPOSJ_HJbE</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>44</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 15:53:37 -0700</bug_when>
<thetext>ArrayUpdateElement: All tokens are immutable, including the value of
elements. We need an actor that will update the element of an ArrayToken.
Edward wrote:
&gt; However, it looks like both the expression language and the actor
&gt; library are a bit impoverished in mechanisms for constructing new
&gt; arrays. Probably, we need something like:
&gt;
&gt; {1, 2, 3}.setElement(0, 4)
&gt;
&gt; which would yield a new array.
&gt;
&gt; {4, 2, 3}
&gt;
&gt; Then we need a corresponding actor...</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>902</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-03-29 17:19:05 -0700</bug_when>
<thetext>Done.
On 2/22, Edward wrote:
&quot;Patricia, Chris Shaver, and I have developed a starting
point for a much smarter way of handling arrays in dataflow
models...&quot;
&quot;In particular, there is now in the Array library an ArrayUpdate
actor, whose output is the same array as its input except that
one element is replaced with a new value.&quot;
...
&quot;The key here is that this is done efficiently for large arrays.
The input array does not get copied. Instead, the output array
references the input array and encodes the diff. The input
array is unchanged, and hence may be used safely by other
actors to which it is destined without introducing nondeterminacy.&quot;
&quot;This is only a starting point because there are many other array
operations that should be similarly encoded as diffs. There is
a bit of work to be done here, and we need to make sure to be
measuring performance effects.&quot;
&quot;The current implementation has the interesting property that
makes copying arrays unnecessary most of the time. However, it has
the unfortunate side effect of making copying arrays more expensive
(we can no longer use the low-level System.arraycopy() mechanism
in Java). It would be interesting to do a systematic performance
evaluation of this. I believe that if we combine this method
with a PN director and a manycore machine, that we might get
good utilization of parallelism on the machine.&quot;</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>903</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-03-29 17:20:19 -0700</bug_when>
<thetext>I&apos;m reopening this because we don&apos;t have anything in the expression language
to support updating an array element.
Edward wrote:
&gt; Probably, we need something like:
&gt;
&gt; {1, 2, 3}.setElement(0, 4)
&gt;
&gt; which would yield a new array.
&gt;
&gt; {4, 2, 3}</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>940</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-05-18 12:00:41 -0700</bug_when>
<thetext>Closing this bug because we now have an ArrayUpdate actor and
the ArrayToken update method works:
&gt;&gt; {1, 2, 3}.update(0, 4)
{4, 2, 3}
I also updated the expressions.tex file for the Ptolemy book and the
expressiona5.htm file that we include in the devel tree.
(expressionsa5.htm will eventually get updated from the Ptolemy book.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>13</bug_id>
<creation_ts>2006-05-08 14:17:24 -0700</creation_ts>
<short_desc>Multiport links have head and tail problems.</short_desc>
<delta_ts>2006-11-03 15:00:13 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>6.0-devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>blocker</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-2dfPHsxZM-K2C0tDrg4q3o7OoytxXK6pj4xdE2ySVcM</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>25</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-05-08 14:17:24 -0700</bug_when>
<thetext>If you connect a link to a muliport, and then move an end
of the link, sometimes the other end moves instead.
How to reproduce:
1. Start PtII 6.0-devel
2. File -&gt; New -&gt; Graph Editor
3. Drag a Display actor (which has a multiport)
4. Drag a Ramp actor (which does not have a multiport)
5. Connect from the Ramp to the Display
6. Click on the blue box at the Display in an attempt
to move it.
7. ERROR: the endpoint at the Ramp moves?
Edward suggested that this happens only with multiports.
The problem does not occur in PtII 5.0.1 Windows Installer version.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>52</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 16:20:52 -0700</bug_when>
<thetext>*** Bug 33 has been marked as a duplicate of this bug. ***</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>54</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 16:22:32 -0700</bug_when>
<thetext>Marking this as a blocker, we won&apos;t ship 6.0 with this bug.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>69</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-10-05 20:04:03 -0700</bug_when>
<thetext>The problem we are having when we redraw connections to
multiports and the wrong end point is moved is caused
by change 1.35 to vergil/actor/LinkController.java:
revision 1.35
date: 2005/07/19 13:45:18; author: eal; state: Exp; lines: +4 -2
Support for multiport links.
The change itself involves LinkManhattanConnector:
bash-3.1$ cvs diff -r 1.34 -r 1.35 LinkController.java
Index: LinkController.java
===================================================================
RCS file: /home/cvs/ptII/ptolemy/vergil/actor/LinkController.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -r1.34 -r1.35
70c70
&lt; @version $Id: LinkController.java,v 1.34 2005/07/08 19:59:42 cxh
Exp $
---
&gt; @version $Id: LinkController.java,v 1.35 2005/07/19 13:45:18 eal
Exp $
199d198
&lt; ManhattanConnector c = new ManhattanConnector(tailSite, headSite)\
;
200a200,201
&gt; ManhattanConnector c = new LinkManhattanConnector(
&gt; tailSite, headSite, link);
216a218
&gt; // FIXME: This isn&apos;t quite right for relation groups.
bash-3.1$
The problem appears to be in
ptolemy.vergil.actor.LinkManhattanConnector.getHeadSite():
/** Override the base class to return a different site for each
* connection to a multiport.
* @return The connection site.
*/
public Site getHeadSite() {
if ((_headPort == null) || !_headPort.isMultiport()) {
return super.getHeadSite();
}
Site result = super.getHeadSite();
if (result instanceof PortConnectSite) {
PortTerminal terminal = ((PortConnectSite) result).getTerminal();
int orderIndex = terminal.getOrderIndex(this);
if (orderIndex &gt;= 0) {
return new PortConnectSite(result.getFigure(), terminal,
orderIndex + 1, result.getNormal());
}
}
return result;
}
If I comment out the &quot;return new PortConnectSite&quot; lines, then
the bug goes away.
The way I replicate this is to:
1) Start vergil
2) Drag in two Distributorts
3) Drag a connection from the monoport input of one Distributor to
the multiport output of the other Distributor.
4) Click elsewhere on the canvas to unhighlight the connection
5) Click on the multiport output and drag.
6) The other end is what moves.
_Christopher</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>74</commentid>
<comment_count>4</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-11-03 15:00:13 -0800</bug_when>
<thetext>Fixed by Edward:
2006-10-18 08:33 eal
* ptolemy/vergil/actor/LinkManhattanConnector.java (1.9): Fix bug
with grabbing wrong end of multiport wires.
</thetext>
</long_desc>
</bug>
<bug>
<bug_id>54</bug_id>
<creation_ts>2007-01-08 14:23:07 -0800</creation_ts>
<short_desc>Datagram actors fail their test</short_desc>
<delta_ts>2007-01-08 14:23:07 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>6.0.1</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>major</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-nD-1IYexVyYmQNFGzBS0Fx1jgWstamZCGLd8JUooxwI</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>85</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-01-08 14:23:07 -0800</bug_when>
<thetext>Christopher Brooks wrote:
&gt;It seems like the datagram actors do not work very well.
&gt;
&gt;At some point, I modified the test suite so that it would
&gt;report an error if the Test.fire() was never called.
&gt;
&gt;The datagram test in actor/lib/net/test/auto/DatagramReader.xml
&gt;failed in this manner.
&gt;
&gt;I then managed to forget about this problem. The tests
&gt;in actor/lib/net/test were not running for awhile. Then
&gt;in December, I reenabled the tests.
&gt;
&gt;After some poking around, it seems like this test sometimes
&gt;works in Ptolemy II 4.0.1, but other times I get no output.
&gt;
&gt;The Datagram actors use threads and I&apos;ve never really trusted
&gt;that the implementation was any good.
&gt;
&gt;Should we just remove these actors?
&gt;
&gt;They do try to solve a problem we&apos;ve never solved, that
&gt;of asynchronous data read/write. The audio actors have a
&gt;similar problem with codegen.
Edward A. Lee wrote:
&gt; I have no opinion, except that indeed these actors are
&gt; representative of a broad unsolved problem. I would hate
&gt; the lose them completely...
At this point, I&apos;ll leave the Datagram actors in place.
I&apos;ll update the actors to mention that they might have
problems.
There seems to be a good 199 project here, or possibly part
of a masters that involves asynchrounous data read/write.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>5</bug_id>
<creation_ts>2004-12-16 08:58:50 -0800</creation_ts>
<short_desc>Process domains do not work well inside non-process domains</short_desc>
<delta_ts>2008-04-29 10:22:21 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>PN</component>
<version>4.1</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>ASSIGNED</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>80.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-ZvB29N3ND539d30KeJlZKd3zAI8IL6u0hXg_ep4vLHY</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>8</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2004-12-16 08:58:50 -0800</bug_when>
<thetext>PN does not work inside DE.
I fixed the error message so that it is more clear and I added a test
to pn/test/PNInsideDE.xml that illustrates the problem.
We need to have a set of tests that illustrates what domains work
inside what other domains.
Below is some email from Ptolemy-hackers on 12/15/04 and 12/16/04
--start--
Edward Lee wrote:
&gt; Yes, it looks as if the code is designed so that process domains
&gt; (PN, CSP) can only be used within process domains. I&apos;m not sure
&gt; to what extent this is a limitation of the process domains vs. a
&gt; semantic problem. What would PN mean within DE? Since PN has
&gt; no well-defined notion of a &quot;firing&quot;, how would you assign time
&gt; stamps to the outputs of a PN actor? By default in DE, the time
&gt; stamps of the outputs of an actor match those of the inputs that
&gt; triggered the firing. There is no such notion in PN.
Ivan Jeukens wrote:
Yes, I agree with you, not all combinations are
meaningful. As a matter of fact, I was combining CSP inside a SR
topology. That does not seem right because of the synchronous
hypothesis. But, I was testing a tool for checking the validity of
specifications against certain MoCs, and in principle, that
combination (SR + CSP) was ok (the specification isn&apos;t timed, is
monotonic, etc).
As for DE + CSP I think it might be useful, since DE is
primary a simulation model, as is CT. Therefore, these two models
are pretty good for capturing the environment of a system. In my
particular case, I&apos;m also interested in embedded software, so CSP
an PN should be put in the mix.
Indeed, trying to view a &quot;process composite actor&quot; as a
&quot;activation based atomic actor&quot; is tricky. The &quot;fire until
deadlock&quot; policy for the process composite seems the way to go. If
no actor inside the composite manipulates the time value, i.e the
composite is zero delay, then the timestamps of produced events
could be of current time of firing. Now for generating embedded
software, I think it does not make much sense the notion of
timestamp of an event, since the real time is not a controllable
feature. Maybe the only acceptable method of a process that
manipulates time is a timed delay ( fireAt() ) . In a DE + process
this can be interpreted as the generation of a pure event that
will trigger a future activation of the process based
composite. Anyway, issues of deadlocks, livelocks and determinacy
should be studied carefully.
--end--</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>9</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2004-12-16 09:46:44 -0800</bug_when>
<thetext>Added ptresearch as QA Contact</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>20</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-05-08 13:59:10 -0700</bug_when>
<thetext>See $PTII/doc/domainCompatibility.htm for a list of what works where.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>271</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-04-29 10:22:21 -0700</bug_when>
<thetext>Our paper and notes about domain compatibility can be found at
http://ptolemy.eecs.berkeley.edu/ptolemyII/ptIIlatest/ptII/doc/domainCompatibility.htm
There is quite a bit of complexity here, in part because the Continuous
domain is a redesigned CT domain. Also, the blurring of CT/DE/SR adds
to the complexity.
The next step in this bug is to go through the chart and create test cases
for each interaction that should work. We should start with the non-experimental
domains (CT, DDF, DE, FSM, PN, Rendezvous, SDF, SR, Wireless) and
make sure that each of the combinations in the domain compatibility chart
has a working, useful example.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>21</bug_id>
<creation_ts>2006-07-27 14:27:41 -0700</creation_ts>
<short_desc>Cut and Paste: Parameters should also be copied</short_desc>
<delta_ts>2009-04-06 19:11:26 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-Gm0YRuWuvWciKKP4qVv_-YIJzmygpZFkRIqBtdHm0Jw</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>33</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 14:27:41 -0700</bug_when>
<thetext>If a highlighted block of actors has a parameter, then
perhaps the parameter should also be copied.
(From the July Rome AFRL Visit).</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>100</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-04-02 18:04:43 -0700</bug_when>
<thetext>I took a look at this because I wanted to be able to copy and paste something
to track down a bug in a large model.
The problem is that if we copy something in vergil, we want to be able
to include any missing parameters.
This gets tricky because we don&apos;t know what parameters are until we paste
into a possibly different context. It could be that we want this to not
be the default, but want it to be a &quot;copy special&quot; menu choice. Trying
to be smart here could result in unintended consequences. For example, if
I&apos;m copying actors and deliberately leaving the parameters out so that
I can paste them into a location that already has those parameters, then
I should probably not add the parameters automatically to the copied text.
The code is in vergil/basic/BasicGraphFrame.java
I think the best approach is to modify the copy() method so that as
we assemble the MoML, we look for Variables that depend on Variables
outside the current scope of what is being copied. If we find such a
Variable, then we add it to the MoML.
This gets tricky. Given a Variable, I&apos;m not sure how to find out
what it depends on that is upscope. We would need to be able to parse
expressions and look at the parse tree for things that are up-scope?
As a hack, I tried modifying BasicGraphFrame so we search for Variables
that are part of the copied MoML and then call getToken(). If getToken()
fails, we try to search for the original variable in the master container
from which we copied the code. However, this is not working for me
right now. Also, this method would not work for expressions that refer
to Variables that are up-scope.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>101</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-04-04 10:42:09 -0700</bug_when>
<thetext>I&apos;ve implemented a partial solution that needs testing and review.
moml/MoMLUtilities.java contains a method called
checkCopy(String momlToBeChecked, NamedObj container) that parses
the moml, searches for Variables and evaluates them. If a Variable
fails to evaluate because of one or more missing Variables, then
the MoML for those missing variables is returned.
This method is called from BasicGraphFrame. moml/test/MoMLUtilities.tcl
includes tests for copy and paste.
There are a number of complications:
1) It turns out that parsing MoML that contains a Subscriber ends
up validating the channel parameter, which means the MoML will not
parse if the channel parameter is not in the MoML to be copied.
Thus, we need to handle missing Variables when we parse the MoML
to be copied.
2) It is not clear to me that we want this to be the default behaviour.
I don&apos;t like it when MS Word tries to be smart. Perhaps the user should
be prompted that we are copying the parameters? Or, this could be
an optional right click choice (smart copy).
3) It is not clear to me that searching the MoML in a certain order
for Variables is the right thing. Afterall, the Variables are handled
in lazy order
4) Actor oriented classes are probably not handled correctly.
5) The MoMLUtilities class should be renamed. One issue is that the
method is static, but uses static variables to track which variables will
be returned.
6) I&apos;m not sure if this is the overall right approach. What we do is
parse the moml and then evaluate all the variables. Another method would
be to parse the moml and then look for free variables. I&apos;m not sure if
this would result in evaluation or not.
7) Should we only look for Variables in the current level, or should
we look upscope all the way to the top? I think going to the top is right,
since it means that we can easily copy a section of code and work on it.
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>106</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-05-20 10:32:46 -0700</bug_when>
<thetext>At Edward&apos;s suggestion, we now have a &quot;createIfNecessary&quot;
attribute that only creates the parameter if they are not
already present.
In addition, copying and pasting instances of classes
also works.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>350</bug_id>
<creation_ts>2010-08-25 15:38:17 -0700</creation_ts>
<short_desc>Modular Code Gen generates code each time the model is run.</short_desc>
<delta_ts>2010-08-25 15:38:17 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Codegen</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-u4eZtiaTZ2qU2LId1tZInYc2KfiYZSp_E-WLeN3FXxY</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>710</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-08-25 15:38:17 -0700</bug_when>
<thetext>[I&apos;m creating a separate bug for this one.]
We seem to be generating code each time the model
is run:
1. $PTII/bin/vergil $PTII/ptolemy/cg/lib/test/auto/ModularCodeGen.xml
2. Run the model, note that code is generated
3. Exit
4. $PTII/bin/vergil $PTII/ptolemy/cg/lib/test/auto/ModularCodeGen.xml
5. Rerun the model, note that code is generated again
In step 5, code should not be regenerated.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>296</bug_id>
<creation_ts>2009-07-22 09:28:13 -0700</creation_ts>
<short_desc>LevelCrossingDetectorDetectsGlitches output changed between 6.0.2 and 7.0.1</short_desc>
<delta_ts>2009-07-23 15:53:52 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>CT</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>ASSIGNED</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-p0eiB603vZrW5BXBF3QXvJE7FD08x7f5JupRO7oPoEw</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>577</commentid>
<comment_count>0</comment_count>
<attachid>30</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-07-22 09:28:13 -0700</bug_when>
<thetext>Created attachment 30
JPG version of a PowerPoint slide that shows old behavior
On 4/25/09, Edward wrote:
&gt; The demo LevelCrossingDetectorDetectsGlitches is behaving strangely.
&gt; The output plot labeled Piecewise Continuous Signal is not showing
&gt; all the output values at time 1.5 (these should include the value -1.0).
&gt; However, the level-crossing detectors are correctly detecting these
&gt; values!
&gt; I&apos;m mystified. Any easy way to check when this started happening?
Attached is a jpg version of a PowerPoint slide that shows the old
behavior.
The demo does work as expected in Ptolemy II 6.0.2, which was released
on 2/4/2007
The failure is present in a Ptolemy tree from 4/1/2007
The failure is present in Ptolemy II 7.0.1
However, the Continuous domain version of this demo in 8.1.devel works as
expected.
To track this down would require working through various versions of the
ptII tree. I&apos;m concerned that even if we find the right revision of the
change that caused the problem, then folding in that change could be difficult.
An alternative would be to remove the ct version of this demo from the release.
This problem points out the need to have tests for the demos.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>582</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-07-23 15:53:52 -0700</bug_when>
<thetext>Edward wrote:
&gt; I think removing the CT version of this demo is the way to go.
&gt; It works in the continuous domain...
I tracked this down to this change:
2007-02-11 18:52 hyzheng
* [r45276] /trunk/ptolemy/domains/fsm/kernel/FSMDirector.java:
removed unnecessary code in two places:
1. prefire() -- since the receivers are mail boxes with only one
capacity and supporting overwriting, there is no need to clean up
the content at the prefire() method. And even we need so, the
clean up should be put into the postfire() method.
2. transferInputs(IOPort) -- before putting new tokens, old
tokens are removed. This is unnecessary since the receiver
supports overwriting.
The diff is:
bash-3.2$ svn diff -r 45275:45276 ptolemy/domains/fsm/kernel/FSMDirector.java
Index: ptolemy/domains/fsm/kernel/FSMDirector.java
===================================================================
--- ptolemy/domains/fsm/kernel/FSMDirector.java (revision 45275)
+++ ptolemy/domains/fsm/kernel/FSMDirector.java (revision 45276)
@@ -630,37 +630,6 @@
if (_debugging) {
_debug(&quot;Prefire called at time: &quot; + getModelTime());
}
-
- // Clear the inside receivers of all output ports of the container.
- // FIXME: why here? should this happen at the postfire() method?
- CompositeActor actor = (CompositeActor) getContainer();
- Iterator outputPorts = actor.outputPortList().iterator();
-
- while (outputPorts.hasNext()) {
- IOPort p = (IOPort) outputPorts.next();
- Receiver[][] insideReceivers = p.getInsideReceivers();
-
- if (insideReceivers == null) {
- continue;
- }
-
- for (int i = 0; i &lt; insideReceivers.length; i++) {
- if (insideReceivers[i] == null) {
- continue;
- }
-
- for (int j = 0; j &lt; insideReceivers[i].length; j++) {
- try {
- if (insideReceivers[i][j].hasToken()) {
- insideReceivers[i][j].get();
- }
- } catch (NoTokenException ex) {
- throw new InternalErrorException(this, ex, null);
- }
- }
- }
- }
-
// Set the current time based on the enclosing class.
super.prefire();
return getController().prefire();
@@ -730,12 +699,7 @@
if ((insideReceivers != null)
&amp;&amp; (insideReceivers[i] != null)) {
for (int j = 0; j &lt; insideReceivers[i].length; j++) {
- if (insideReceivers[i][j].hasToken()) {
- insideReceivers[i][j].get();
- }
-
insideReceivers[i][j].put(t);
-
if (_debugging) {
_debug(getFullName(),
&quot;transferring input from &quot;
Folding that change back into FSMDirector.java seems to make the model
work. I&apos;m working on creating a test case that illustrates the problem
and on running the tests with this change in place.</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>30</attachid>
<date>2009-07-22 09:28:13 -0700</date>
<delta_ts>2009-07-22 09:28:13 -0700</delta_ts>
<desc>JPG version of a PowerPoint slide that shows old behavior</desc>
<filename>LevelCrossingDetectorDetectsGlitches.jpg</filename>
<type>image/jpeg</type>
<size>138355</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340162-_Fg2eHQIJScu_QvIX2z9clj4Y8A9CJqRoC5zSJyjFuc</token>
</attachment>
</bug>
<bug>
<bug_id>12</bug_id>
<creation_ts>2006-05-08 14:10:32 -0700</creation_ts>
<short_desc>Modal Model: bad parameter name persists</short_desc>
<delta_ts>2007-05-21 09:25:49 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-Oj8rPQUfhxjNOtS_WkxK7j8AERf2oyzhtkyODScLwJw</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>24</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-05-08 14:10:32 -0700</bug_when>
<thetext>If the user enters the name of a parameter that does not exist,
then changes to a different parameter (or perhaps no parameter),
then the user continues to get error messages.
I wrote:
Hi Chuck,
This looks like a bug to me in both ptII5.0.1 and the current
devel tree.
If I open
ptII/ptolemy/domains/de/demo/ModalModel/ModalModel.xml
Look inside the ModelModel
Double click on the upper relation (relation2)
Change outputActions to output=bar
Run the model, get a message:
ptolemy.kernel.util.IllegalActionException: in .ModalModel.manager
Because:
Type resolution failed because of an error during type inference
in .ModalModel
Because:
An error occurred during expression type inference
in .ModalModel.modal model._Controller.relation2.outputActions
Because:
The ID bar is undefined.
at ptolemy.actor.Manager.execute(Manager.java:386)
at ptolemy.actor.Manager.run(Manager.java:987)
at ptolemy.actor.Manager$3.run(Manager.java:1028)
...
Go back and edit the output action and remove &quot;output=bar&quot;
Run the model, the same thing occurs.
If I save the model and look at the .xml file, then I find
&quot;bar&quot; is not present.
However, if I change the output action to something like
&quot;output=phase&quot;, then the model runs, though the ouput now
has the phase, which is wrong.
Thus, I suspect a problem with changing parameters to be
the empty string.
About a bug database, we&apos;ve had one in the past, I can see about
resurrecting it.
_Christopher
--------
Hi folks,
I just encountered something. I have a Modal Model; in one of the
_Controller&apos;s transitions,
I attempted to write to an output port in the output actions. I gave a
bad identifier. After I
removed the offending command (note: did not correct the identifier, I
removed the whole
action) and committed the change, Ptolemy II 5.0.1 still complained with
&quot;Cannot find port
with the name: myIdentifier&quot;
I checked the XML after a save - the bad action was not in there.
The problem did not go away with a close and reopen of the model.
It did go away with a closeout of PtII and a restart/reload/rerun.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>55</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 16:24:37 -0700</bug_when>
<thetext>On 7/27/06, Norbert Podhorszki writes:
I have hit the following annoying bug in ptolemy several times.
There is a workflow, which has a Parameter, which is used somewhere among
the actors.
Ptolemy allows me to rename the parameter (which I want) without
complaining about that this parameter is still in use.
Then I try to change the value of the parameter. Ptolemy pops up an error
dialog, with OK and Cancel. Both buttons brings back the same dialog, so
there is no way to exit from the dialog. I have to close Ptolemy
completely.
In contrast, Ptolemy gives an error msg if I want to delete the
Parameter, but then deletes the Parameter and I can continue working, so
this case is handled well.
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>60</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-28 08:15:21 -0700</bug_when>
<thetext>Edward is working on a solution:
&gt; I&apos;m working on it...
&gt;
&gt; I have an easy but incomplete fix...
&gt; I&apos;m working on a more complete fix...
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>108</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-05-21 09:25:49 -0700</bug_when>
<thetext>Fixed by Edward on 2007/05/16:
http://chess.eecs.berkeley.edu/ptolemy/listinfo/ptolemy/2007-May/009996.html
&gt; I&apos;m checking in a fix to a bug pointed out to me
&gt; in Korea by some students at Postech...
&gt; The bug is that if I have a transition with a set action,
&gt; say &quot;foo = 10&quot;, I run the model, and then I clear the
&gt; set action and re-run the model, the model runs as if
&gt; I had not cleared the set action.
&gt;
&gt; The bug was in AbstractActionsAttribute, which was failing
&gt; to clear cached data structures if the setActions parameter
&gt; contained an empty string.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>300</bug_id>
<creation_ts>2009-07-23 16:53:03 -0700</creation_ts>
<short_desc>Mac OS X: Plotter: Editable Plot has problems: right mouse button is resize and edit</short_desc>
<delta_ts>2009-07-31 15:03:51 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Ptplot</component>
<version>8.1.devel</version>
<rep_platform>Macintosh</rep_platform>
<op_sys>Mac OS X 10.5</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.75</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-A2wgHhRKlDHvVsnLBevABo6C53AItUVWFM_f7FOHqHo</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>586</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-07-23 16:53:03 -0700</bug_when>
<thetext>This bug is specific to Mac OS X because of the one button mouse on
laptops:
1. Run: java -classpath $PTII ptolemy.plot.plotml.EditablePlotMLApplication
2. Select Edit -&gt; Edit Data Set
3. In the &quot;Edit Dataset&quot; window, select any dataset (other than &quot;none&quot;),
press OK
4. The way this is supposed to work is that dragging the right mouse will
allow the user to change the values of the data set. However, if, on the
Mac, I hold down the command key and click, then I get both the editing
of data values and the zooming of the plot area.
The sketch demo:
$PTII/bin/vergil ~/ptII/ptolemy/domains/sdf/demo/Sketch/Sketch.xml
has similar problems.
I&apos;m not sure about the solution for the plotter. I&apos;d look at how
right mouse drags are handled on the Mac.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>592</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-07-31 15:03:51 -0700</bug_when>
<work_time>0.75</work_time>
<thetext>Fixed.
The solution is that we disable zooming for the right button (Command + Click on
the Mac).</thetext>
</long_desc>
</bug>
<bug>
<bug_id>67</bug_id>
<creation_ts>2007-06-03 19:41:18 -0700</creation_ts>
<short_desc>No prompt to save model after viewing XML</short_desc>
<delta_ts>2007-06-11 17:50:00 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>6.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Thomas Huining Feng">huining.feng@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-3th235OooML_cAcrh-c6h3wwePJZCqCpIsky31NGb7I</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>117</commentid>
<comment_count>0</comment_count>
<who name="Thomas Huining Feng">huining.feng@gmail.com</who>
<bug_when>2007-06-03 19:41:18 -0700</bug_when>
<thetext>Create a new model and drag in a Const actor. If you close the model at this
time, vergil prompts to save the model since there is unsaved modification.
However, if you first do View -&gt; XML View, and then close the model, no prompt
shows up even if the model should be &quot;dirty.&quot;</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>127</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-06-11 17:50:00 -0700</bug_when>
<thetext>The solution appears to be to modify TextEditorTableau.java and change the
constructor so that we do not call frame.setModified(false).
I tested this with a few different scenarios:
$PTII/bin/vergil makefile
- Close the window by hitting the red X, you should not be prompted to save
$PTII/bin/vergil ptolemy/domains/sdf/demo/Butterfly/Butterfly.xml
- Change the model by using the graph editor
- View -&gt; XML view, then close the graph editor by hitting the red X
You should be prompted to save.
Note that this is a little odd, since the Text Editor is still up.
However, I think this is the right thing.
I also looked in the ptresearch logs for email about why this change was made.
The change was made on July 2, 2003 by Edward. There was nothing in
the email logs.
There is a chance that this problem will persist. What I think happened
is that other work surrounding the modified flag has obviated the need
for calling frame.setModified(false) in TextEditorTableau.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>341</bug_id>
<creation_ts>2010-05-05 11:40:18 -0700</creation_ts>
<short_desc>Publisher and Subscriber do not work across Opaque TypedCompositeActors</short_desc>
<delta_ts>2010-05-05 17:35:04 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>DUPLICATE</resolution>
<dup_id>165</dup_id>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<blocked>70</blocked>
<blocked>338</blocked>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>100.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<deadline>2010-08-31</deadline>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-DQr4dwqEdsBGOIT3Ihr29UrA81hyK-vNLwcIVcPNBTU</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>681</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-05 11:40:18 -0700</bug_when>
<thetext>If we have a Publisher inside an TypedCompositeActor that has a Director
(making it opaque), then a Subscriber cannot Subscribe to the Publisher.
See
$PTII/ptolemy/actor/lib/test/auto/PublisherSubscriberOpaque.xml
Note that this sort of model sort of works in Modular CodeGen, but not in
regular interpreted mode.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>689</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-05 17:35:04 -0700</bug_when>
<thetext>
*** This bug has been marked as a duplicate of bug 165 ***</thetext>
</long_desc>
</bug>
<bug>
<bug_id>69</bug_id>
<creation_ts>2007-06-04 15:52:55 -0700</creation_ts>
<short_desc>Performance: check type inference cost each time a model is opened</short_desc>
<delta_ts>2009-04-06 18:41:57 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Performance</component>
<version>6.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>bert.rodiers@gmail.com</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-J7mk_zwRkC2BUQaTEH32BelJteWEf_5o5i6y_b6hksY</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>119</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-06-04 15:52:55 -0700</bug_when>
<thetext>From the Rome May 2007 visit:
Performance:
1) type inference cost each time the model is open</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>351</commentid>
<comment_count>1</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-10-08 11:43:35 -0700</bug_when>
<thetext>The type inference (method resolveTypes() of Manager) only happens at the end of the preinitialize phase and not when opening models.
The problem is probably that large models take too much time to open (due to for example parsing the moml), but not due to the type inference.
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>352</commentid>
<comment_count>2</comment_count>
<attachid>21</attachid>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-10-08 18:05:45 -0700</bug_when>
<thetext>Created attachment 21
A large model
I tried to see what&apos;s going on when opening large projects, hence I created a project that is quite large (more than 12000 actors). Of course I don&apos;t whether this corresponds to the models which they used.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>353</commentid>
<comment_count>3</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-10-08 18:09:36 -0700</bug_when>
<thetext>Extended the CC list that the group also gets my spam, uhm, I mean useful comments.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>356</commentid>
<comment_count>4</comment_count>
<attachid>23</attachid>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-10-08 18:18:50 -0700</bug_when>
<thetext>Created attachment 23
A picture that shows what&apos;s going on when you open the large model I attached earlier.
It shows that almost all time goes to parsing the model.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>357</commentid>
<comment_count>5</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-10-11 01:27:18 -0700</bug_when>
<thetext>Edward and I were talking about this and we think that perhaps in the
profile all the time is being assigned to the xml parser because
of the callbacks. I&apos;m not totally sure that all the time is being
consumed in the by the xml parser.
The next step is to work on creating a way to create models of various sizes
that use Publisher/Subscriber and models of various sizes that use
ports instead of Publisher/Subscriber
------------
| |
| pub1 sub9|
------------
/
---------------------
|sub3-pub4 sub7-pub8|
---------------------
/
----------
|sub5-pub6|
----------
Where pub1 publishes to sub3
pub4 publishes to sub5
pub6 publishes to sub7
pub8 publishes to sub9
Or something similar. An then we can parameter the model creation
so that we get different numbers of levels of hierarchy or different
numbers of actors or composites per level.
</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>21</attachid>
<date>2008-10-08 18:05:45 -0700</date>
<delta_ts>2008-10-08 18:05:45 -0700</delta_ts>
<desc>A large model</desc>
<filename>TypeInference.rar</filename>
<type>application/octet-stream</type>
<size>25487</size>
<attacher name="Bert Rodiers">bert.rodiers@gmail.com</attacher>
<token>1526340162-gcr3-5Qxtzy9--TbKHGmkhMrtrYoGWCQ3sTJUJMhq1I</token>
</attachment>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>23</attachid>
<date>2008-10-08 18:18:50 -0700</date>
<delta_ts>2008-10-08 18:18:50 -0700</delta_ts>
<desc>A picture that shows what&apos;s going on when you open the large model I attached earlier.</desc>
<filename>openingLargeProject.JPG</filename>
<type>image/jpeg</type>
<size>103879</size>
<attacher name="Bert Rodiers">bert.rodiers@gmail.com</attacher>
<token>1526340162-qbk2jOymYlnZ38OCdvsZDPQC0de1InZ6AvAw3qeIpls</token>
</attachment>
</bug>
<bug>
<bug_id>34</bug_id>
<creation_ts>2006-07-27 16:00:26 -0700</creation_ts>
<short_desc>Port Parameter is rendered in two pieces which results in dragging problems</short_desc>
<delta_ts>2007-05-22 11:48:11 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-5BqNiCMphTqMCvkPm-bWd08eGrWe92pytUEH7SBgAuI</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>46</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 16:00:26 -0700</bug_when>
<thetext>If I select and drag a port parameter, then only one portion gets dragged.
The problem is that the PortParameter is rendered in two portions.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>97</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-03-09 13:52:48 -0800</bug_when>
<thetext>I modified actor/ExternalIOPortController so that the PortParameter
and FilePortParameter are now configured as one piece.
This solves the worst of the dragging problem, however, if I create a
PortParameter by dragging it to the canvas and then click on the string
&quot;PortParameter&quot;, I drag the icon and the string around.
However, if I click on just the icon, then only the icon moves.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>107</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-05-20 10:36:58 -0700</bug_when>
<thetext>I hacked in a workaround to the problem where PortParameter is rendered
in two pieces, which results in problems while dragging.
One issue is that vergil/actor/ExternalIOPortController.java draws the
external ports like PortParameter on the canvas. My hack is to have
ptolemy/configs/utilityPortParameter.xml render the port parameter in
two pieces and have ExternalIOPortController draw an invisible PortParameter.
This seems suboptimal, but I could not get cut and paste of a PortParameter
to properly work - the offset seemed to cause problems.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>115</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-05-22 11:48:11 -0700</bug_when>
<thetext>I&apos;m closing this bug, PortParameters now work reasonably well.
I took another stab at this and the problem is that the Parameter
ends up in two pieces. This is a hack, but it works.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>53</bug_id>
<creation_ts>2006-12-18 10:33:59 -0800</creation_ts>
<short_desc>SaveAs: &quot;save submodel only&quot; does not work with modal models</short_desc>
<delta_ts>2008-12-11 05:08:06 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0.1</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-OzK9M6ubvHKep215Bkz7RqEuCewPPDp67YycEdo-3j8</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>84</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-12-18 10:33:59 -0800</bug_when>
<thetext>If I have a model model and do &quot;Save As&quot; and select &quot;save submodel only&quot;
then I get a null pointer exception:
java.lang.NullPointerException
at ptolemy.domains.fsm.kernel.State.getRefinement(State.java:281)
at ptolemy.vergil.fsm.StateIcon._getFill(StateIcon.java:88)
at ptolemy.vergil.icon.NameIcon.createBackgroundFigure(NameIcon.java:172)
at ptolemy.vergil.icon.EditorIcon.createFigure(EditorIcon.java:293)
at ptolemy.vergil.icon.NameIcon.createFigure(NameIcon.java:183)
at
ptolemy.vergil.fsm.StateController$StateRenderer.render(StateController.java:285)
at diva.graph.BasicNodeController._renderNode(BasicNodeController.java:281)
at
ptolemy.vergil.basic.LocatableNodeController._renderNode(LocatableNodeController.java:240)
at diva.graph.BasicNodeController.drawNode(BasicNodeController.java:177)
at
ptolemy.vergil.basic.LocatableNodeController.drawNode(LocatableNodeController.java:98)
at diva.graph.AbstractGraphController.drawNode(AbstractGraphController.java:191)
at diva.graph.AbstractGraphController.rerender(AbstractGraphController.java:373)
at
diva.graph.AbstractGraphController$ChangeListener.structureChanged(AbstractGraphController.java:638)
at
diva.graph.AbstractGraphController.setGraphModel(AbstractGraphController.java:504)
at diva.graph.GraphPane.&lt;init&gt;(GraphPane.java:63)
at ptolemy.vergil.fsm.FSMGraphFrame._createGraphPane(FSMGraphFrame.java:175)
at
ptolemy.vergil.basic.BasicGraphFrame._createRightComponent(BasicGraphFrame.java:1467)
at ptolemy.vergil.basic.BasicGraphFrame.&lt;init&gt;(BasicGraphFrame.java:200)
at ptolemy.vergil.basic.ExtendedGraphFrame.&lt;init&gt;(ExtendedGraphFrame.java:95)
at ptolemy.vergil.fsm.FSMGraphFrame.&lt;init&gt;(FSMGraphFrame.java:100)
at ptolemy.vergil.fsm.FSMGraphTableau.createGraphFrame(FSMGraphTableau.java:119)
at ptolemy.vergil.fsm.FSMGraphTableau.&lt;init&gt;(FSMGraphTableau.java:92)
at
ptolemy.vergil.fsm.FSMGraphTableau$Factory.createTableau(FSMGraphTableau.java:173)
at
ptolemy.actor.gui.PtolemyTableauFactory.createTableau(PtolemyTableauFactory.java:100)
at ptolemy.actor.gui.TableauFactory.createTableau(TableauFactory.java:122)
at ptolemy.actor.gui.Configuration.createPrimaryTableau(Configuration.java:333)
at ptolemy.actor.gui.Configuration.openModel(Configuration.java:626)
at ptolemy.actor.gui.Configuration.openModel(Configuration.java:547)
at ptolemy.actor.gui.TableauFrame._saveAs(TableauFrame.java:896)
at ptolemy.actor.gui.PtolemyFrame._saveAs(PtolemyFrame.java:290)
at ptolemy.gui.Top$FileMenuListener.actionPerformed(Top.java:1030)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.AbstractButton.doClick(AbstractButton.java:302)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1000)
at
javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1041)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
1. Start up vergil 6.1.devel
2. File -&gt; New -&gt; Graph Editor
3. Click Utilities, then drag the model model icon in
4. Look inside the modal model, drag in a state icon
5. Click File -&gt; Save As, click on the &quot;save submodel only&quot; icon.
6. You will get a NullPointerException.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>114</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-05-22 11:46:03 -0700</bug_when>
<thetext>My change to fsm/kernel/State.java fixes this bug and save submodel now works
with ModalBSC. </thetext>
</long_desc>
</bug>
<bug>
<bug_id>35</bug_id>
<creation_ts>2006-07-27 16:01:54 -0700</creation_ts>
<short_desc>Build documentation under Eclipse</short_desc>
<delta_ts>2007-05-21 12:18:37 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-ePOyVTEN_eHXCdkjs7C57Yv40s-11J6cKRrGbmj2vkQ</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>47</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 16:01:54 -0700</bug_when>
<thetext>We should make it easier to build documentation under Eclipse
even if the user has not run configure.
(From the July Rome AFRL Visit)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>61</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-08-03 17:00:41 -0700</bug_when>
<thetext>I think I have this partially fixed.
If $PTII/mk/ptII.mk is not found, then we use actor.gui.FindPackages,
which searches for the packages in $PTII and then invokes javadoc with
the PtDoc applet.
Still to come:
Set the classpath to the same classpath that we use in Eclipse.
Run the actor indexer.
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>111</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-05-21 12:18:37 -0700</bug_when>
<thetext>I modified DocBuilder so that we use the Eclipse
classpath when building documentation and we run
the actor/demo indexer.
Note that generating the docs can generate warnings,
which is ok.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>1</bug_id>
<creation_ts>2004-12-02 17:25:59 -0800</creation_ts>
<short_desc>Ptplot threading issues</short_desc>
<delta_ts>2006-05-08 13:56:10 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Ptplot</component>
<version>4.1</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-qb94dU_nFg8ELVDm6fHOQ1G9AvW_qxUHiYeAjLcBwYI</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>1</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2004-12-02 17:25:59 -0800</bug_when>
<thetext>Ptplot 4.1 has not yet been released because of a threading problem.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>19</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-05-08 13:56:10 -0700</bug_when>
<thetext>Fixed by having main() call invokeAndWait().</thetext>
</long_desc>
</bug>
<bug>
<bug_id>55</bug_id>
<creation_ts>2007-01-08 20:56:28 -0800</creation_ts>
<short_desc>GNU Make 3.81 is broken under Windows</short_desc>
<delta_ts>2014-11-26 07:02:14 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Copernicus</component>
<version>6.0.1</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-CdGpkI2k-qRaWcqOW2wwZOf1xh7ShNPZU06CxrSUrf8</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>86</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-01-08 20:56:28 -0800</bug_when>
<thetext>GNU Make 3.81 no longer supports Windows style
path names with colons in them. The affects the Copernicus
code generator because $PTII needs to be set to a pathname
with a colon in it like c:/Ptolemy/ptII6.0.1.
A path name like /cygdrive/c/Ptolemy/ptII6.0.1
will not work with Java.
For example, if you run copernicus and copernicus runs
make, you may see
makefile:360: *** target pattern contains no `%&apos;. Stop.
This is because a makefile variable uses the windows style
pathnames with colons in them. One solution is to
edit the file to use pathnames with /cygdrive.
Another solution is to download a working version from
http://www.cmake.org/files/cygwin/make.exe
For details, see
http://www.cygwin.com/ml/cygwin-announce/2006-07/msg00008.html
&gt; From: Christopher Faylor &lt;cgf-no-personal-reply-please at cygwin dot com&gt;
&gt; To: cygwin-announce at cygwin dot com
&gt; Date: Sun, 9 Jul 2006 18:13:29 -0400
&gt; I&apos;ve made a new version of &apos;make&apos; available for download. This updates
&gt; the package to the latest version available from fedora.redhat.com.
&gt; I&apos;ve included the relevant portions of the NEWS file and the Fedora
&gt; ChangeLog at the end of this message.
&gt; For a brief description of this package, see http://cygwin.com/packages
&gt; Note that the --win32 command line option and &quot;MAKE_MODE&quot; environment
&gt; variable are no longer supported in Cygwin&apos;s make. If you need to use a
&gt; Makefile which contains MS-DOS path names, then please use a MinGW
&gt; version of make.
&gt; See: http://mingw.org/ for details on downloading a version of make
&gt; which understands MS-DOS path names. Please! direct any questions about
&gt; the MinGW version of make to the appropriate MinGW mailing list.
I have no idea what prompted this change, it seems really lame.
The code worked fine under Cygwin for many years. Our current makefiles work
under both Windows and various Unixes. It seems like breaking
an important tool such as make only hurts the GNU tools.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>1010</commentid>
<comment_count>1</comment_count>
<attachid>49</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2014-11-26 07:02:14 -0800</bug_when>
<thetext>Created attachment 49
GNU make 3.80 compiled for Windows Server 2012 R2 64-bit
Attached is a copy of GNU make 3.80 compiled for Windows Server 2012 R2 64-bit.
To do the compile, when running ./configure, I got
./config/config.guess: unable to guess system type
To fix this, I had to edit config/config.guess and add
x86*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit 0;;</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>49</attachid>
<date>2014-11-26 07:02:14 -0800</date>
<delta_ts>2014-11-26 07:02:14 -0800</delta_ts>
<desc>GNU make 3.80 compiled for Windows Server 2012 R2 64-bit</desc>
<filename>cygwin-make-3.80.tar.gz</filename>
<type>application/x-gzip</type>
<size>281829</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340162-zADHegIjRq4WH9thmXSAUjuvBrqnaWJ2faepVC2-63o</token>
</attachment>
</bug>
<bug>
<bug_id>4</bug_id>
<creation_ts>2004-12-10 12:55:14 -0800</creation_ts>
<short_desc>CSP test hangs under Solaris</short_desc>
<delta_ts>2004-12-13 17:58:06 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>CSP</component>
<version>4.1</version>
<rep_platform>Sun</rep_platform>
<op_sys>Solaris</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-CCvwgVoc3VggILzujJ42BqZw0_3drfi6VKCO1dPrKzI</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>5</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2004-12-10 12:55:14 -0800</bug_when>
<thetext>The CSP kernel tests hang on gigasource.
gigasource is a single processor Solaris box running JDK 1.4.2_02
However, the tests pass on a single processor Solaris box running JDK
1.4.2_05?
I could see about updating gigascale, but the stack trace might
be of interest.
The output looks like:
gigasource:bldmastr: kernel/test&gt; make
CLASSPATH=&quot;../../../../..:/home/bldmastr/ptII/lib/ptjacl.jar&quot; &quot;/usr/java/bin/ja\
va&quot; &quot;-Dptolemy.ptII.dir=/export/home2/bldmastr/ptII&quot; tcl.lang.Shell alljtests\
.tcl
ConditionalBranch.tcl
ConditionalReceive.tcl
ConditionalSend.tcl
CSPActor.tcl
REAL DEADLOCK. Number of active actors: 1
&quot;..actorB&quot; prio=5 tid=0x002c06c8 nid=0xc in Object.wait() [f1181000..f11819c8]
at java.lang.Object.wait(Native Method)
- waiting on &lt;0xf14a1f18&gt; (a ptolemy.domains.csp.kernel.CSPReceiver)
at java.lang.Object.wait(Object.java:429)
at ptolemy.domains.csp.kernel.CSPReceiver._checkFlagsAndWait(CSPReceiver\
.java:494)
- locked &lt;0xf14a1f18&gt; (a ptolemy.domains.csp.kernel.CSPReceiver)
at ptolemy.domains.csp.kernel.CSPReceiver.put(CSPReceiver.java:419)
- locked &lt;0xf14a1f18&gt; (a ptolemy.domains.csp.kernel.CSPReceiver)
at ptolemy.domains.csp.kernel.CSPReceiver.put(CSPReceiver.java:365)
at ptolemy.actor.TypedIOPort.send(TypedIOPort.java:546)
at ptolemy.domains.csp.kernel.test.CSPPutToken.fire(CSPPutToken.java:70)
at ptolemy.actor.process.ProcessThread.run(ProcessThread.java:173)
&quot;Signal Dispatcher&quot; daemon prio=10 tid=0x000c3b28 nid=0x8 waiting on condition \
[0..0]
&quot;Finalizer&quot; daemon prio=8 tid=0x000bf008 nid=0x6 in Object.wait() [fc381000..fc\
3819c8]
at java.lang.Object.wait(Native Method)
- waiting on &lt;0xf1b54628&gt; (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
- locked &lt;0xf1b54628&gt; (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
&quot;Reference Handler&quot; daemon prio=10 tid=0x000be588 nid=0x5 in Object.wait() [fde\
81000..fde819c8]
at java.lang.Object.wait(Native Method)
- waiting on &lt;0xf1b54690&gt; (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:429)
- locked &lt;0xf1b54690&gt; (a java.lang.ref.Reference$Lock)
&quot;main&quot; prio=5 tid=0x0002d110 nid=0x1 in Object.wait() [ffbeb000..ffbeef4c]
at java.lang.Object.wait(Native Method)
- waiting on &lt;0xf1607dd0&gt; (a ptolemy.domains.csp.kernel.CSPDirector)
at java.lang.Object.wait(Object.java:429)
at ptolemy.kernel.util.Workspace.wait(Workspace.java:588)
- locked &lt;0xf1607dd0&gt; (a ptolemy.domains.csp.kernel.CSPDirector)
at ptolemy.actor.process.ProcessDirector.wrapup(ProcessDirector.java:46\
3)
- locked &lt;0xf1607dd0&gt; (a ptolemy.domains.csp.kernel.CSPDirector)
at ptolemy.actor.process.CompositeProcessDirector.wrapup(CompositeProce\
ssDirector.java:403)
at ptolemy.domains.csp.kernel.CSPDirector.wrapup(CSPDirector.java:246)
at ptolemy.actor.CompositeActor.wrapup(CompositeActor.java:985)
at ptolemy.actor.Manager.wrapup(Manager.java:1098)
at ptolemy.actor.Manager.execute(Manager.java:344)
at ptolemy.actor.Manager.run(Manager.java:905)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:\
39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce\
ssorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at tcl.lang.reflect.PkgInvoker.invokeMethod(PkgInvoker.java:129)
at tcl.lang.JavaInvoke.call(JavaInvoke.java:253)
at tcl.lang.JavaInvoke.callMethod(JavaInvoke.java:116)
at tcl.lang.ReflectObject.cmdProc(ReflectObject.java:727)
at tcl.lang.Parser.evalObjv(Parser.java:740)
at tcl.lang.Parser.eval2(Parser.java:1138)
at tcl.lang.Interp.eval(Interp.java:1782)
at tcl.lang.Interp.eval(Interp.java:1841)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>6</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2004-12-13 17:45:11 -0800</bug_when>
<thetext>Subject: Re: Another attempt at the deadlock fix.
Cool!
This seems to have fixed the problem on gigasource
_Christopher
--------
I&apos;m checking in another attempt to fix the CSP deadlock
in the test suite. The change is to actor.process.ProcessDirector.
Edward
------------
Edward A. Lee, Professor
518 Cory Hall, UC Berkeley, Berkeley, CA 94720
phone: 510-642-0455, fax: 510-642-2718
eal@eecs.Berkeley.EDU, http://ptolemy.eecs.berkeley.edu/~eal
_______________________________________________
Ptolemy maillist - Ptolemy@chess.eecs.berkeley.edu
http://chess.eecs.berkeley.edu/ptolemy/listinfo/ptolemy
--------
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>7</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2004-12-13 17:58:06 -0800</bug_when>
<thetext>Professor Lee fixed this bug.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>57</bug_id>
<creation_ts>2007-02-01 17:09:50 -0800</creation_ts>
<short_desc>Subscribe.attributeChanged() calls _updateLinks even in idle</short_desc>
<delta_ts>2007-05-21 10:21:25 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>6.0.1</version>
<rep_platform>PC</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>minor</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-6mbZ_bx9ff6KjYFvSfFC9hp_mexUSzwgID3I0Di4ol0</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>88</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-02-01 17:09:50 -0800</bug_when>
<thetext>From the Rome 1/17 telcon:
Subscriber: attributeChanged() calls _updateLinks() even if
the model is not running. _updateLinks() calls _findPublisher().
We should only do this if the model is running by checking the Manager.
This causes problems with large models.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>98</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-03-09 14:51:20 -0800</bug_when>
<thetext>I updated Subscriber.attributeChanged() so that we only call
_updateLinks() if the Manager says we are idle. Otherwise,
we call _updateLinks() in preinitialize().</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>110</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-05-21 10:21:25 -0700</bug_when>
<thetext>Edward&apos;s 2007/03/27 email:
--start--
I&apos;ve checked in a couple more performance improvements with
shared parameters.
Fundamentally, whenever one of these is created,
it must traverse the model to find at least one other shared parameter
from which to infer its value. Since it only needs to find one, this
operation is now constant time (it does not grow with model size).
Previously, the code would find _all_ shared parameters, which is an
order N operation, where N is the model size. Thus, if there were M
shared parameters, we were getting N*M operations during model
construction.
When the value of a shared parameter is set (which also occurs during
model construction if you are not using default values), then we need
to again traverse the model to find all other shared parameters and
set their values. This is an order N operation, so again we have
N*M complexity. I have changed things so that this traversal is not
performed if the value is the same as what has already been inferred
from the context. In this case, we can assume that all other instances
of the shared parameter have the same value.
These two changes reduce the complexity during model construction
to order N, which should significantly improve both opening of models
and interactivity when editing models.
I&apos;m going to now take a look at the preinitialize performance problems.
--end--
Edward&apos;s change to Subscriber.attributeChanged():
revision 1.18
date: 2007/03/27 17:20:52; author: eal; state: Exp; lines: +14 -42
Update links in attributeChanged() and not in setContainer().
// NOTE: There used to be some logic here to call
// _updateLinks() only if the manager indicates we
// are running, and otherwise to set _updatedLinks
// to false. This is no longer necessary as
// the attributeChanged() method is called at
// appropriate times, and tests show it is called
// exactly once per publisher. Moreover, it really
// isn&apos;t correct to defer this, as _updateLinks()
// handles connectivity information. If we want to,
// for example, highlight dependents before a model
// has been run, this has to be done here.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>145</bug_id>
<creation_ts>2008-03-19 18:20:13 -0700</creation_ts>
<short_desc>Vergil Panner not properly updating highlighting</short_desc>
<delta_ts>2008-03-19 18:20:13 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>minor</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-Rsn-jkO-PNvYtqbeDW4a6DfXr5ec9E226j6f1nOoRj0</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>231</commentid>
<comment_count>0</comment_count>
<attachid>12</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-19 18:20:13 -0700</bug_when>
<thetext>Created attachment 12
Vergil Panner does not reflect highlighting changes
Ian Brown writes:
&gt; The panner window displays the selection state but it does not observe
&gt; changes to it. It would appear that it only observes actual changes to
&gt; the model.
I&apos;ve attached Ian&apos;s screenshot.
I&apos;ve replicated this in 7.0.devel.</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>12</attachid>
<date>2008-03-19 18:20:13 -0700</date>
<delta_ts>2008-03-19 18:20:13 -0700</delta_ts>
<desc>Vergil Panner does not reflect highlighting changes</desc>
<filename>vergilPannerProblem.png</filename>
<type>image/png</type>
<size>21387</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340162-zcOYcal4TVXw_D36CGxpwxiB92zocLSsJnbXzcPUVPM</token>
</attachment>
</bug>
<bug>
<bug_id>325</bug_id>
<creation_ts>2010-02-22 15:23:20 -0800</creation_ts>
<short_desc>DT Eye demo plot looks wrong</short_desc>
<delta_ts>2010-02-26 11:56:44 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>DT</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>minor</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-nmOzqTqIheaR7PRXiSh2erYYN4FSuMbOvSuxl7-q7-k</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>648</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-02-22 15:23:20 -0800</bug_when>
<thetext>Running
$PTII/bin/vergil ptolemy/domains/dt/demo/Eye/Eye.xml
brings up a plot that looks wrong, see the attachment.
The bug has to do with:
2009-10-30 01:31 cxh
* [r56031] /trunk/ptolemy/domains/dt/kernel/DTDirector.java,
/trunk/ptolemy/domains/dt/kernel/SDFDTDirector.java,
/trunk/ptolemy/domains/dt/kernel/SDFDTScheduler.java,
/trunk/ptolemy/domains/dt/kernel/makefile,
/trunk/ptolemy/domains/dt/kernel/test/auto/Chain1.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/Chain2.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/Chain3.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/Dag1.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/Dag2.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/DagSingles1.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/Delay1.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/InvDag1.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/MultiPort1.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/MultiPort2.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/Sink1.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/SourceSink1.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/dt_dt_opaque1.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/dt_dt_opaque2.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/dt_dt_opaque3.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/dt_dt_opaque4.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/dt_dt_transparent1.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/dt_dt_transparent2.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/dt_dt_transparent3.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/dt_sdf_1.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/dt_sdf_2.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/dt_sdf_3.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/dt_sdf_dt.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/fir_downsample2.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/inside_period1.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/inside_period2.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/sdf_dt_1.xml,
/trunk/ptolemy/domains/dt/kernel/test/auto/sdf_dt_2.xml: Fixed dt
tests by setting CurrentTime.useLocalTime to true. Backing out
previous hacks to the dt kernel
These changes have to do with the Modal Model changes.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>657</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-02-26 11:56:44 -0800</bug_when>
<thetext>Fixed by Edward who sent useLocalTime in the plotter to true.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>23</bug_id>
<creation_ts>2006-07-27 14:45:31 -0700</creation_ts>
<short_desc>Multiport ordering problems: How do I change one connection?</short_desc>
<delta_ts>2012-05-18 14:58:14 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>ASSIGNED</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>trivial</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>ian.brown@hsbcib.com</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>1.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-325qFlmudLaG7TJc1D80F3lKzclNmsW79kq6G0AgzB4</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>35</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 14:45:31 -0700</bug_when>
<thetext>If I have 8 ports, how do I delete the 4th port and replace it?
We need a way to order the ports.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>222</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-15 15:12:11 -0700</bug_when>
<thetext>Ian Brown writes:
&gt; You cannot change the visual order of ports that an actor has
&gt; (a composite actor or an expression actor in particular).
&gt; One often needs to do this in order to untangle wiring.
&gt; Currently you can elect to remove and re-add the ports, or you
&gt; can edit the order in the XML file using something like notepad.
&gt; Neither of these options is very appealing. It would be nice to
&gt; have an up and a down button in the port dialog. Pressing these
&gt; would change the relative position of the port in the list.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>223</commentid>
<comment_count>2</comment_count>
<who name="Ian Brown">ian.brown@hsbcib.com</who>
<bug_when>2008-03-17 01:38:38 -0700</bug_when>
<thetext>There are 2 issues here:
1. You have 8 connections to a single multi-port. How do you alter the connection to the 4th one without deleting them all and re-adding them from scratch.
2. You have 8 individual ports which you want to re-order so that they route better on the visual layout.
The summary seems to describe issue 1 whilst I was referring to issue 2. I suspect that the issues are unrelated in the code and so belong in 2 separate incidents.
Ian</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>232</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-19 18:25:50 -0700</bug_when>
<thetext>Edward writes:
&gt; You can do this now, but it&apos;s not as obvious as it could be.
&gt; Right click on a port and select &quot;Appearance-&gt;Bring to Front&quot;
&gt; and the port magically moves to the last position.
&gt; &quot;Appearance-&gt;Send to Back&quot; magically makes it appear first.
&gt; All that is really needed here is for the menu items to be renamed
&gt; for ports...
&gt; This should be easy.
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>234</commentid>
<comment_count>4</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-19 18:39:09 -0700</bug_when>
<thetext>My mistake, there are two separate issues here.
I&apos;ve started
https://chess.eecs.berkeley.edu/bugzilla/show_bug.cgi?id=146
&quot;Need to change visual order of ports to untangle wiring&quot;</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>942</commentid>
<comment_count>5</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-05-18 14:58:14 -0700</bug_when>
<thetext>The bug here was a request to change the order of ports for a composite or Expression actor.
The Appearance context menu for ports now has &apos;Move to First&apos; and
&apos;Move to Last&apos; instead of &apos;Send to Back&apos; and &apos;Bring to Front&apos;
because First/Last make more sense than Back/Front for ports.
So, this bug is solved for changing the order of ports for a composite or Expression actor,
where the user adds ports.
However, we cannot change the order of ports for Atomic Actors.
For example:
1) Drag in an ArrayPlotterXY actor
2) Right click on the x port, select Appearance -&gt; Move to First
3) A dialog pops up with the message:
Cannot change the position of model.ArrayPlotterXY.X because the position is set by the class
This message comes from _checkForImplied() in BasicGraphFrame:
/** Return true if any element of the specified list is implied.
* An element is implied if its getDerivedLevel() method returns
* anything smaller than Integer.MAX_VALUE.
* @param elements A list of instances of NamedObj.
* @return True if any element in the list is implied.
* @see NamedObj#getDerivedLevel()
*/
protected boolean _checkForImplied(List&lt;NamedObj&gt; elements) {
Iterator&lt;NamedObj&gt; elementIterator = elements.iterator();
while (elementIterator.hasNext()) {
NamedObj element = elementIterator.next();
if (element.getDerivedLevel() &lt; Integer.MAX_VALUE) {
MessageHandler.error(&quot;Cannot change the position of &quot;
+ element.getFullName()
+ &quot; because the position is set by the class.&quot;);
return true;
}
}
return false;
}</thetext>
</long_desc>
</bug>
<bug>
<bug_id>201</bug_id>
<creation_ts>2008-09-25 09:34:10 -0700</creation_ts>
<short_desc>Documentation System should include links to tests</short_desc>
<delta_ts>2008-09-25 09:34:10 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Documentation</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>6.00</estimated_time>
<remaining_time>6.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-85Z50vZF5iKHPYtk8Be-B6cMaG4MJColmu36wVNLCTQ</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>327</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-25 09:34:10 -0700</bug_when>
<thetext>Currently, if a user right clicks on an actor, then the documentation
window includes links to demos that use that actor. We should extend
this to include links to tests that use that actor.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>218</bug_id>
<creation_ts>2008-12-08 20:21:03 -0800</creation_ts>
<short_desc>Codegen should allow setting parameters from the command line</short_desc>
<delta_ts>2009-04-06 19:00:25 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Codegen</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>32.00</estimated_time>
<remaining_time>32.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-QbR_TMBJn88QljCZQsaasz35gwbti82jCosYplNsjNY</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>371</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-12-08 20:21:03 -0800</bug_when>
<thetext>It would be nice if there was a way to set model parameters from
the command line when running a codegen model.
- A first step would be setting top level parameters with something
like ./foo -myParameter 2.0
- It would also be nice to set parameters within the model:
./foo -toplevel.inner.innermost.myParameter &quot;This is a string&quot;
Actually parsing the parameters could be difficult. It might
be necessary to somehow mark parameters as being settable from
the command line or something.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>501</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-04-06 19:00:02 -0700</bug_when>
<thetext>We developed the ptolemy.moml.MoMLCommandLineApplication,
which is a non-graphical application that reads in command-line
arguments and runs a model.
We also looked in to passing command line arguments to Web Start
(JNLP) files. Web Start is a standards based system used to deploy
Java application in a secure manner where it is easy to update
individual components. It turns out that parsing command line
arguments via a URL is not permitted because the command line
arguments are seen as being insecure. The workaround is to generate a
.jnlp file for each invocation. We repurposed the Copernicus applet
code generator to also generate JNLP files.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>219</bug_id>
<creation_ts>2008-12-08 20:25:58 -0800</creation_ts>
<short_desc>Save models in a binary format</short_desc>
<delta_ts>2009-04-14 15:11:44 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>MoML</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>120.00</estimated_time>
<remaining_time>120.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-ZIoGgSyDRQF2vlWfHSVDqE6M5hAM9CE7jQ_ezjTlJ9g</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>372</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-12-08 20:25:58 -0800</bug_when>
<thetext>It would be nice if we could save models in a binary format that would
be faster to read etc.
The model could be saved after preinitialize():
- PubSubs connected, along with any other topological transformations
- Types checked
- Relation widths inferred
In some ways, this would be like byte code for the model. The
model could be opened and run and if there were no changes
(or only &quot;safe&quot; changes) then various steps would not need to occur.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>517</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-04-14 15:11:44 -0700</bug_when>
<thetext>Being able to save models in binary format would greatly improve startup
performance.
One idea would be to try to use serialization, though getting all the caches
set up properly could be complex.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>220</bug_id>
<creation_ts>2008-12-08 20:31:58 -0800</creation_ts>
<short_desc>LazyTypedCompositeActors should be controlled from the GUI</short_desc>
<delta_ts>2009-04-06 19:01:30 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>MoML</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>8.00</estimated_time>
<remaining_time>8.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-iGVFe5FKbPuuaT2Np9KZvlHZGx14C4faIrdUjyfEwgY</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>373</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-12-08 20:31:58 -0800</bug_when>
<thetext>LazyTypedCompositeActors defer evaluation of their contents until
absolutely necessary. This change greatly improves start up time,
though the preinitialize() phase ends up consuming what ever improvement
we see in start up time.
The current way to save a model using LazyTypedCompositeActor is to
edit ptolemy.moml.filter.BackwardCompatibility, add the Lazy filter in,
recompile, open the model and save the results.
There is the ConvertToLazy class, but it does not work:
- The moml file it generates does not have &lt;configure&gt;&lt;group&gt;...&lt;/group&gt;&lt;/configure&gt;
- Currently LazyTypedCompositeActors should not be used inside A
Actor Oriented Class definitions
In any case, we need a way to control when LazyTypedCompositeActors are
used. I propose that we create an attribute that can be dragged into a
TypedComposite that signifies that upon save, any TypeCompositeActor
sub-components are converted to LazyTypedCompositeActors. This would
give model builders fine grained control over the conversion.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>24</bug_id>
<creation_ts>2006-07-27 14:47:01 -0700</creation_ts>
<short_desc>Need a way to increase font size.</short_desc>
<delta_ts>2009-04-06 18:56:11 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>ASSIGNED</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-nOhZ-ngRKUESuHjqh1oo_dQILskVrJXT3F8BfGaueyo</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>36</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 14:47:01 -0700</bug_when>
<thetext>We need an easy way to increase font size for demos.
Edward&apos;s way is to edit the style sheet and change the
size. Perhaps we could have a way of changing style sheets
on the run from a menu choice?</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>75</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-11-06 16:05:00 -0800</bug_when>
<thetext>Changing style sheets only changes the fonts in the html viewer.
With the graphical model display, the annotations are
ptolemy/vergil/kernel/attributes/TextAttribute.java
which extends AbstractTextAttribute in the same package.
AbstractTextAttribute defines the textSize.
So, one possibility would be to change the textSize default value
in AbstractTextAttribute.
Dan Higgins writes:
&gt; There is a way to scale an entire workflow for presentations and journals,
&gt; and that is to use &apos;Print...&apos; The workflow is drawn by Kepler using vector
&gt; graphics, so it is drawn to the size of the printer. If you have Adobe
&gt; Acrobat, you can &apos;Print&apos; to a PDF file and set the native size of that PDF
&gt; for something like a large poster format. Or just print a PDF to ordinary
&gt; paper size; the workflow image is still scalable.
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>76</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-11-09 06:10:09 -0800</bug_when>
<thetext>Edward writes:
Making port labels bigger would not work without also increasing
the spacing between ports... The port labels would overlap.
Of course, increasing both font sizes and port spacing is just
about equivalent to zooming, so I would zoom...
We could easily add a preference for font sizes for actor
labels, but I&apos;m skeptical that this alone would be of much help.
As has been pointed out already,
if you have Adobe Acrobat, you can print to PDF.
I do this all the time to include screen shots in Latex documents.
In fact, in what is probably an indication of how far gone I am,
I sometimes use Vergil as a basic drawing program to make figures
for Latex documents, even if the figures have little to do with
Ptolemy. The resulting PDF documents can be arbitrarily scaled
without loss of resolution. Also, if you have Adobe Illustrator,
then you can open these PDF files with Illustrator and edit
them extensively...
</thetext>
</long_desc>
</bug>
<bug>
<bug_id>221</bug_id>
<creation_ts>2008-12-08 20:35:39 -0800</creation_ts>
<short_desc>Adding jars to the classpath at runtime</short_desc>
<delta_ts>2009-04-14 15:23:44 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Installer</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<dependson>222</dependson>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>16.00</estimated_time>
<remaining_time>16.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-2VJLcGU-q1NV5PP75BKa54sFjyLZe3WJyqYjAwI5NN8</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>374</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-12-08 20:35:39 -0800</bug_when>
<thetext>We need a way to easily add jars to the classpath at runtime.
This need could be solved with a component based architecture like
OSGi.
The problem is that model engineers create custom actors that require
custom jar files. We need an easy way to add those jar files to
the CLASSPATH.
There is also the classic problem of two actors needing different versions
of the same jar . . .</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>520</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-04-14 15:23:44 -0700</bug_when>
<thetext>If we were using bundles, then really we would only want to add to the
classpath so that MoMLParser could find classes and create actors. Thus,
this bug depends on bug# 222.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>141</bug_id>
<creation_ts>2008-03-19 16:00:48 -0700</creation_ts>
<short_desc>Plotter should be better about displaying times</short_desc>
<delta_ts>2008-03-19 16:00:48 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Ptplot</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162--5ywgbF2zzPfX-8gCGBm8nWZ80VR6-_xoxB5e-NxZW4</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>226</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-19 16:00:48 -0700</bug_when>
<thetext>Ian Brown writes:
&gt; It&apos;s difficult to interpret the plots because the x a-axis is in seconds.
&gt; It would be nice if one could configure the units to it could display
&gt; 6am, 7am etc.
The Ptolemy Plotter uses PtPlot, which is the first Java program Edward
and I wrote. PtPlot is based on XGraph.
Ptplot can display data with different legends by clicking on plot format
button in the plot and then changing the xticks and yticks
ptolemy.plot.PlotBase describes the format:
http://ptolemy.eecs.berkeley.edu/ptolemyII/ptIIlatest/ptII/doc/codeDoc/ptolemy/plot/PlotBox.html
says:
&lt;pre&gt;
XTicks: &lt;i&gt;label position, label position, ...&lt;/i&gt;
YTicks: &lt;i&gt;label position, label position, ...&lt;/i&gt;
&lt;/pre&gt;
A &lt;i&gt;label&lt;/i&gt; is a string that must be surrounded by quotation
marks if it contains any spaces. A &lt;i&gt;position&lt;/i&gt; is a number
giving the location of the tick mark along the axis. For example,
a horizontal axis for a frequency domain plot might have tick marks
as follows:
&lt;pre&gt;
XTicks: -PI -3.14159, -PI/2 -1.570795, 0 0, PI/2 1.570795, PI 3.14159
&lt;/pre&gt;
Tick marks could also denote years, months, days of the week, etc.
&lt;p&gt;
So, it is possible to use the ticks to display the time.
The tricky part is that properly managing the location of the ticks is
a real art. It is difficult to determine how many ticks to display, the
easiest way is to measure the length of the string to be displayed and
then make some guesses. The code that does this is somewhat ugly.
I see two ways of doing this.
1) Create a DatePloter actor that would brute force set the xticks parameter.
The parameters of the plotter would have include some notion of whether
the input was in seconds, hours, days, years etc.
2) Update the PlotBox to properly handle dates.
We&apos;ve had requests for this in the past. The second choice is the preferred
option.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>42</bug_id>
<creation_ts>2006-08-15 14:51:02 -0700</creation_ts>
<short_desc>&quot;Open Actor&quot; vs &quot;Open Actor Instance&quot;</short_desc>
<delta_ts>2006-08-21 10:01:03 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>ASSIGNED</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-qUAY3b-qo4-hAsM--2OXgX75oE_QIzmaxf0dsKfF1nU</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>63</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-08-15 14:51:02 -0700</bug_when>
<thetext>Ray writes:
I think we&apos;re going to push forward with a solution to our &quot;modular
component&quot; problem using inner class definitions (if we can get them to
work) in combination with pub/sub to loosely bind the models that require
such additional component &quot;plug-in&quot; configuration. Our users will be able
to drag and drop the &quot;component&quot; modules into the &quot;master&quot; module (e.g., to
add population sub-groups). Under the hood, we&apos;re going to do this by
creating a URL referenced instance of the &quot;master&quot; class and then adding URL
referenced instances the &quot;components&quot; inside that entity. For example:
&lt;entity name=&quot;AA Crime&quot; class=&quot;gdp_sub&quot;
source=&quot;file:///D:/UserData/gdp_sub.moml&quot;&gt;
&lt;property name=&quot;_location&quot; class=&quot;ptolemy.kernel.util.Location&quot;
value=&quot;[65.0, 140.0]&quot;&gt;
&lt;/property&gt;
&lt;property name=&quot;nation&quot; class=&quot;ptolemy.data.expr.StringParameter&quot;
value=&quot;$nation&quot;&gt;
&lt;/property&gt;
&lt;property name=&quot;region&quot; class=&quot;ptolemy.data.expr.StringParameter&quot;
value=&quot;$region&quot;&gt;
&lt;/property&gt;
&lt;entity name=&quot;AA Subgroup Crime&quot; class=&quot;gdp_sub&quot;
source=&quot;file:///D:/UserData/gdp_sub.moml&quot;&gt;
&lt;property name=&quot;nation&quot;
class=&quot;ptolemy.data.expr.StringParameter&quot; value=&quot;$nation&quot;&gt;
&lt;/property&gt;
&lt;property name=&quot;region&quot;
class=&quot;ptolemy.data.expr.StringParameter&quot; value=&quot;$region&quot;&gt;
&lt;/property&gt;
&lt;/entity&gt;
&lt;/entity&gt;
However, Vergil does not seem to support this valid MOML model. Once a
model such as this is created, Vergil can execute the model as expected, but
because &quot;Open Actor&quot; opens the class file definition (not the
specific/configured instance of the class) you cannot see the underlying
encapsulation or any additions or modifications to the instance. When the
user right clicks on a class instance, Vergil should offer the user the
ability to &quot;Open Class Definition&quot; or &quot;Open Actor Instance&quot;. The
implementation of &quot;Open Class Definition&quot; would be exactly as defined today.
However, the implementation of &quot;Open Actor Instance&quot; should open the
specific instance. By doing so, the user should be able to: (1) see any
entities that were added to the instance, (2) add entities to an instance
(not to a class), and (3) debug a specific instance of an instantiated
class.
Not being intimately familiar with Vergil, I&apos;m not sure how easy this would
be, but we would be happy with any incremental progress because as it stands
now Vergil cannot even communicate the true MOML model to the user, and I
think it looses them upon saving the model. I know we mentioned the
debugging aspect of this during our visit, but the scope has become much
larger, and much more important. So I figured I would document why we need
it, and hope it is something you could take a look at.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>65</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-08-21 10:01:03 -0700</bug_when>
<thetext>Edward writes:
I&apos;ve checked in a partial implementation of this.
There is now an &quot;Open Instance&quot; item on the context menu.
There are two items still to do:
- Currently, if you select &quot;Open Instance&quot; on an atomic actor,
you see its source code, as before. This is not really correct,
as the source code is the class definition, not the instance.
I think what it should display is the current state of parameters.
- There are too many items in the context menu. We need more
hierarchy.
</thetext>
</long_desc>
</bug>
<bug>
<bug_id>222</bug_id>
<creation_ts>2008-12-08 20:37:32 -0800</creation_ts>
<short_desc>MoMLParser should be extended to handle different classloaders</short_desc>
<delta_ts>2010-05-05 17:33:39 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>MoML</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<blocked>221</blocked>
<blocked>337</blocked>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-9x2svi2y8LDuUwC2-t96kgbKqMSRmuTzat1-hUAj8yo</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>375</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-12-08 20:37:32 -0800</bug_when>
<thetext>MoMLParser should be able to handle different classloaders. This might be
obviated by the Triquetrum work. If we do things right here, perhaps
we can avoid some of the &quot;Eclipse-buddies&quot; chaos found in OSGi.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>519</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-04-14 15:19:52 -0700</bug_when>
<thetext>If we make it so MoML OSGi bundle can instantiate objects of any class, then
we are closer to deploying Ptolemy using RCP.
Brian Hudson suggests using OSGi dynamic services, where we have actors
register that they provide a service and the moml bundle looks for bundles
that provide that service.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>142</bug_id>
<creation_ts>2008-03-19 16:15:36 -0700</creation_ts>
<short_desc>Be able to combine multiple plots into one window.</short_desc>
<delta_ts>2008-03-19 16:15:36 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Ptplot</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-_8p-pu5xft5wM-Abr3kLjjl5d7xSWm5Qyi3WVvAG1fw</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>227</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-19 16:15:36 -0700</bug_when>
<thetext>Ian Brown writes:
&gt; It would be nice to have plotter1 and plotter2 combined in one plot.
&gt; We cannot do this at the moment because all the data series share a
&gt; y-axis scale and so combining them would result in the prices being
&gt; displayed as a horizontal line.
The correct thing would be to handle two separate Y axes in one plot.
This would require modification to PlotBox.
A workaround would be to use the Matlab plotter. Note that to use Matlab
under cygwin requires starting up with $PTII/bin/vergil -jni.
Another workaround would be to use R Plotter, like what Kepler does.
BTW - The plotter has sample code that displays shows two plots. We could
create an actor that had two plots, but that is not what is being
asked for.
Another way to show two plots is to use Edward&apos;s interface window,
which allows the user to customize the run control panel.
This is a work in progress that is not shipped with the full release,
but to run it, download the CVS version of Ptolemy, open a model and do
View -&gt; &quot;Interface Window&quot;</thetext>
</long_desc>
</bug>
<bug>
<bug_id>43</bug_id>
<creation_ts>2006-08-21 09:46:30 -0700</creation_ts>
<short_desc>GR Quicktime actors have deprecation warnings</short_desc>
<delta_ts>2006-08-21 09:46:30 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>gr domain</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-S3wmrLgv1S5aVGVphzou6McFGiigHQWDHnPxCGhi3AM</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>64</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-08-21 09:46:30 -0700</bug_when>
<thetext>The GR Quicktime actors have deprecation warning because QTCanvas etc. are
deprecated.
http://lists.apple.com/archives/QuickTime-java/2004/Apr/msg00016.html
says:
--start--
&gt; I am capturing video and I show it in a window with a QTCanvas,
&gt; but in QTJ API reference appears this class like &quot;deprecated&quot;. That
&gt; class I must use to replace QTCanvas? And all the examples of QTJ
&gt; also are &quot;deprecated&quot;. Exits examples not &quot;deprecated&quot;?
if you&apos;re using it on Windows only you&apos;re OK, if on MacOS, QTCanvas doesn&apos;t
work anymore with latest JavaVM from Apple and latest QTJava
you can use the QTFactory static methods I think to get a player component
for your content/stream (has methods for heavyweight and lightweight
component creation)
you can also maybe use those static factory methods and some dummy movie
and then once you got the component talk to it and replace the movie played
with your grabbed stuff
--end--</thetext>
</long_desc>
</bug>
<bug>
<bug_id>62</bug_id>
<creation_ts>2007-02-20 06:09:02 -0800</creation_ts>
<short_desc>HSIF is incomplete</short_desc>
<delta_ts>2007-02-20 06:09:02 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>HSIF</component>
<version>6.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340162-EdApOngY8BZhUKL3Bjt2uOKjX_0ekychJq0OZvkIWrw</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>95</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-02-20 06:09:02 -0800</bug_when>
<thetext>The HSIF translation is a prototype and is incomplete.
hsif/test/auto/HybridAutomatonNot_moml.xml fails because of this.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>298</bug_id>
<creation_ts>2009-07-22 11:50:25 -0700</creation_ts>
<short_desc>ptinyViewer and fullViewer should optionally disable selection and drag</short_desc>
<delta_ts>2009-07-22 11:50:25 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-nzSXnt0bKnYk1cReJ4UHGAVbnXq7e7PaFAPAMDTxx-E</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>580</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-07-22 11:50:25 -0700</bug_when>
<thetext>Edward writes:
For the mini-viewer, we probably also probably want to be able
to optionally disable selecting actors or other objects and moving them.
This would be useful, for example, for the DOP database app.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>339</bug_id>
<creation_ts>2010-05-05 09:32:29 -0700</creation_ts>
<short_desc>Codegen/Clustering - complete work on associating multiple fire methods with actors</short_desc>
<delta_ts>2010-05-05 09:32:29 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Codegen</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>1000.00</estimated_time>
<remaining_time>1000.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-3rQRYu9ph1z7xmEOu6kAnjMT1btJvVWsRC0tHstAqKs</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>679</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-05 09:32:29 -0700</bug_when>
<thetext>From the April, 2010 site visit, Warren writes:
&quot;`Code Generation - Clustering Work - Complete work on associating multiple fire methods with actors.&quot;
See
Stavros Tripakis, Dai Nguyen Bui, Bert Rodiers, Edward A.
Lee. &quot;Compositionality in Synchronous Data Flow: Modular
Code Generation from Hierarchical SDF Graphs (Poster
Abstract)&quot;. ACM/IEEE First International Conference on
Cyber-Physical Systems, Raj Rajkumar (ed.), April, 2010.
http://chess.eecs.berkeley.edu/pubs/662.html</thetext>
</long_desc>
</bug>
<bug>
<bug_id>160</bug_id>
<creation_ts>2008-04-28 15:52:56 -0700</creation_ts>
<short_desc>Ptplot: Add support for labels and drawing lines</short_desc>
<delta_ts>2008-04-28 16:18:13 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Ptplot</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>10.00</estimated_time>
<remaining_time>10.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-myBJiAC6B3Nb919DGZV-OCgbKUSjEsPEhT076iQ1k_E</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>260</commentid>
<comment_count>0</comment_count>
<attachid>15</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-04-28 15:52:56 -0700</bug_when>
<thetext>Created attachment 15
Patches from Tom Peachey of Monash for Ptplot
Below is my email to Tom about his changes.
The line format changes are fairly straightforward.
The label changes should be looked at. We don&apos;t want to add yet another
data field to PlotPoint and increase its size.
&gt; From: &quot;Christopher Brooks&quot; &lt;cxh@eecs.berkeley.edu&gt;
&gt; To: Tom Peachey &lt;Tom.Peachey@infotech.monash.edu.au&gt;
&gt; Subject: Ptplot: Re: Some mods to Kepler (Ptolemy)
&gt; Cc: eal@eecs.berkeley.edu
&gt; Date: Mon, 28 Apr 2008 15:47:33 -0700
&gt;
&gt; Hi Tom,
&gt;
&gt; Thanks for your changes, I folded some of them in.
&gt; My explanations are below.
&gt;
&gt; Tom Peachey &lt;Tom.Peachey@infotech.monash.edu.au&gt; writes:
&gt;
&gt; &gt; I work with David Abramson&apos;s group at Monash Univ. You probably
&gt; &gt; know that we are making some modifications to Kepler, in order to
&gt; &gt; incorporate our Nimrod tools. As part of this I needed some
&gt; &gt; additions to the plotml functionality in Ptolemy. Initially I
&gt; &gt; tried to do this by extending the existing classes but this turned
&gt; &gt; out to be impossible. So I needed to modify the current
&gt; &gt; classes. The new code is attached in case you want to incorporate
&gt; &gt; these changes.
&gt; &gt;
&gt; &gt; Briefly, the mods. are as follows.
&gt; &gt;
&gt; &gt; 1.. I needed larger plotting points for graphs so have added a
&gt; &gt; &quot;bigdots&quot; option to the &quot;marks&quot;.
&gt;
&gt; I added your bigdots change
&gt; To see a bigdot, try:
&gt; $PTII/bin/ptplot $PTII/ptolemy/plot/test/captionBigdotTest.plt
&gt;
&gt; &gt; 2.. Within the &quot;dataset&quot; element I&apos;ve added attributes &quot;markscolor&quot;,
&gt; &gt; &quot;linescolor&quot; and &quot;linesstyle&quot;. These enable control of the colours of
&gt; &gt; the marks and the lines for a given dataset. A wider range of colours
&gt; &gt; has been added; all standard java color-names are now recognised. The
&gt; &gt; &quot;linesstyle&quot; may be &quot;solid&quot;, &quot;dashed&quot;, &quot;dotted&quot;, &quot;dotdashed&quot; or
&gt; &gt; &quot;dotdotdashed&quot;.
&gt;
&gt; I think these changes can go in. I&apos;ll add a feature request for this
&gt; change.
&gt;
&gt; &gt; 3.. Individual plotted points can now be labelled. The &quot;point&quot; and
&gt; &gt; &quot;move&quot; elements now allow a &quot;label&quot; attribute - just any text.
&gt;
&gt; I&apos;m not adding this change at this time. The problem is that for size
&gt; and efficiency reasons, PlotPoint should not have any more fields
&gt; added to it. We need to come up with a different architecture that
&gt; allows us to add fields without increasing the size. I&apos;ll add a
&gt; feature request for this change.
&gt;
&gt; &gt; 4.. There is a &quot;caption&quot; element that displays text at the bottom of
&gt; &gt; the image.
&gt;
&gt; The caption change is in.
&gt;
&gt; &gt; Of course the plotml.dtd has been modified accordingly. To show what I
&gt; &gt; needed I have attached an xml file that uses the new functions.
&gt; &gt;
&gt; &gt; In the main I have renamed the files where modified by adding &quot;Extended&quot;
&gt; &gt; to the name - so Plot.java became PlotExtended.java etc.
&gt; &gt;
&gt; &gt; Files changed are:
&gt; &gt;
&gt; &gt; Files changed are:
&gt; &gt;
&gt; &gt; PlotMLApplication.java -&gt; PlotMLApplicationExtended.java
&gt; &gt;
&gt; &gt; PlotMLApplet.java -&gt; PlotMLAppletExtended.java
&gt; &gt;
&gt; &gt; PlotMLParser.java -&gt; PlotMLParserExtended.java
&gt; &gt;
&gt; &gt; PlotPoint.java -&gt; PlotPointExtended.java
&gt; &gt;
&gt; &gt; Plot.java -&gt; PlotExtended.java
&gt; &gt;
&gt; &gt; Also changed was PlotBox.java, but by this time I was fed up with the
&gt; &gt; name changes and all the consequences that would follow. And I see that
&gt; &gt; I have not updated the write methods in Plot. I&apos;m not not sure of your
&gt; &gt; coding conventions, so let me apologise for inadequacies there.
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; Tom Peachey
&gt;</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>263</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-04-28 16:16:45 -0700</bug_when>
<thetext>Stefan Schroeder submitted a patch to add a label which also adds a string
to PlotPoint.
&gt; I added a new feature to Ptplot 5.6.
&gt; The point tag is extended to carry a &quot;label&quot;.
&gt;
&gt; &lt;p x=3D&quot;1.0&quot; y=3D&quot;-2.5&quot; label=3D&quot;interesting&quot; /&gt;
&gt;
&gt; The text is then plotted, next to the data point
&gt; using a default font.
&gt;
&gt; The patch is by no means polished, but it works for me.
&gt; Perhaps it is of interest to others, too.
&gt;
&gt; Please check it out and tell me your opinion.
PlotPoint.java gets a String field, which will increase size for all
points, even if the String is not used. It might be better to have
a separate hash or sparse matrix for labels? What I would do is
have the first time we see a label initialize a separate data
structure for labels. Then as we plot, we check to see if
the data structure has been initialized and if it has, then we
check for the label for a specific point.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>264</commentid>
<comment_count>2</comment_count>
<attachid>16</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-04-28 16:18:13 -0700</bug_when>
<thetext>Created attachment 16
Ptplot Patch from Stefan Schroeder that adds labels</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>15</attachid>
<date>2008-04-28 15:52:56 -0700</date>
<delta_ts>2008-04-28 15:52:56 -0700</delta_ts>
<desc>Patches from Tom Peachey of Monash for Ptplot</desc>
<filename>TomPeacheyPtPlotPatch030508.tar.gz</filename>
<type>application/unix-tar</type>
<size>68844</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340163-xk5AVgpFtHQG-sWHpDvwnsv7vEMFeegLvE6eKuBqHKI</token>
</attachment>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>16</attachid>
<date>2008-04-28 16:18:13 -0700</date>
<delta_ts>2008-04-28 16:18:13 -0700</delta_ts>
<desc>Ptplot Patch from Stefan Schroeder that adds labels</desc>
<filename>StefanSchroederPtPlotLabelPatch.zip</filename>
<type>application/x-zip</type>
<size>29673</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340163-mC_fX19V_UyqzyMybBzMeLSU-N57VVo9rx8FyQiO5lo</token>
</attachment>
</bug>
<bug>
<bug_id>45</bug_id>
<creation_ts>2006-09-20 20:42:38 -0700</creation_ts>
<short_desc>synchronizeToRealTime is inconsistent between SDF, Continuous and CT.</short_desc>
<delta_ts>2006-09-20 20:42:38 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>SDF</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>Windows Server 2003</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-JBxTFaUoFk7e05yMPFadC1Kqj1BiNeu5opYotOBIo14</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>67</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-09-20 20:42:38 -0700</bug_when>
<thetext>J. S. Senecal writes:
&gt; I also find a strange inconsistency in the way the synchronizeToRealTime
&gt; is handled in SDFDirector.prefire(),
&gt; ContinuousDirector._synchronizeToRealTime() and
&gt; CTMultiSolverDirector.updateContinuousState(). I think it would be
&gt; better if there were just one way to do the synchronisation, maybe
&gt; implemented in a super class.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>49</bug_id>
<creation_ts>2006-11-09 06:12:34 -0800</creation_ts>
<short_desc>There should be a way to group multiple ChangeRequests.</short_desc>
<delta_ts>2006-11-09 06:12:34 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>kernel</component>
<version>6.0-beta</version>
<rep_platform>PC</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-f43snbb3crhq5pUWtGXKFG6gG5D-hvxd-_U4wMU9TnY</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>77</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-11-09 06:12:34 -0800</bug_when>
<thetext>During the Rome Project, there were problems where making lots of
ChangeRequests resulted in a performance hit. We should figure
out a way to aggregate those ChangeRequests into one group.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>68</bug_id>
<creation_ts>2007-06-04 15:51:15 -0700</creation_ts>
<short_desc>Walk the tree and only show things that are published</short_desc>
<delta_ts>2009-04-06 18:42:57 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>8.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-FWTkIjxFRb1nwpU1d8Ebd58PlUo0cC3PHLGDfk8kMu8</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>118</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-06-04 15:51:15 -0700</bug_when>
<thetext>From the Rome May 2007 visit:
- Walk the tree, and only show things that are published
- Given a parameter, tell me the names of the channels
- This is logical connectivity</thetext>
</long_desc>
</bug>
<bug>
<bug_id>14</bug_id>
<creation_ts>2006-05-10 08:00:00 -0700</creation_ts>
<short_desc>Support Derivatives or linearizing models</short_desc>
<delta_ts>2006-05-10 08:00:00 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>6.0.1</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-dyncFyrziw0PoNFuCwfl2F4FmUzTsyVV0BHxkExiS6E</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>26</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-05-10 08:00:00 -0700</bug_when>
<thetext>The email thread below has some suggestions.
Edward writes:
Interesting...
Indeed, linearizing models would be a useful
capability to develop... Thomas Feng (cc&apos;d here) has developed
a generic backtracking capability that could be applied to this.
I hadn&apos;t thought of this as an application...
Thanks for the suggestions...
Edward
At 10:41 PM 5/9/2006, Horst Salzwedel wrote:
&gt;Ed,
&gt;
&gt;FYI:
&gt;CT domain software systems like Model-C (precurser of Simulink),
&gt;Simulink and SystemBuild include differentiation capabilities. This
&gt;is done by setting markers in the block diagram and determine
&gt;derivatives by perturbing the system (symmetric or unsymetric). The
&gt;main application is to determine linear models from non-linear ones
&gt;for stability analysis --- IMPORTANT. This might also be a desirable
&gt;feature for Ptolemy.
&gt;
&gt;We also had a derivative block in ModelC. I have not checked,
&gt;however I assume that Simulink and SystemBuild also include a
&gt;derivative block. As you said, derivatives of noisy signals result
&gt;in even noisier signals.
&gt;
&gt;Around 1985 some collegues at Systems Control (Ron de Hoff ???) had
&gt;developed a method of determining derivatives by integration (to
&gt;determine linear models of jet engines), AFWAL or NASA report. This
&gt;filtered out the noise. However, I do not remember how they did it
&gt;and what the trade offs were.
&gt;
&gt;I normally changed my model structures to eliminate derivatives,
&gt;i.e., choosing appropriate states. An example of this approach is
&gt;the Luenberger/Bryson Observer, that achieves this whithout changing
&gt;the order of the differential equation.
&gt;
&gt;Horst
&gt;
&gt;Edward A. Lee wrote:
&gt;&gt;At 10:19 AM 5/9/2006, Elizabeth Latronico (RTC) wrote:
&gt;&gt;&gt;Hello Ptolemy experts,
&gt;&gt;&gt;
&gt;&gt;&gt;How do I calculate a derivative in Ptolemy? I can&apos;t seem to find
&gt;&gt;&gt;an actor for it (just the Integrator actor). I checked the
&gt;&gt;&gt;archives but didn&apos;t see an answer for this - I apologize if I missed it.
&gt;&gt;&gt;
&gt;&gt;&gt;Thanks,
&gt;&gt;&gt;Beth
&gt;&gt;
&gt;&gt;Typically, software that implements that ODEs does not directly
&gt;&gt;provide a differentiator. Instead, you use an integrator in a
&gt;&gt;feedback loop. e.g., if you have some formula:
&gt;&gt; dx/dt = f(x)
&gt;&gt;then you can implement this as follows:
&gt;&gt; ----&gt; Integrator ----&gt; f ---
&gt;&gt; | |
&gt;&gt; -----------------------------
&gt;&gt;The input to the Integrator will be dx/dt.
&gt;&gt;Its output will be x.
&gt;&gt;The reason it is done this way is for numerical
&gt;&gt;stability. Calculating derivatives on discretized
&gt;&gt;approximations of continuous signals is an extremely
&gt;&gt;tricky proposition...
&gt;&gt;The downside, of course, is that you have to have
&gt;&gt;a formula for the derivative. If you just have some
&gt;&gt;waveform, then things are very iffy, because what
&gt;&gt;you really have is samples of a waveform. If these
&gt;&gt;are uniformly spaced samples, and you know that
&gt;&gt;the Nyquist criterion is satisfied, then you can
&gt;&gt;approximate the derivative with a finite difference,
&gt;&gt;but this would be better done using a discrete modeling
&gt;&gt;environment like SDF or DE.
&gt;&gt;Edward
&gt;&gt;</thetext>
</long_desc>
</bug>
<bug>
<bug_id>50</bug_id>
<creation_ts>2006-11-13 10:56:24 -0800</creation_ts>
<short_desc>Scheduler should be smarter about not executing unneeded blocks</short_desc>
<delta_ts>2007-12-08 07:56:33 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>kernel</component>
<version>6.0-devel</version>
<rep_platform>PC</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>INVALID</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-3-iICBqcIiYWKktEhP_cFqHRCu3muYH6Tpi57Jy3Eu8</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>78</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-11-13 10:56:24 -0800</bug_when>
<thetext>J.S. Senecal writes:
Suppose you have a dataflow graph that looks like:
-------- -----------------
| A |---------&gt;| |
-------- | BooleanSelect |---&gt;
+----&gt;| |
-------- | -----------------
| B |----|
--------
In the case where A sends a token at time t, it means that you actually
wouldn&apos;t have to compute B at all since you know it will be flushed. The
same problem arises with logical operators (e.g. AND, OR) and IFs. I&apos;m
worried about these issues since it has real consequences when dealing
with real-time video for instance. Imagine A and B compute video and
replace the BooleanSelect by a VideoSwitch actor that would allow you to
choose wether you play A or B. In that case you need to know that you
actually don&apos;t need to compute one of the two branches.
Is there a solution for this in PtII? Is there a domain that can deal
with these issues?</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>79</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-11-13 11:06:06 -0800</bug_when>
<thetext>BTW - This sounds like BDF (sort of)
http://ptolemy.eecs.berkeley.edu/ptolemyclassic/almagest/docs/user/html/domains.doc5.html
says:
Boolean dataflow was developed by Joe Buck as part of his Ph.D. thesis research
[Buc93c]. Like DDF, it supports run-time flow of control. Unlike DDF, it
attempts to construct a compile-time schedule. Thus it achieves the efficiency
of SDF with the generality of DDF. It currently supports a somewhat more limited
range of stars than DDF, and does not support recursion, but the model of
computation is, in principle, equally general. Its applications are the same as
those of DDF.
The basic mechanism used in BDF is to construct an annotated schedule, by which
we mean a static schedule where each firing in the schedule is annotated with
the Boolean conditions under which it occurs. Thus, any sequence of firings can
depend on a sequence of Boolean values computed during the execution. Executing
the annotated schedule involves much less overhead than executing a dynamic
dataflow schedule.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>80</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-11-13 17:15:24 -0800</bug_when>
<thetext>Edward writes:
&gt;The scheduler _is_ smart about this...
&gt;The problem was this guy was using the wrong scheduler (SDF).
&gt;He needs to use DDF, PN, or BDF... We have several papers
&gt;and PhD theses on this topic...
My bad. Marking this bug as Invalid as in &quot;Invalid User IQ&quot; on my part :-)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>342</bug_id>
<creation_ts>2010-05-05 11:44:14 -0700</creation_ts>
<short_desc>Codegen should handle custom actors and actors that do not have adapters</short_desc>
<delta_ts>2011-06-15 10:59:13 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Codegen</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>ASSIGNED</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>120.00</estimated_time>
<remaining_time>120.00</remaining_time>
<actual_time>0.00</actual_time>
<deadline>2010-08-31</deadline>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-_EYg8mZ-AYcLXoo8K6RR_yrujnNAWJF1NMGmKkuocro</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>682</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-05 11:44:14 -0700</bug_when>
<thetext>If the code generator comes across a custom actor or an actor for which
there is no codegen adapter, then the code generator should construct
a stub which calls the custom actor.
This would mean that generated code would have a dependency on the
Ptolemy II tree.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>746</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2011-06-15 10:59:13 -0700</bug_when>
<thetext>Generating code for custom actors that do not have templates is in progress.
We have a script at ptolemy/cg/kernel/generic/program/procedural/java/test/findAllSDFTests that looks at all the tests and find SDF models
that might work with codegen. The output is:
All tests: 2289
All SDF tests: 1353
All SDF tests except cg, codegen, jai jmf: 694
SDF tests that are not in domains/*, except for domains/sdf: 417
SDF tests that have DE, FSM or PN: 17
SDF tests obviously use Matrices: 0
SDF tests that might work: 400
SDF tests that don&apos;t hang: 399
When we run the 399 tests, we generated code for 317 of them.
Of the 317 tests for which we generated code, 167 used custom actors.
Of the 167 custom actor tests, 107 failed and 60 passed.
The passed tests are:
AbsoluteValue
AllColt
ApplyFunction
ArrayAppend3
ArrayContains
ArrayLevelCrossing
ArrayLevelCrossing2
ArrayRemoveElement
Case2
ClassWrapper
DeScrambler
DelayTime
ElementsToArray
Equals
FileWriter1
FileWriter2
Gaussian
Gaussian1
Gaussian2
GradientAdaptiveLattice
IIR
Lattice
LazyInnerClass
LazyVariableBug
LevinsonDurbin
LevinsonDurbin2
LevinsonDurbin3
LookupTable
MathFunction3
MaxIndex
Maximum
Multiplexor
PhaseUnwrap
PolarToComplexAndBack
RampFiringLimitSDF
ReadFile1
RecursiveLattice
Scrambler1
Sinewave
Sinewave2
Sinewave3
SleepMultipleFire
StringCompare
StringFunction
StringLength
StringMatches2
StringReplace
StringSimpleReplace
StringSubstring
StringSubstring2
StringSubstring3
StringToIntArray
Test
ThrowModelError
TokenToExpression
UnaryMathFunction
VariableSleep
WallClockTime
logic
sizedarray1
The 107 failures are for models that use types such as UnsignedByte
or ImageTokens that are not supported.
A common failure that we need to address is multirate actors.
For example, the HadamardCode model fails in codegeneration:
Attempt to get data from an empty mailbox.
in .HadamardCode.SequenceToArray2.HadamardCode_SequenceToArray2__actor.input
at ptolemy.actor.AbstractReceiver.getArray(AbstractReceiver.java:155)
at ptolemy.actor.IOPort.get(IOPort.java:995)
at ptolemy.domains.sdf.lib.SequenceToArray.fire(SequenceToArray.java:156)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>15</bug_id>
<creation_ts>2006-06-13 09:00:05 -0700</creation_ts>
<short_desc>Provide ant build.xml file</short_desc>
<delta_ts>2012-06-28 22:55:54 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>build system</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>200.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-dYL7rGbaqhsYdbFgvJqHthZSvlbTmqN3EZ6qShZilDc</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>27</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-06-13 09:00:05 -0700</bug_when>
<thetext>It would be nice if we provided a working ant build.xml file.
Eclipse users would find this useful.
Adam wrote:
[Christopher wrote]
&gt; Still, I&apos;d be interested in doing more with Ant so that we can run
&gt; the tests from within Eclipse.
This article talks about wrapping your makefile in an ant file, so you
can build it more easily in Eclipse:
http://www-128.ibm.com/developerworks/eserver/library/es-unix-eclipse/?ca=d
gr-lnxw07Eclipse4Unix#N10279
The above article is about calling make from within ant.
This may be a good low-cost solution for Ptolemy. Many Eclipse plugins
include Makefile editors, if you want to do everything in Eclipse. I
haven&apos;t seen this as a standalone plugin, but Eclipse GCJ Builder is one
such tool:
http://gcjbuilder.sourceforge.net/</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>183</commentid>
<comment_count>1</comment_count>
<attachid>4</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-09-12 19:34:31 -0700</bug_when>
<thetext>Created attachment 4
Version 1.3 of ptII/build.xml, which probably does not work.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>184</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-09-12 19:34:54 -0700</bug_when>
<thetext>For further info about ant and Ptolemy, see
http://groups.google.com/group/comp.soft-sys.ptolemy/browse_thread/thread/b40fd38f194f2963/096f5f077db00dda?lnk=st&amp;q=ptolemy+ant&amp;rnum=1#096f5f077db00dda</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>960</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-06-28 22:55:54 -0700</bug_when>
<work_time>200.0</work_time>
<thetext>We have had a working build.xml file for some time now.</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>4</attachid>
<date>2007-09-12 19:34:31 -0700</date>
<delta_ts>2007-09-12 19:34:31 -0700</delta_ts>
<desc>Version 1.3 of ptII/build.xml, which probably does not work.</desc>
<filename>build.xml</filename>
<type>text/plain</type>
<size>6757</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340163-urmSKVSNbA_ACc1Scue6TtWxxVYp6Qsp3Coi942OOsE</token>
</attachment>
</bug>
<bug>
<bug_id>196</bug_id>
<creation_ts>2008-09-18 23:45:58 -0700</creation_ts>
<short_desc>Convert the Ptolemy II docs from Framemaker to LaTeX</short_desc>
<delta_ts>2012-06-28 23:03:46 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Documentation</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>120.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<deadline>2009-06-30</deadline>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163--FF5g2Di1bHhu-5bZhrGu1Q4s87jcUgznotoWXqRCKI</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>319</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-18 23:45:58 -0700</bug_when>
<thetext>Our version of Framemaker is old and runs only on Windows. Upgrades are about
$300/seat. Converting to LaTeX seems like more of a long-term solution and
is better than exposing team members to legacy software.
The conversion from Framemaker to LaTeX can be partially automated, but will
require quite a bit of hand tuning. My initial effort was to translate
from MIF files to LaTeX, but the MIF files do not have the text in the
order it is displayed. The MIF to LaTeX tool at http://www.cs.stir.ac.uk/~kjt/software/framemaker/mif_la.html requires that the MIF use a particular
set of styles.
Instead of translating from MIF to LaTeX, I&apos;ve had a certain amount of success
translating from Framemaker xml files to LaTeX. It looks like we can use the
DzBatcher tool (http://www.datazone.com/download_dzb2.html) to generate the xml
xml files automatically.
I&apos;ve been checking the scripts into the ptIIdoc CVS repository. To get access:
cvs -d :ext:source.eecs.berkeley.edu:/home/cvs_chess co ptIIdoc
The scripts are in ptIIdoc/doc/design/src.
Still to come:
Fix up code paragraphs
Cross References
Indexing
Build book files that assemble all the chapters.
I think to do these steps will require 4-8 hours. To complete the conversion
of the chapters will require effort by many people.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>962</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-06-28 23:03:46 -0700</bug_when>
<thetext>We converted the Framemaker documents to LaTeX and are working on the
LaTeX for the upcoming Ptolemy II book.
Notes about the conversion may be found at
http://chess.eecs.berkeley.edu/ptexternal/wiki/Main/FramemakerToLaTeX
The output is in the ptIIdoc repository
:ext:source.eecs.berkeley.edu:/home/cvs
in
doc/design/src/tex</thetext>
</long_desc>
</bug>
<bug>
<bug_id>70</bug_id>
<creation_ts>2007-06-04 15:54:02 -0700</creation_ts>
<short_desc>Try codegen on Rome AFRL Rome Model</short_desc>
<delta_ts>2010-05-05 11:40:18 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Codegen</component>
<version>6.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>ASSIGNED</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<dependson>341</dependson>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-3RRwmFQceQ9MVDATzzhD6n7bgXVIbYkVhKF-XCuQx4Y</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>120</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-06-04 15:54:02 -0700</bug_when>
<thetext>From the Rome May, 2007 visit:
Try C generation on code on Nome
- can we call into the economics java model
- generate c code for submodels
- Need these actors
- ptolemy/codegen/c/actor/lib/CurrentTime.java
- ptolemy/codegen/c/actor/lib/Publisher.java
- ptolemy/codegen/c/actor/lib/Subscriber.java
- ptolemy/codegen/c/actor/lib/SubscriptionAggregator.java
- ptolemy/codegen/c/actor/lib/colt/ColtBinomialSelector.java
- ptolemy/codegen/c/actor/lib/colt/ColtBinomial.java
- ptolemy/codegen/c/actor/lib/colt/ColtPoisson.java
I&apos;ve checked in stubs for these actors.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>128</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-06-14 17:36:07 -0700</bug_when>
<thetext>For the Rome effort, we have this open RFE:
https://chess.eecs.berkeley.edu/bugzilla/show_bug.cgi?id=70
&gt; From the Rome May, 2007 visit:
&gt; Try C generation on code on Nome
&gt; - can we call into the economics java model
&gt; - generate c code for submodels
&gt; - Need these actors
&gt; - ptolemy/codegen/c/actor/lib/CurrentTime.java
&gt; - ptolemy/codegen/c/actor/lib/Publisher.java
&gt; - ptolemy/codegen/c/actor/lib/Subscriber.java
&gt; - ptolemy/codegen/c/actor/lib/SubscriptionAggregator.java
&gt; - ptolemy/codegen/c/actor/lib/colt/ColtBinomialSelector.java
&gt; - ptolemy/codegen/c/actor/lib/colt/ColtBinomial.java
&gt; - ptolemy/codegen/c/actor/lib/colt/ColtPoisson.java
We have a volunteer (Teale Fristoe) working on the Colt codegen actors.
I heard from him yesterday, he is making progress.
I took a look at creating a CurrentTime codegen actor.
The Rome model uses the CurrentTime in a SDF model to get at the
iteration count. In the perfect world, we would modify the Rome model
to not use CurrentTime. However, in that model, the top level SDF
Director has iterations set to 365*5 and period set to 1.0.
In simulation, the CurrentTime actor does not have anything connected
to its trigger, so when fire() is called, the CurrentTime actor returns
getDirector().getModelTime().
In the SDF Director, getModelTime() is defined in Director as:
return _currentTime;
In the SDFDirector.postFire(), we set the model time to the
modelTime + period, which in our case means the modelTime increments by 1.0
each firing().
Ok, that&apos;s all well and good for simulation. The problem is that we
want to provide something in code generation, where we have no
notion of time (yet).
Focussing on the simple case where we have a model with the SDF
Director period parameter set to 1.0 and:
CurrentTime ---&gt; Test
(see ptII/ptolemy/codegen/c/actor/lib/test/auto/CurrentTimeSDF.xml)
When we generate code, the top loop looks like:
for (iteration = 0; iteration &lt; 5; iteration ++) {
CurrentTimeSDF();
}
CurrentTimeSDF() looks like:
void CurrentTimeSDF() {
/* Fire Composite Actor: CurrentTimeSDF */
/* The firing of the StaticSchedulingDirector */
CurrentTimeSDF_CurrentTime();
CurrentTimeSDF_Test();
}
and the block that implements our CurrentTime actor is
currently empty, so we get:
void CurrentTimeSDF_CurrentTime() {
/* Fire CurrentTime */
}
In CurrentTimeSDF_CurrentTime(), what we&apos;d like to do is get
access to the current time.
What I did is hack up
ptolemy/codegen/kernel/StaticSchedulingCodeGenerator.java
so that if the director has a period attribute, then
we create a global variable called _currentTime and
then increment it by the value of period.
The CurrentTime actor reads the value of _currentTime.
This is a bit of a hack, but it will get us over
this issue.
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>216</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-14 21:09:03 -0700</bug_when>
<thetext>On 1/7/07, I wrote:
The executive summary is that I can generate code for a version of the
Rome model and I get numerically similar results in both the interpreted
version and the codegen version.
The next step:
- Get an updated model
- Work on accessing the Economics actor (written in Java) from C.
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>354</commentid>
<comment_count>3</comment_count>
<attachid>22</attachid>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-10-08 18:12:06 -0700</bug_when>
<thetext>Created attachment 22
A picture that shows what&apos;s going on when you open the large model I attached earlier.
It shows that almost all time goes to parsing the model.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>355</commentid>
<comment_count>4</comment_count>
<attachid>22</attachid>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-10-08 18:17:24 -0700</bug_when>
<thetext>Comment on attachment 22
A picture that shows what&apos;s going on when you open the large model I attached earlier.
When you change something to a bug report, you apparently go the next one. Hence I changed the wrong one afterwards...</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>498</commentid>
<comment_count>5</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-04-06 18:40:42 -0700</bug_when>
<thetext>We were able to generate Java code for a version of the model that
does not include the Economics actor. Unfortunately, we cannot
compile the resulting Java code because there is a 64k byte limit on the
size of the bytecode.
In the generated code, we currently have 14k variables and 27k
methods, which means it is unlikely that all the byte code will
fit within one class.
Our proposed solution is to generate one class per atomic composite
actor, which we call composite codegen. Bert Rodiers is working on
refactoring our code generation infrastructure to support composite
codegen. In addition, we are working on ways to reuse classes
without regenerating code unnecessarily.</thetext>
</long_desc>
<attachment
isobsolete="1"
ispatch="0"
isprivate="0"
>
<attachid>22</attachid>
<date>2008-10-08 18:12:06 -0700</date>
<delta_ts>2008-10-08 18:17:24 -0700</delta_ts>
<desc>A picture that shows what&apos;s going on when you open the large model I attached earlier.</desc>
<filename>openingLargeProject.JPG</filename>
<type>image/jpeg</type>
<size>103879</size>
<attacher name="Bert Rodiers">bert.rodiers@gmail.com</attacher>
<token>1526340163-4lQ6lFTjyvqXRx9lU8aeOj_U7RU7FqR8o67Pqwa-qjY</token>
</attachment>
</bug>
<bug>
<bug_id>343</bug_id>
<creation_ts>2010-05-05 11:54:55 -0700</creation_ts>
<short_desc>ModularCodeGen should be smarter about when parameters change</short_desc>
<delta_ts>2010-08-23 13:24:33 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Codegen</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>120.00</estimated_time>
<remaining_time>20.00</remaining_time>
<actual_time>0.00</actual_time>
<deadline>2010-08-31</deadline>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-qhxG4kP0MP9xx2wj2oDhX3GIV8hjHzjyLoJk1lK0VKg</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>683</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-05 11:54:55 -0700</bug_when>
<thetext>&quot;Currently, if a model is changed _anywhere_, then code
will be re-generated for _all_ codegen composites. This is
rather brute force, but it&apos;s a challenging problem (it
may even be undecidable) what parts of a model need to change
when one part changes.&quot;
See ModularCodeGenTypedCompositeActor-1.2 in ptolemy/cg/lib/test/ModularCodeGenTypedCompositeActor.tcl</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>697</commentid>
<comment_count>1</comment_count>
<attachid>37</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-06-02 16:16:13 -0700</bug_when>
<thetext>Created attachment 37
Parameter Sweep Using Iterations
Warren writes:
&gt; I should add that we need to be able to not only modify parameter values
&gt; at time step zero, but also at any point during the simulation. For
&gt; instance, we may decide before execution that at time step 200, we want
&gt; to set a specific parameter to a certain value. We would also need to
&gt; be able to utilize operators at points in time, allowing us to, for
&gt; example, increase the value of police at time step 365 by 10%.
There are two components to this:
1) In regular interpreted mode, we need a parameter that changes value
depending on the iteration count (or time?). ParameterSweepUsingIterations.xml
illustrates how the Expression actor can use its &quot;iterations&quot; special
variable to do a Parameter Sweep.
Expression also has a &quot;time&quot; special variable. Note that
these variables are unique to Expression, so they will not work with
Const actors. The cg Java codegenerator works for this model
2) Once we&apos;ve generated a model, we want to be able to do parameter
sweeps on the generated code. One way would be to use Ptolemy to do this
by embedding the generated code in a model that changes the parameter.
If someone is running the generated model in some other fashion, say by
invoking the Java code directly, we should determine how the parameter
sweep data is encoded and how the changing parameter is passed to
the generated code. We would probably need to provide some sort of callback.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>705</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-08-23 13:24:33 -0700</bug_when>
<thetext> We have the current failure with a model where the parameter value changes.
cd ~/ptII/ptolemy/cg/lib/test
$PTII/bin/ptjacl ModularCodeGenTypedCompositeActor.tcl
==== ModularCodeGenTypedCompositeActor-1.2 change the value of a parameter in a c\
ompiled composite
==== Result was:
{2 2}
---- Result should have been:
{20 20}
This is a long standing problem where changing parameters
has no effect</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>37</attachid>
<date>2010-06-02 16:16:13 -0700</date>
<delta_ts>2010-06-02 16:16:13 -0700</delta_ts>
<desc>Parameter Sweep Using Iterations</desc>
<filename>ParameterSweepUsingIterations.xml</filename>
<type>text/xml</type>
<size>3318</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340163-UkqKCltIrP6kUBYkXi_ZZu1nXzhYnsQElYbC2G2pk1M</token>
</attachment>
</bug>
<bug>
<bug_id>148</bug_id>
<creation_ts>2008-03-20 11:47:34 -0700</creation_ts>
<short_desc>Create Hierarchy should be in the toolbar or right click selection context menu</short_desc>
<delta_ts>2008-03-20 11:47:34 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-SDCeMINt8P4P1Ec4OhWML18sSwe6VnrpufuA5LskbSk</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>236</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-20 11:47:34 -0700</bug_when>
<thetext>Ian Brown writes:
&gt; Create hierarchy is a useful function for reducing the complexity of
&gt; diagrams. It&apos;s too hidden though. It would be nice to have it on the
&gt; toolbar, or better still on the context menu when right clicking on
&gt; a selection.
We got quite a bit of negative feedback about adding to the right button
menu, so we should be careful.
Adding it to the toolbar and possibly providing toolbar management capabilities,
where the user selects which parts of the toolbar are visible could be good.
We don&apos;t want to overwhelm new users, but we want to make sure experienced
users can find what they need.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>52</bug_id>
<creation_ts>2006-12-11 08:11:23 -0800</creation_ts>
<short_desc>Make it possible to disable the zoom function</short_desc>
<delta_ts>2006-12-11 08:11:23 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Ptplot</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-XJHLenjYYOJ_A0J_mF5E81YKE3wJNWfKhAVnCEiree4</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>83</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-12-11 08:11:23 -0800</bug_when>
<thetext>It should be possible to disable the zoom functionality.
Christopher Powell writes:
Second, a feature request. It would be nice if there was a method to
disable zooming of the plot, such as setZoomEnabled(boolean). I use a
subclass of Plot in most of my applications, I would occasionally like
to disable zooming by dragging so that I can use mouse drags for other
features of my code. It is also easy to inadvertently drag the mouse
when intending to click.
I have tried to disable zooming in my subclass of Plot. Overriding
zoom(double lowx, double lowy, double highx, double highy) can be used
to disable zoomout, but not zoomin. _zoom, _zoomStart, and _zoomBox are
all protected and/or use protected methods. And ZoomListener and
DragListener call protected methods.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>213</bug_id>
<creation_ts>2008-10-27 13:56:13 -0700</creation_ts>
<short_desc>Deleting an actor should leave the wiring in place</short_desc>
<delta_ts>2008-10-28 07:39:14 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>16.00</estimated_time>
<remaining_time>16.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-Q7_zDoXd9wO6vlRxcxDU4Jjff9aBbJE4w2I2HPYx4sk</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>360</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-10-27 13:56:13 -0700</bug_when>
<thetext>Ian Brown writes:
&quot;Deleting an actor should leave the wiring in place so that a new actor can be
easily wired up. When pressing run, any unconnected wires can disappear or cause
an error.&quot;</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>364</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-10-28 07:39:14 -0700</bug_when>
<thetext>Edward suggests:
&gt; A better solution to the problem Ian cites is to be able to right
&gt; click on a actor and select &quot;Replace With&quot;. This would present you
&gt; with a tree view of the library and/or a search window for entering
&gt; a classname. It would then do the best it could, but some heuristic,
&gt; to wire the replacement using the existing wiring.
Another possibility would be a delete that replaces the ends of the links
with relations that are at the terminals of the actor to be deleted.
My concern is that the way the links are drawn, if a link is not connected,
it tends to be quickly removed. We would need to add another state
to the system that would allow unconnected links.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>71</bug_id>
<creation_ts>2007-06-04 15:55:45 -0700</creation_ts>
<short_desc>VisualModelReference/Subscriber/Port idea</short_desc>
<delta_ts>2009-04-06 18:42:21 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-CYs0voniJwviu566gL-qC0oSwnHwvoHbLetRJI13E98</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>121</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-06-04 15:55:45 -0700</bug_when>
<thetext>From the Rome May 2007 visit:
VisualModelReference - create a port that is the subscriber
Port named foo - looks for a variable named foo, output it
Instead, be able to listen to publisher and output the value at the end.
No need to wait until it was done, just put data out
- Under PN, this is fine, under SDF this is a problem.
- VMR should have an output that is the manager state
- What about a scoreboard?
- Add a parameter to publish it to a host?
Subclass VMR - read the xml and send it to the server</thetext>
</long_desc>
</bug>
<bug>
<bug_id>165</bug_id>
<creation_ts>2008-05-16 20:27:59 -0700</creation_ts>
<short_desc>Level Crossing Links (Publisher/Subscriber) cannot be used in opaque composites</short_desc>
<delta_ts>2010-08-25 15:39:08 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>kernel</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<dependson>217</dependson>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>60.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>80.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-AkksAwSzqh0dXaMkM6xYrlWlyhZlNHzCeoZbIU1ri7g</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>273</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-05-16 20:27:59 -0700</bug_when>
<thetext>The problem is that if we have a large model and want to partition it
into many opaque composites that contain their own directors (say to
promote parallelism), then if the composites contain level crossing links
(aka liberal links) such as Publisher/Subscriber actors, we run into trouble.
Edward wrote:
&gt; The mechanism we have cannot be made to work predictably across directors...
&gt; I wouldn&apos;t know how to make this determinate.
&gt;
&gt; Would it work to add output ports at the boundary between directors,
&gt; with a Subscriber on the inside and Publisher on the outside?
&gt; I guess an alternative would be to change the mechanism to do the
&gt; above automatically... This would be a fair amount of work, and fairly
&gt; tricky...
Brian Hudson wrote:
&gt; I forgot that Pub/Sub only works to the Director level, so if I have each
&gt; region using there own director, other regions can&apos;t see their publishers.
&gt;
&gt; As stated in the Publisher docs:
&gt; *
&gt; &quot;This actor publishes input tokens on a named channel. The tokens are
&gt; &quot;tunneled&quot; to any instance of Subscriber that names the same channel and
&gt; that is under the control of the same director. That is, it can be at a
&gt; different level of the hierarchy, or in an entirely different composite
&gt; actor, as long as the relevant composite actors are transparent (have no
&gt; director).&quot;
&gt;</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>518</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-04-14 15:17:08 -0700</bug_when>
<thetext>Making this bug depend on bug# 217 because if we can exportMoML on a model
with level crossing links, then the solution to this bug might be easier.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>690</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-05 17:35:04 -0700</bug_when>
<thetext>*** Bug 341 has been marked as a duplicate of this bug. ***</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>691</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-05 17:35:39 -0700</bug_when>
<thetext>If we have a Publisher inside an TypedCompositeActor that has a Director
(making it opaque), then a Subscriber cannot Subscribe to the Publisher.
See
$PTII/ptolemy/actor/lib/test/auto/PublisherSubscriberOpaque.xml
Note that this sort of model sort of works in Modular CodeGen, but not in
regular interpreted mode.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>701</commentid>
<comment_count>4</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-08-22 10:25:38 -0700</bug_when>
<work_time>80.0</work_time>
<thetext>Pub/Sub can now be used in opaque components in interpreted mode.
See
$PTII/ptolemy/actor/lib/test/auto/PublisherSubscriberOpaque.xml
Dai did the bulk of the work here.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>706</commentid>
<comment_count>5</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-08-23 13:30:02 -0700</bug_when>
<thetext>Failed: 1 Total Tests: 225 ((Passed: 223, Newly Passed: 0) Known Failed: 1) /
ome/bldmastr/ptII/ptolemy/actor/lib/test
==== Publisher-4.3 Channel Name Change: change the Publisher name in an Opaque model
# Run the model from 4.2
set manager [java::new ptolemy.actor.Manager [$model workspace] &quot;p4manager&quot;]
$model setManager $manager
$manager execute
==== Test generated error:
The width of relation .PublisherSubscriberOpaque.CompositeActor.publisherRelation2 can not be uniquely inferred.
Please make the width inference deterministic by explicitly specifying the width of this relation.The relation is deeply connected to these ports:
ptolemy.actor.TypedIOPort {.PublisherSubscriberOpaque.CompositeActor.Subscriber.input}
in .PublisherSubscriberOpaque.CompositeActor.publisherRelation2
The problem here is that changing the channel name of an Publisher
in an Opaque requires that the model be written out and reloaded.
To replicate this:
$PTII/bin/vergil $PTII/ptolemy/actor/lib/test/auto/PublisherSubscriberOpaque.xml
1. Find the Publisher, change the channel name.
2. Find the Subscribe, change the channel name to the same name.
3. Run the model, you will get an error.
This bug is separate from my recent changes involving.
Publisher.propagateNameChanges</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>709</commentid>
<comment_count>6</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-08-25 15:31:43 -0700</bug_when>
<thetext>The bug surround changing port names was fixed by Dai.
Another bug is that we seem to be generating code each time the model
is run
1. $PTII/bin/vergil $PTII/ptolemy/cg/lib/test/auto/ModularCodeGen.xml
2. Run the model, note that code is generated
3. Exit
4. $PTII/bin/vergil $PTII/ptolemy/cg/lib/test/auto/ModularCodeGen.xml
5. Rerun the model, note that code is generated again
In step 5, code should not be regenerated.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>711</commentid>
<comment_count>7</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-08-25 15:39:08 -0700</bug_when>
<thetext>I&apos;m marking this as closed. The bulk of the work was done by Dai.
More testing will uncover more bugs here.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>17</bug_id>
<creation_ts>2006-07-27 14:18:39 -0700</creation_ts>
<short_desc>Order visualization for the default Director and SDF Director</short_desc>
<delta_ts>2009-04-06 18:53:50 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-mwK1XiPxeO29dJB79FO75A-WBSpfqOIg2pv8MhwJNNo</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>29</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 14:18:39 -0700</bug_when>
<thetext>When using the default Director, the actors are fired
in the order they are placed in the model.
It would be nice if this order was easily visualizable, perhaps by
showing the number of the actor. Users could use &quot;move to front&quot;
to change the order, though we would need to make this more clear.
We could also optionally show the schedule order for SDF or
other statically schedule domains.
(From the July Rome AFRL Visit)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>72</bug_id>
<creation_ts>2007-06-04 15:57:12 -0700</creation_ts>
<short_desc>Up Arrow Navigation for levels of models</short_desc>
<delta_ts>2008-03-20 23:55:54 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-OELe-kMisvdQts103Xi6wezjjD7PR3W0-KnUXPRgIJo</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>122</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-06-04 15:57:12 -0700</bug_when>
<thetext>From the Rome May 2007 visit:
&quot;Up&quot; Arrow Navigation for levels of models in the
(The Robbins arrow)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>248</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-20 23:55:54 -0700</bug_when>
<thetext>This is now implemented in BasicGraphFrame.java</thetext>
</long_desc>
</bug>
<bug>
<bug_id>166</bug_id>
<creation_ts>2008-09-11 14:21:08 -0700</creation_ts>
<short_desc>When ports have no location, they show up at 0,0</short_desc>
<delta_ts>2009-03-12 20:01:35 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>bert.rodiers@gmail.com</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-pquuXVlE3sW4gQv9q63loLbBh4894emZydftBAIBJlI</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>275</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-11 14:21:08 -0700</bug_when>
<thetext>Create a Composite actor
Add a input port
Open the Composite actor
The input port is in the upper left
Note adding new ports to a composite while within the composite actor
does layout properly</thetext>
</long_desc>
</bug>
<bug>
<bug_id>73</bug_id>
<creation_ts>2007-06-04 15:59:00 -0700</creation_ts>
<short_desc>Mouse Wheel should activate panner (shift-wheel does L-R)</short_desc>
<delta_ts>2008-03-14 12:51:28 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>ian.brown@hsbcib.com</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.75</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-r_VUXg-VNfulozhCwhyEMx7hAEEL0HXacLgIPskzypk</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>124</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-06-04 15:59:00 -0700</bug_when>
<thetext>From the May, 2007 visit to Rome AFRL:
Mouse Wheel should activate panner (shift-wheel does L-R)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>211</commentid>
<comment_count>1</comment_count>
<who name="Ian Brown">ian.brown@hsbcib.com</who>
<bug_when>2008-03-12 04:10:00 -0700</bug_when>
<thetext>I think a more widely encountered paradigm (gimp, internet explorer, firefox) is that middle button click / drag is used to pan the display. This can be either such that a middle click enters &apos;pan mode&apos; a-la firefox or middle button drag is used to pan (a-al Gimp).
In this case, the mouse wheel is used to zoom the display.
As an additional control, shift left-drag is occasionally used to pan the display in some applications.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>212</commentid>
<comment_count>2</comment_count>
<attachid>10</attachid>
<who name="Ian Brown">ian.brown@hsbcib.com</who>
<bug_when>2008-03-14 04:02:46 -0700</bug_when>
<thetext>Created attachment 10
adds mouse wheel zom and middle button pan</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>213</commentid>
<comment_count>3</comment_count>
<who name="Ian Brown">ian.brown@hsbcib.com</who>
<bug_when>2008-03-14 04:03:21 -0700</bug_when>
<thetext>The attached patch implements the following:
mouse wheel zooms in and out.
Middle button drag (or alt + left button drag) pans the view.
This makes it simple to zoom in a pan around using the mouse and without having to use the panner window and toolbar (which is how one needs to do it at the moment).
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>214</commentid>
<comment_count>4</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-14 12:51:28 -0700</bug_when>
<work_time>0.75</work_time>
<thetext>I&apos;ve folded Ian&apos;s changes in. I don&apos;t have a middle mouse, so I can&apos;t
test this.
I also fixed problems with Bugzilla that were showing user email addresses
to non-logged in users.</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="1"
isprivate="0"
>
<attachid>10</attachid>
<date>2008-03-14 04:02:46 -0700</date>
<delta_ts>2008-03-14 04:02:46 -0700</delta_ts>
<desc>adds mouse wheel zom and middle button pan</desc>
<filename>ptdrag.diff</filename>
<type>text/plain</type>
<size>5056</size>
<attacher name="Ian Brown">ian.brown@hsbcib.com</attacher>
<token>1526340163-mW35abzmu7xC0sZm5lz96lfnBABHUe--ScHaOW29ZCw</token>
</attachment>
</bug>
<bug>
<bug_id>19</bug_id>
<creation_ts>2006-07-27 14:24:35 -0700</creation_ts>
<short_desc>Search for where parameters are being used</short_desc>
<delta_ts>2012-05-18 15:03:10 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-toIMPEefJNDq7F8_QgybgHPQoFp4NUiZfD8TMLh_GU8</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>31</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 14:24:35 -0700</bug_when>
<thetext>It would be nice if we could show were a parameter is being used
in a model. This ties in to a search mechanism.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>943</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-05-18 15:03:10 -0700</bug_when>
<thetext>The search mechanism introduced by Edward in r62947 and later provides the ability to search for parameters by name in a model.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>216</bug_id>
<creation_ts>2008-11-10 12:13:38 -0800</creation_ts>
<short_desc>Vergil needs a find/search mechanism for the library and the model</short_desc>
<delta_ts>2012-06-28 23:09:19 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>HSIF</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>ASSIGNED</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-ZmlV4q8nJz8iEQSFCxXSg-3Uuvm0rxar1Qe3x6Nq18g</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>365</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-11-10 12:13:38 -0800</bug_when>
<thetext>There should be a search mechanism (like what is in Kepler), so that
we can find actors in the library.
We should also be able to search for actors in a large model.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>963</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-06-28 23:09:19 -0700</bug_when>
<thetext>Find for the library and the model has been implemented.
One additional useful feature would be to have the library search be
able to search the documentation.
See $PTII/doc/doclet/PtIndexer.java for a start on this.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>20</bug_id>
<creation_ts>2006-07-27 14:26:15 -0700</creation_ts>
<short_desc>Create a watch list of ports (check boxes)</short_desc>
<delta_ts>2009-04-06 18:54:29 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P2</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-FI52LuDTcl5G6t3XAlAUvtqIHmxlxdY62-nxdhEcSZw</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>32</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 14:26:15 -0700</bug_when>
<thetext>Listening to an actor can result in lots of data.
It would be nice if the user had a way to select the ports
to which to listen.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>153</bug_id>
<creation_ts>2008-03-20 12:39:53 -0700</creation_ts>
<short_desc>Close without save causes problems when reopening from disk</short_desc>
<delta_ts>2008-03-26 12:47:02 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>3.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-ugsjjqUwKfVC9AITJ3C7ke4Qgjmo9PA9kCQraEGP4PU</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>242</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-20 12:39:53 -0700</bug_when>
<thetext>Ian Brown writes:
&gt; Open a layout and make some changes to it. Decide you&apos;re not
&gt; interested in them and so close it without saving and then
&gt; (in the same Vergil) open it again from disk. This does not
&gt; work because Vergil re-displays the modified one that you chose
&gt; not to save and not the version on disk! It would appear that
&gt; it caches each open model and closing the model only closes
&gt; the view window and does not actually close the model. This
&gt; means that when prototyping and wishing to open an unmodified
&gt; version, you need to close Vergil and re-open it. This has
&gt; tripped us up a lot in the past and continues to do so
&gt; occasionally. For new users, it&apos;s quite confusing</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>243</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-20 12:57:03 -0700</bug_when>
<thetext>Hmm, I can&apos;t replicate this.
What I do is:
1. Start Ptolemy II 7.0.beta under Windows XP with $PTII/bin/vergil
2. Select Tour of Ptolemy II | Complete Demos | Barrier Synchronization
(Barrier Synchronization is merely the first demo under CSP)
3. Drag one of the actors
4. Close the model by clicking the red X in the upper right
5. Select Discard Changes
6. Click on the Sticky Masses link again
7. The actor is in its original place, as it should be
I get the same results with Ptolemy II 6.0.2 started from the Window
Start | All Programs | Ptolemy | Ptolemy II 6.0.2 | vergil
Also, I tried doing
1. File | Open | ptolemy/domains/sdf/demo/Butterfly/Butterfly.xml
2. Drag an actor
3. Close the model by clicking the red X in the upper right
4. Redo step 1
5. The actor is in its original place as it should be.
I tried various other combinations. There is probably a bug here, I just
can&apos;t replicate it.
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>251</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-26 12:47:02 -0700</bug_when>
<work_time>3.0</work_time>
<thetext>Ian wrote:
&gt; This seems to only happen if you save a model to a path which has
&gt; a space in it. For example, save to the default &apos;My Documents&apos; path
&gt; under windows. To repeat, open a model from a location with a space
&gt; in the path and then press the save button (you don&apos;t even need to
&gt; modify the model).
Fixed!
The problem was in actor.gui.Configuration. What happens is that we tend
to pass around URLs for opening files and run in to problems when URLs have spaces in them.
For example,
Configuration.openModel(URL base, URL in, String identifier,
EffigyFactory factory)
has the following code to deterimine if the URL is writable:
if (in != null &amp;&amp; in.getProtocol().equals(&quot;file&quot;)) {
String filename = in.getFile();
File file = new File(filename);
try {
if (!file.canWrite()) {
effigy.setModifiable(false);
}
}
The problem is that if the URL is something like
file:./model%20with%20spaces.xml
then filename is set to &quot;model%20with%20spaces.xml&quot;, which does not exist.
I&apos;ve seen this problem in other places where we have a URL and
want to access the file. The proper solution would be to open a connection
and try to write to the connection. However, URLs are usually read-only,
Ptolemy handles models names as URLs so that we can read models from
the net and from jar files.
Nonetheless, a better fix would be properly try to access the URL instead
of trying to create a java.io.File. I&apos;ll open a separate bug for this
generic problem.
The workaround code is:
if (in != null &amp;&amp; in.getProtocol().equals(&quot;file&quot;)) {
String filename = in.getFile();
File file = new File(filename);
try {
if (!file.canWrite()) {
// FIXME: we need a better way to check if
// a URL is writable.
// Sigh. If the filename has spaces in it,
// then the URL will have %20s. However,
// the file does not have %20s.
// See
// https://chess.eecs.berkeley.edu/bugzilla/show_bug.cgi?id=153
filename = StringUtilities.substitute(
filename, &quot;%20&quot;, &quot; &quot;);
file = new File(filename);
if (!file.canWrite()) {
effigy.setModifiable(false);
}
}
}
I&apos;ve added a test for this problem to the actor.gui test suite. </thetext>
</long_desc>
</bug>
<bug>
<bug_id>155</bug_id>
<creation_ts>2008-03-20 13:29:53 -0700</creation_ts>
<short_desc>Plotter is slow for large graphs</short_desc>
<delta_ts>2008-09-17 11:24:40 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Ptplot</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>bert.rodiers@gmail.com</cc>
<cc>ian.brown@hsbcib.com</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>24.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-neEZgu2HytZboLJi-ZLqQthEnRAtd4rzET9fSYh9-mY</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>245</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-20 13:29:53 -0700</bug_when>
<thetext>Ian Brown writes:
&gt; The Plotter Actor does not deal well with large amounts of data.
&gt; See the sample of the Asynch Source. After, say, a day of running
&gt; the redraw will be very slow. It would appear that the plot class
&gt; redraws every single point every time a new point is added. For
&gt; large volumes of data (many more data points than pixels to plot on)
&gt; it would be more efficient to iterate the pixels on the plot rather
&gt; than the data-points.
The plotter itself does reasonably well with binary data sets.
To plot 10,000 points, try:
bash-3.2$ cd $PTII/ptolemy/plot/demo
bash-3.2$ ls -l data/butterfly.plt
-rw-r--r-- 1 cxh Administrators 90000 Nov 16 1998 data/butterfly.plt
bash-3.2$ $PTII/bin/pxgraph -bigendian data/butterfly.plt
The problem might be elsewhere. If we had a sample data file, we could
take a look.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>250</commentid>
<comment_count>1</comment_count>
<who name="Ian Brown">ian.brown@hsbcib.com</who>
<bug_when>2008-03-26 04:42:23 -0700</bug_when>
<thetext>Generally, we will receive between 10 and 100 updates per second. Let&apos;s assume the best case of 10 per second and 2 plots (bid / ask). Over 10 hours, that is 10 * 3600 * 2 points ... about three quarters of a million (720000).
Now, the single (one off) plot of these points isn&apos;t too much of an issue, but I think (could be wrong) that the plot redraws every data point each time a new point is added.
So, after 1 hour, the plot will need to re-draw 72000 points each tick. So, just to keep up it will need to redraw 72000 ticks in less than 100 milliseconds (assuming 10 ticks per second).
After a few hours, the PC spends 100% of it&apos;s time just trying to redraw the graph. For an example, use the asynch source actor I sent to Edward. Attach it to a timed plotter and let it run for, say, 6 hours.
When it has this much data, it should take a sampling of the data and only plot a sub-set sufficient to cover each horizontal pixel on the display bitmap. Of course, this needs to be more itelligent than a simple cog wheel sampling because we will wish to plot more than one point on the same x pixel position if the y position is different.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>253</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-26 14:50:13 -0700</bug_when>
<thetext>Hmm, that does sound bad. . .
I had a look and it looks like SequentialPlotter is not obviously replotting
all the points each time a point is added.
SequentialPlotter.postfire() calls Plot.addPoint().
Plot.addPoint() never obviously loops through the datasets.
However, repaint() could be calling paintComponent() which is triggering
the refresh.
Further analysis is in order by using the AsynchSource.
I may have mentioned it in another bug, but using a different plotter
such as the plotter in R, Matlab or GNUPlot might be a workaround.
Restructuring how the plot works is probably the only real solution to this bug.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>254</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-26 16:55:46 -0700</bug_when>
<thetext>Edward writes:
I think the right way to handle this is lower level...
The plot package uses Java graphics to draw lines. It probably
needs to be directly creating pixels instead for large data sets.
This way, when multiple points end up at the same (horizontal)
pixel location, the plot should display a vertical line over the
range of points.
This has a major disadvantage in that it will have render the
display differently when printing vs. when displaying on the screen
(because of different resolution). For printing, it should do
something similar to what it does now (except that now, if you
print in black-and-white, you can&apos;t distinguish plots).
</thetext>
</long_desc>
</bug>
<bug>
<bug_id>289</bug_id>
<creation_ts>2009-07-20 19:23:19 -0700</creation_ts>
<short_desc>Under Mac OS X, printing to Acrobat 9.0 fails</short_desc>
<delta_ts>2012-06-29 08:46:12 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>printing</component>
<version>8.0.beta</version>
<rep_platform>Macintosh</rep_platform>
<op_sys>Mac OS X 10.5</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>WONTFIX</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-qdZHkZIJ97-3zTcbhvLrS4yn9KgMkC-Az-u1TEe9iX8</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>568</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-07-20 19:23:19 -0700</bug_when>
<thetext>Under Mac OS X 10.5, printing to Acrobat 9.0 fails under Java 1.5.0_19.
Two print dialogs come up sequentially, which is probably a bug.
After Selecting &quot;Adobe PDF 9.0&quot; in the second bug, then hitting
the &quot;print&quot; button does nothing except print a message to stdout:
--start--
Warning, under Mac OS X with Java 1.5, printing might not work. Try recompiling with Java 1.6 or setting a property:
export JAVAFLAGS=-Dptolemy.ptII.print.platform=CrossPlatform
and restarting vergil: $PTII/bin/vergil
--end--
Unfortunately, the printjob will appear on your desktop, and there
is no notice of where.
Another workaround is to use Java 1.6:
export JAVAHOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
bash-3.2$ $PTII/bin/vergil ~/ptII/ptolemy/domains/sdf/demo/Butterfly/Butterfly.xml</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>969</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-06-29 08:46:12 -0700</bug_when>
<thetext>Printing works under Mac OS 10.7 with Java 1.6.
One of the workarounds was to use Java 1.6, which is now required.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>204</bug_id>
<creation_ts>2008-09-30 07:14:33 -0700</creation_ts>
<short_desc>Bug undoing changes in FSM</short_desc>
<delta_ts>2008-10-08 07:24:57 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>ModalModel</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Edward A. Lee">eal@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-_DBoNcXxyiiOfOfbejMHoQj6ne9fkEfy1HIxbhSRTrk</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>336</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-30 07:14:33 -0700</bug_when>
<thetext>(Reporter: Edward Lee)
If I delete a state in FSM and try to undo, I get
the following exception.
Particularly, changing the sr/demo/TrafficLight demo from
European to US can&apos;t be undone.
ptolemy.kernel.util.InternalErrorException: ChangeRequest failed (NOTE: there is no ChangeListener):
&lt;group&gt;
&lt;group&gt;
&lt;group&gt; &lt;entity name=&quot;Credyel&quot; class=&quot;ptolemy.domains.fsm.kernel.State&quot;&gt;
&lt;property name=&quot;_hideName&quot; class=&quot;ptolemy.data.expr.SingletonParameter&quot; value=&quot;true&quot;&gt;
&lt;/property&gt;
&lt;property name=&quot;_controllerFactory&quot; class=&quot;ptolemy.vergil.fsm.modal.HierarchicalStateControllerFactory&quot;&gt;
&lt;/property&gt;
&lt;property name=&quot;_location&quot; class=&quot;ptolemy.kernel.util.Location&quot; value=&quot;[435.0, 185.0]&quot;&gt;
&lt;/property&gt;
&lt;/entity&gt;
&lt;link port=&quot;Credyel.incomingPort&quot; relation=&quot;relation2&quot;/&gt;
&lt;entity name=&quot;.TrafficLight.TrafficLight.normal.CarLightNormal._Controller&quot; &gt;
&lt;/entity&gt;
&lt;entity name=&quot;.WirelessDeployment.CarLight.CarLight.normal.CarLightNormal._Controller&quot; &gt;
&lt;/entity&gt;
&lt;/group&gt;
&lt;/group&gt;
&lt;/group&gt;
Because:
Cannot create entity without a class name. in [external stream] at line 12 and column 71
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:202)
at ptolemy.moml.MoMLUndoEntry.execute(MoMLUndoEntry.java:102)
at ptolemy.kernel.undo.UndoStackAttribute$MergeUndoActions.execute(UndoStackAttribute.java:319)
at ptolemy.kernel.undo.UndoStackAttribute.undo(UndoStackAttribute.java:290)
at ptolemy.kernel.undo.UndoChangeRequest._execute(UndoChangeRequest.java:85)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:139)
at ptolemy.kernel.util.NamedObj.executeChangeRequests(NamedObj.java:697)
at ptolemy.kernel.util.NamedObj.requestChange(NamedObj.java:1671)
at ptolemy.actor.CompositeActor.requestChange(CompositeActor.java:1184)
at ptolemy.kernel.util.NamedObj.requestChange(NamedObj.java:1654)
at ptolemy.vergil.basic.BasicGraphFrame.undo(BasicGraphFrame.java:1298)
at ptolemy.vergil.basic.BasicGraphFrame$UndoAction.actionPerformed(BasicGraphFrame.java:2849)
at javax.swing.JComponent$ActionStandin.actionPerformed(JComponent.java:3236)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1576)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2772)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:255)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:204)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2849)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2841)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2735)
at java.awt.Component.processEvent(Component.java:5379)
at java.awt.Container.processEvent(Container.java:2010)
at java.awt.Component.dispatchEventImpl(Component.java:4068)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1826)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:681)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:938)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:810)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:645)
at java.awt.Component.dispatchEventImpl(Component.java:3941)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Window.dispatchEventImpl(Window.java:1801)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Caused by: com.microstar.xml.XmlException: Cannot create entity without a class name. in [external stream] at line 12 and column 71
at ptolemy.moml.MoMLParser._checkForNull(MoMLParser.java:3664)
at ptolemy.moml.MoMLParser._createEntity(MoMLParser.java:3837)
at ptolemy.moml.MoMLParser.startElement(MoMLParser.java:2425)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:921)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1104)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1104)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1104)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseDocument(XmlParser.java:481)
at com.microstar.xml.XmlParser.doParse(XmlParser.java:159)
at com.microstar.xml.XmlParser.parse(XmlParser.java:132)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1364)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1337)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1492)
at ptolemy.moml.MoMLChangeRequest._execute(MoMLChangeRequest.java:270)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:139)
... 39 more
Caused by: com.microstar.xml.XmlException: Cannot create entity without a class name. in [external stream] at line 12 and column 71
at ptolemy.moml.MoMLParser._checkForNull(MoMLParser.java:3664)
at ptolemy.moml.MoMLParser._createEntity(MoMLParser.java:3837)
at ptolemy.moml.MoMLParser.startElement(MoMLParser.java:2425)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:921)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1104)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1104)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1104)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseDocument(XmlParser.java:481)
at com.microstar.xml.XmlParser.doParse(XmlParser.java:159)
at com.microstar.xml.XmlParser.parse(XmlParser.java:132)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1364)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1337)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1492)
at ptolemy.moml.MoMLChangeRequest._execute(MoMLChangeRequest.java:270)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:139)
at ptolemy.moml.MoMLUndoEntry.execute(MoMLUndoEntry.java:102)
at ptolemy.kernel.undo.UndoStackAttribute$MergeUndoActions.execute(UndoStackAttribute.java:319)
at ptolemy.kernel.undo.UndoStackAttribute.undo(UndoStackAttribute.java:290)
at ptolemy.kernel.undo.UndoChangeRequest._execute(UndoChangeRequest.java:85)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:139)
at ptolemy.kernel.util.NamedObj.executeChangeRequests(NamedObj.java:697)
at ptolemy.kernel.util.NamedObj.requestChange(NamedObj.java:1671)
at ptolemy.actor.CompositeActor.requestChange(CompositeActor.java:1184)
at ptolemy.kernel.util.NamedObj.requestChange(NamedObj.java:1654)
at ptolemy.vergil.basic.BasicGraphFrame.undo(BasicGraphFrame.java:1298)
at ptolemy.vergil.basic.BasicGraphFrame$UndoAction.actionPerformed(BasicGraphFrame.java:2849)
at javax.swing.JComponent$ActionStandin.actionPerformed(JComponent.java:3236)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1576)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2772)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:255)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:204)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2849)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2841)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2735)
at java.awt.Component.processEvent(Component.java:5379)
at java.awt.Container.processEvent(Container.java:2010)
at java.awt.Component.dispatchEventImpl(Component.java:4068)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1826)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:681)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:938)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:810)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:645)
at java.awt.Component.dispatchEventImpl(Component.java:3941)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Window.dispatchEventImpl(Window.java:1801)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>342</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-10-01 12:21:08 -0700</bug_when>
<thetext>Edward writes:
More on this:
The bug isn&apos;t with FSM, but with the class mechanism.
A simpler way to replicate it:
In an empty model, create an instance of Sources/Sinewave
Look inside.
Delete something.
Undo. </thetext>
</long_desc><long_desc isprivate="0" >
<commentid>348</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-10-08 07:24:57 -0700</bug_when>
<thetext>Edward writes:
I&apos;m checking in a major improvement to this undo bug, but there is still
at least one remaining bug. Deleting certain ports doesn&apos;t undo
undo properly yet. To replicate:
Create a new model.
Put an instance of Sinewave in it.
Look inside the Sinewave.
Delete the output port.
Undo.
You get an exception because the undo code tries to replicate the
connection in the instance, which it is not allowed to do.
The short summary: Undo did not work if you delete objects
from a class definition that is in a separate file from
instances that are currently open
if the instances override the class in any way.
It now works for entities, relations, and attributes, but
not quite yet for ports.
Edward
</thetext>
</long_desc>
</bug>
<bug>
<bug_id>205</bug_id>
<creation_ts>2008-09-30 07:17:47 -0700</creation_ts>
<short_desc>ConstNonconst demo in ptolemy/data/properties fails</short_desc>
<delta_ts>2012-06-29 08:43:19 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>WONTFIX</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-X2rbGO8xNEBrb7zNe92Ouaz_lNyYbK_8hxuieYdGjF0</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>337</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-30 07:17:47 -0700</bug_when>
<thetext>(Reporter: Edward Lee)
The ConstNonconst demo in ptolemy/data/properties gives
an exception when double clicking on the property inference.
Unfortunately, it reports this exception in a custom way
and I can&apos;t view the stack trace...
We should fix both problems:
1) why exception when doing the action
2) exception should show stack trace</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>968</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-06-29 08:43:19 -0700</bug_when>
<thetext>data/properties was removed</thetext>
</long_desc>
</bug>
<bug>
<bug_id>321</bug_id>
<creation_ts>2010-01-07 10:51:56 -0800</creation_ts>
<short_desc>SetVariable sometimes causes a dependency loop exception to be thrown under PN</short_desc>
<delta_ts>2010-01-07 10:51:56 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-QgEzEvkyvWHYDegGj4QxomWlHuQfjuWNaXIz-YmyK5g</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>640</commentid>
<comment_count>0</comment_count>
<attachid>31</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-01-07 10:51:56 -0800</bug_when>
<thetext>Created attachment 31
SetVariable PN model that sometimes throws a dependency loop exception
If dynarray_expr_comp3.xml is run over and over again, eventually
an exception will appear:
ptolemy.kernel.util.IllegalActionException: Expression invalid.
in .dynarray_expr_comp3.A.Expression
Because:
There is a dependency loop where .dynarray_expr_comp3.A.a directly or indirectly refers to itself in its expression: (j==1 ? {x} : {x,y})
at ptolemy.actor.lib.Expression.fire(Expression.java:232)
at ptolemy.actor.process.ProcessThread.run(ProcessThread.java:217)
Caused by: ptolemy.kernel.util.IllegalActionException: There is a dependency loop where .dynarray_expr_comp3.A.a directly or indirectly refers to itself in its expression: (j==1 ? {x} : {x,y})
at ptolemy.data.expr.Variable._evaluate(Variable.java:1624)
at ptolemy.data.expr.Variable.getToken(Variable.java:578)
at ptolemy.actor.lib.Expression$VariableScope.get(Expression.java:336)
at ptolemy.data.expr.ParseTreeEvaluator.visitLeafNode(ParseTreeEvaluator.java:652)
at ptolemy.data.expr.ASTPtLeafNode.visit(ASTPtLeafNode.java:125)
at ptolemy.data.expr.ParseTreeEvaluator.evaluateParseTree(ParseTreeEvaluator.java:104)
at ptolemy.actor.lib.Expression.fire(Expression.java:227)
... 1 more
Caused by: ptolemy.kernel.util.IllegalActionException: There is a dependency loop where .dynarray_expr_comp3.A.a directly or indirectly refers to itself in its expression: (j==1 ? {x} : {x,y})
at ptolemy.data.expr.Variable._evaluate(Variable.java:1624)
at ptolemy.data.expr.Variable.getToken(Variable.java:578)
at ptolemy.actor.lib.Expression$VariableScope.get(Expression.java:336)
at ptolemy.data.expr.ParseTreeEvaluator.visitLeafNode(ParseTreeEvaluator.java:652)
at ptolemy.data.expr.ASTPtLeafNode.visit(ASTPtLeafNode.java:125)
at ptolemy.data.expr.ParseTreeEvaluator.evaluateParseTree(ParseTreeEvaluator.java:104)
at ptolemy.actor.lib.Expression.fire(Expression.java:227)
at ptolemy.actor.process.ProcessThread.run(ProcessThread.java:217)
It looks to me like the exception that I was getting is because the
SetVariable actor is causing evaluation to occur in A.a.
SetVariable sets the parameter j. The parameter A.a is set to
(j==1 ? {x} : {x,y})
I added a println to Variable._evaluate that prints a stack trace
when _dependencyLoop is set to true and the name of the Variable ends
with &quot;A.a&quot;&quot;
// If _dependencyLoop is true, then this call to evaluate() must
// have been triggered by evaluating the expression of this variable,
// which means that the expression directly or indirectly refers
// to itself.
if (_dependencyLoop) {
_dependencyLoop = false;
throw new IllegalActionException(&quot;There is a dependency loop&quot;
+ &quot; where &quot; + getFullName() + &quot; directly or indirectly&quot;
+ &quot; refers to itself in its expression: &quot;
+ _currentExpression);
}
if (this.getFullName().endsWith(&quot;A.a&quot;)) {
new Exception(&quot;Setting _dependencyLoop to true &quot; + Thread.currentThread()).printStackTrace();
}
_dependencyLoop = true;
If I run the model over and over again, I eventually get the stack trace
that I reported below and that is in the code above.
The output looks like:
java.lang.Exception: Setting _dependencyLoop to true Thread[.dynarray_expr_comp3.Variable Setter,1,main]
at ptolemy.data.expr.Variable._evaluate(Variable.java:1630)
at ptolemy.data.expr.Variable._propagate(Variable.java:1734)
at ptolemy.data.expr.Variable._propagateToValueListeners(Variable.java:1806)
at ptolemy.data.expr.Variable._propagate(Variable.java:1765)
at ptolemy.data.expr.Variable.validate(Variable.java:1430)
at ptolemy.actor.lib.SetVariable._setValue(SetVariable.java:397)
at ptolemy.actor.lib.SetVariable.fire(SetVariable.java:194)
at ptolemy.actor.process.ProcessThread.run(ProcessThread.java:217)
java.lang.Exception: Setting _dependencyLoop to true Thread[.dynarray_expr_comp3.Variable Setter,1,main]
at ptolemy.data.expr.Variable._evaluate(Variable.java:1630)
at ptolemy.data.expr.Variable._propagate(Variable.java:1734)
at ptolemy.data.expr.Variable._propagateToValueListeners(Variable.java:1806)
at ptolemy.data.expr.Variable._propagate(Variable.java:1765)
at ptolemy.data.expr.Variable.validate(Variable.java:1430)
at ptolemy.actor.lib.SetVariable._setValue(SetVariable.java:397)
at ptolemy.actor.lib.SetVariable.fire(SetVariable.java:194)
at ptolemy.actor.process.ProcessThread.run(ProcessThread.java:217)
So, what I think is happening is that SetVariable is causing problems under PN.
I&apos;m not surprised, SetVariable always frightens me, so I&apos;m moving on.
Edward suggested setting SetVariable.delayed to true. This avoid the exception
but the output is now
{&quot;a string&quot;, &quot;another string&quot;}
{&quot;a string&quot;, &quot;another string&quot;}
instead of alternating between
{&quot;a string&quot;}
{&quot;a string&quot;, &quot;another string&quot;}
and
{&quot;a string&quot;, &quot;another string&quot;}
{&quot;a string&quot;, &quot;another string&quot;}
in a non-deterministic manner.</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>31</attachid>
<date>2010-01-07 10:51:56 -0800</date>
<delta_ts>2010-01-07 10:51:56 -0800</delta_ts>
<desc>SetVariable PN model that sometimes throws a dependency loop exception</desc>
<filename>dynarray_expr_comp3.xml</filename>
<type>text/xml</type>
<size>30961</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340163-LVVzBawXLo_n6ebelGXL9yMLrXVenNbKoSTm1WGa66A</token>
</attachment>
</bug>
<bug>
<bug_id>207</bug_id>
<creation_ts>2008-09-30 10:54:34 -0700</creation_ts>
<short_desc>Create hierarchy does not infer multiports and sets width of border relations to 1</short_desc>
<delta_ts>2009-01-09 16:45:55 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-xlzG5qQOay0hDX70McNHe4mOCk566SAWjo4rCZoMWek</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>339</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-30 10:54:34 -0700</bug_when>
<thetext>Create hierarchy does not infer multiports and sets width of border relations to 1.
The create hierarchy basically can&apos;t handle relations with widths and multiports.
An example: use model in attachment, select everything left from AddSubtract, create a hierarchy =&gt; the model won&apos;t run anymore.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>386</commentid>
<comment_count>1</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-01-09 16:45:55 -0800</bug_when>
<thetext>This is fixed in two different ways:
1) since the default width has become -1, width inference will happen for the new relations
2) concerning the ports: the ports will now become multiports when necessary</thetext>
</long_desc>
</bug>
<bug>
<bug_id>302</bug_id>
<creation_ts>2009-09-12 01:09:38 -0700</creation_ts>
<short_desc>Ports not being cleared in PtalonActor</short_desc>
<delta_ts>2009-09-12 01:09:38 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>7.0</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Adam Cataldo">adam.cataldo@agilent.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-KFn3KwVje7TZpJeGdadMpI8foHeU7VWsDspGFMbsrBM</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>607</commentid>
<comment_count>0</comment_count>
<who name="Adam Cataldo">adam.cataldo@agilent.com</who>
<bug_when>2009-09-12 01:09:38 -0700</bug_when>
<thetext>To reproduce:
1) Create a file called Foo.ptln with the following body:
Foo is {
parameter n;
for i initially [[0]] [[i &lt; n]] {
outport output[[i]];
} next [[i + 1]]
}
2) In Vergil, drag out a PtalonActor.
3) Select the ptalonCodeLocation to point to Foo.ptln.
4) Set the parameter n to 5. Five output ports will be produced, named output0, output1, ..., output4.
5) Change n to 6. Now, there is a new output port output5.
6) Change n to 3. There are still 6 output ports.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>136</bug_id>
<creation_ts>2008-03-14 20:59:33 -0700</creation_ts>
<short_desc>Diva&apos;s JCanvas handles double buffering incorrectly</short_desc>
<delta_ts>2008-03-14 20:59:33 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.0.beta</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>ian.brown@hsbcib.com</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-yoBU8o4Wpbvh1FvVRFTzSYfoVQDjkLTNJhRFuxCgyi0</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>215</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-14 20:59:33 -0700</bug_when>
<thetext>As pointed out by Ian Brown, Diva&apos;s JCanvas handles
double buffering incorrectly.
Ian wrote:
Christoper,
I can confirm what you&apos;re seeing. I never did the check of
changing the code - I was just code reading it and it looked wrong. It now
looks like it&apos;s more broken than it first looked :) I guess there
shouldn&apos;t be any harm in chopping out the double buffering code from
JCanvas then given that it is not used and does not work.
As for the memory issues, I already run with 1Gig allocated for the JVM.
The main issue is that I have lots of composite actors and each one opens
in its own window which in Java 6 apparently has its own back-buffer. I
guess a &apos;solution&apos; may be to allow a composite actor to open in the same
window as the parent when navigating into it (a bit like following a link
in a browser - normally the new page will open in the same browser window
unless you explicitly ask for a new window). To complete this paradigm,
the toolbar would need a &apos;up&apos; button which would display the containing
composite or model if one exists.
Ian
Christopher wrote:
Hi Ian,
Interesting!
I started looking into this. The double buffering code has
been in diva.canvas.JCanvas since June, 1998.
http://java.sun.com/performance/reference/whitepapers/6_performance.html#2.4.4
says:
2.4.4 Swing&apos;s true double buffering
Swing&apos;s true double buffering has now been enabled. Swing used to
provide double buffering on an application basis, it now provides it
on a per-window basis and native exposed events are copied directly
from the double buffer. This significantly improves Swing performance,
especially on remote servers.
Please see the Scott Violet&apos;s Blog for full details.
http://weblogs.java.net/blog/zixle/archive/2005/04/no_more_gray_re_1.html
There is a bug that says this is fixed in Java 1.6:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4967886
I looked around and I can&apos;t be sure exactly when the Java release
changed. The Java release notes for 1.5 and 1.6 are not much help.
I&apos;m just curious, do you have a reference for when the double
buffering changed?
We are still supporing Java 1.5, so we might need to conditionalize
this.
Putting a println statement before the if:
System.out.println(&quot;JCanvas: isDoubleBuffered(): &quot; +
isDoubleBuffered());
if (!isDoubleBuffered()) {
Graphics2D g2d = (Graphics2D) g;
always yields &quot;JCanvas: isDoubleBuffered(): false&quot; under Windows XP on
a HP laptop with Sun&apos;s Java 1.5.0_11 and 1.6.0_05. So, the offscreen
code is not being used when I&apos;m running. It might be different on a
multiscreen device though.
Do you get something similar? On what platform and JVM are you running?
Also, if I changed the conditional to
if (isDoubleBuffered()) {
then I got horrible black boxes in the damage area.
Do you see something similar?
BTW - One hack is to increase the memory by using the -Xmx option to
java. I&apos;m fairly certain you know about this, but I thought I&apos;d
mention it.
To increase the memory:
bash-3.2$ export JAVAFLAGS=-Xmx666m
bash-3.2$ $PTII/bin/vergil -v
../../ptolemy/domains/sdf/demo/Butterfly/Butterfly.xml
To verify how much memory, do View -&gt; JVM Properties and look at
the Max memory line at the top.
Still, I&apos;m curious as to whether the double buffering is necessary
and if it is right, so let me know if isDoubleBuffered() is returning
true for you and what happens if you reverse the isDoubleBuffered()
conditional.
_Christopher
Ian wrote:
I have a small problem with Kepler / Ptolemy if I have too may windows
open, or if I accidentally hit the maximize window button in that my PC
hangs. This is seemingly due to memory issues in the Java VM. I have 3
monitors, so hitting the full-screen button creates a 3840 x 1024 window.
To see what was using so much memory, I had a poke around in Diva and
found some odd code in JCanvas.
JCanvas has the following code in the paint method:
if (!isDoubleBuffered()) {
Graphics2D g2d = (Graphics2D) g;
// Clear the clip region to the background color
g2d.setBackground(getBackground());
if (_workaroundClearRectBug) {
g2d.clearRect(0, 0, clip.width, clip.height);
} else {
g2d.clearRect(clip.x, clip.y, clip.width, clip.height);
}
// Draw directly onto the graphics pane
if (paintAll) {
_canvasPane.paint(g2d);
} else {
_canvasPane.paint(g2d, clip);
}
} else {
// Get a new offscreen buffer if necessary. Clear the reference
// to the off-screen buffer, so that the memory can be freed
// if necessary by the GC and reallocated for the new buffer.
if ((_offscreen == null) || (_offscreen.getWidth() != clip.widt\
h)
|| (_offscreen.getHeight() != clip.height)) {
_offscreen = null; // in case GC needs it
_offscreen = new BufferedImage(clip.width, clip.height,
BufferedImage.TYPE_INT_RGB);
}
Graphics2D g2d = _offscreen.createGraphics();
// ------------ code removed for brevity --------------
// Blit it to the onscreen buffer
g.drawImage(_offscreen, clip.x, clip.y, null);
}
So, if the system is not keeping a backing buffer itself
(isDoubleBuffered() returns false) JCanvas draws directly to the screen.
If the system is keeping a backing buffer though then JCanvas creates
another backing buffer of it&apos;s own and uses that. It then blits
that to the system backing buffer ... which then in turn is
blitted to the screen. This makes no sense to me. If anything, the
logic should be reversed which would cause a backing buffer to be
always used regardless of whether the system has one or not. As it
stands now though, it would appear that we either use no backing
buffer, or we use 2 of them. Given that in Java 5 and above top-level
components are double buffered by default, Diva is always creating an
extra, unnecessary backing buffer. It would appear that one could
simply delete all of the _offscreen code from JCanvas and it would
remain functionally the same in terms of when a
backing store is used. Am I missing something?
Ian</thetext>
</long_desc>
</bug>
<bug>
<bug_id>233</bug_id>
<creation_ts>2009-02-02 14:35:42 -0800</creation_ts>
<short_desc>The director of ModalModel is wrong and can&apos;t be changed in a straightforward way when you change the executive director</short_desc>
<delta_ts>2009-02-02 14:38:46 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>ModalModel</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-WjbjzExxPN76-mSRxfEkktZ3k3O2E6wg4_IvLqw9HJI</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>397</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-02-02 14:35:42 -0800</bug_when>
<thetext>The director being used in the ModalModel depends on your executive director. For example if you add a ModalModel actor to a DE model, the director of the modal model becomes ptolemy.domains.fsm.kernel.FSMDirector, and you can switch between ptolemy.domains.fsm.kernel.FSMDirector and ptolemy.domains.fsm.kernel.MultirateFSMDirector. If you add the ModalModel actor to a Continuous model, the director of the modal model becomes ptolemy.domains.continuous.kernel.HybridModalDirector.
If you then change the executive director the director of the modal model does not change, so you for example end up using ptolemy.domains.continuous.kernel.HybridModalDirector while your executive director is DE Director.
Also if you would like to change the director the options that are presented are the ones that were there with the previous director, not with the new one. This also seems wrong.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>322</bug_id>
<creation_ts>2010-02-03 18:34:35 -0800</creation_ts>
<short_desc>IterateOverArray has a Configuration clone problem</short_desc>
<delta_ts>2010-03-02 08:36:39 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>minor</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-uMEvnv0V2C8OGnNL98nbQLQppK3rhpj-eSv9D0dElh0</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>645</commentid>
<comment_count>0</comment_count>
<attachid>32</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-02-03 18:34:35 -0800</bug_when>
<thetext>Created attachment 32
IterateOverArray Clone Bug
This is a strange bug that is probably a clone problems somewhere.
To replicate the bug:
1) Start up vergil with the attached file:
$PTII/bin/vergil IterateOverArrayCloneBug.xml
2) Help-&gt;About-&gt;Copyright
3) In the window that comes up:
click on the &quot;Other copyrights&quot; link at the bottom
4) In the window that comes up:
scroll down and click on &quot;More information about this configuration&quot;
5) In the window that comes up:
click on &quot;about:configuration&quot; at the top
You will get a stack trace:
ptolemy.kernel.util.IllegalActionException: Attempt to link more than one relation to a single port.
in .Z4.IterateOverArray.IterateComposite.RouteTable and .Z4.IterateOverArray.relation5
at ptolemy.actor.IOPort._checkMultiportLink(IOPort.java:4179)
at ptolemy.actor.IOPort._checkLink(IOPort.java:3588)
at ptolemy.actor.TypedIOPort._checkLink(TypedIOPort.java:774)
at ptolemy.kernel.ComponentPort.link(ComponentPort.java:544)
at ptolemy.actor.IOPort.link(IOPort.java:2463)
at ptolemy.actor.lib.hoc.MirrorComposite$2._execute(MirrorComposite.java:412)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:171)
at ptolemy.kernel.util.NamedObj.executeChangeRequests(NamedObj.java:732)
at ptolemy.kernel.util.NamedObj.requestChange(NamedObj.java:1757)
at ptolemy.actor.CompositeActor.requestChange(CompositeActor.java:1533)
at ptolemy.kernel.util.NamedObj.requestChange(NamedObj.java:1740)
at ptolemy.actor.CompositeActor.requestChange(CompositeActor.java:1533)
at ptolemy.actor.lib.hoc.MirrorComposite._addPort(MirrorComposite.java:424)
at ptolemy.kernel.Port.setContainer(Port.java:621)
at ptolemy.kernel.ComponentPort.setContainer(ComponentPort.java:584)
at ptolemy.actor.IOPort.setContainer(IOPort.java:2953)
at ptolemy.actor.lib.hoc.MirrorPort.setContainer(MirrorPort.java:147)
at ptolemy.kernel.Entity.clone(Entity.java:174)
at ptolemy.kernel.ComponentEntity.clone(ComponentEntity.java:124)
at ptolemy.kernel.CompositeEntity.clone(CompositeEntity.java:324)
at ptolemy.actor.CompositeActor.clone(CompositeActor.java:275)
at ptolemy.actor.lib.hoc.MirrorComposite.clone(MirrorComposite.java:141)
at ptolemy.actor.lib.hoc.IterateOverArray.clone(IterateOverArray.java:233)
at ptolemy.kernel.CompositeEntity.clone(CompositeEntity.java:397)
at ptolemy.actor.CompositeActor.clone(CompositeActor.java:275)
at ptolemy.actor.gui.PtolemyEffigy.clone(PtolemyEffigy.java:140)
at ptolemy.kernel.CompositeEntity.clone(CompositeEntity.java:397)
at ptolemy.kernel.CompositeEntity.clone(CompositeEntity.java:397)
at ptolemy.kernel.util.NamedObj.clone(NamedObj.java:409)
at ptolemy.actor.gui.Configuration.check(Configuration.java:290)
at ptolemy.actor.gui.HTMLAbout.hyperlinkUpdate(HTMLAbout.java:329)
at ptolemy.actor.gui.HTMLViewer.hyperlinkUpdate(HTMLViewer.java:150)
at javax.swing.JEditorPane.fireHyperlinkUpdate(JEditorPane.java:320)
at javax.swing.text.html.HTMLEditorKit$LinkController.activateLink(HTMLEditorKit.java:827)
at javax.swing.text.html.HTMLEditorKit$LinkController.mouseClicked(HTMLEditorKit.java:637)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:212)
at java.awt.Component.processMouseEvent(Component.java:5605)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3129)
at java.awt.Component.processEvent(Component.java:5367)
at java.awt.Container.processEvent(Container.java:2010)
at java.awt.Component.dispatchEventImpl(Component.java:4068)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4256)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3945)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3866)
at java.awt.Container.dispatchEventImpl(Container.java:2054)
at java.awt.Window.dispatchEventImpl(Window.java:1801)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
This example comes from the Wireless Zigbee model.
The odd thing is: Why does calling Configuration.clone cause this problem.
Probably some fields in MirrorComposite is not getting cloned properly.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>663</commentid>
<comment_count>1</comment_count>
<attachid>34</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-03-02 08:36:28 -0800</bug_when>
<thetext>Created attachment 34
IterateOverArray model that uses Actor Oriented Classes that has a different result</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>664</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-03-02 08:36:39 -0800</bug_when>
<thetext>Using IterateOverArray in an ActorOrientedClass results in output
that is different from the same model without IterateOverArray being
in an ActorOrientedClass.
The model
$PTII/ptolemy/actor/lib/hoc/demo/IterateOverArray/IterateOverArray.xml
produces a nice pattern
If I convert the AntennaElements IterateOverArray actor to an
Actor Oriented Class, I get a circle as the output.
1) $PTII/bin/vergil ptolemy/actor/lib/hoc/demo/IterateOverArray/IterateOverArray.xml
2) Copy the AntennaElements actor, right click on the copy and select
&quot;Convert To Class&quot;
3) Right click on the Class definition and select Class Actions -&gt; Create Instance
4) Hook up the new instance in place of the original AntennaElements actor
5) Run the model, you will get a circle?
See the attached for an example that uses a large section of the model
as an actor oriented class</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>32</attachid>
<date>2010-02-03 18:34:35 -0800</date>
<delta_ts>2010-02-03 18:34:35 -0800</delta_ts>
<desc>IterateOverArray Clone Bug</desc>
<filename>IterateOverArrayCloneBug.xml</filename>
<type>text/xml</type>
<size>12878</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340163-y8meJ0B2Y6pWccBliCbMgl5RuMLK-ylOZQarsDRTaWQ</token>
</attachment>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>34</attachid>
<date>2010-03-02 08:36:28 -0800</date>
<delta_ts>2010-03-02 08:36:28 -0800</delta_ts>
<desc>IterateOverArray model that uses Actor Oriented Classes that has a different result</desc>
<filename>IterateOverArrayAOC.xml</filename>
<type>text/xml</type>
<size>47331</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340163-qQ-G-3kFD0UpBSGFMJxrIjgwH-cD1yCh5r9RnDAMMF8</token>
</attachment>
</bug>
<bug>
<bug_id>143</bug_id>
<creation_ts>2008-03-19 17:08:08 -0700</creation_ts>
<short_desc>MultiInstanceComposite: Relation created, not connected</short_desc>
<delta_ts>2008-03-19 17:08:08 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>minor</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-o8s3wWwO9FC8r4narpeTLgtb_57bmP6z28lL5fEvbGY</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>228</commentid>
<comment_count>0</comment_count>
<attachid>11</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-19 17:08:08 -0700</bug_when>
<thetext>Created attachment 11
Running this model creates an unconnected relation that is connected on save.
When a model containing a MultiInstanceComposite is run,
a relation is created, but the relation is not connected.
When the model is saved, the relation is then connected.
The bug is that the relation should be shown as connected
after running the model. I think this is a long standing bug.
A nice enhancement would be if the relation was created
between the two actors instead of in the upper left.
Kees Verhaar supplied the attachment, see Ptolemy Hackers
for discussion.</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>11</attachid>
<date>2008-03-19 17:08:08 -0700</date>
<delta_ts>2008-03-19 17:08:08 -0700</delta_ts>
<desc>Running this model creates an unconnected relation that is connected on save.</desc>
<filename>multiinstance.xml</filename>
<type>text/xml</type>
<size>5254</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340163-DQDcLG9oNlRQAAdunOkGCatp9LEQap2FMPw_JU_Orto</token>
</attachment>
</bug>
<bug>
<bug_id>147</bug_id>
<creation_ts>2008-03-20 11:39:48 -0700</creation_ts>
<short_desc>Hidden ports take up space</short_desc>
<delta_ts>2008-04-29 10:08:00 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>minor</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-LiD18nyWnOSR8Yn71KrPm39oYPYY103d5mONXtIUglQ</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>235</commentid>
<comment_count>0</comment_count>
<attachid>13</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-20 11:39:48 -0700</bug_when>
<thetext>Created attachment 13
Hidden Ports Take Up Space Example
Ian Brown write:
•If you define an actor with a number of ports and hide some of
those ports, the hidden ports still take up space in the GUI. This can
result in some odd displays. Hidden ports should not take up space on
the display. Here&apos;s an example of a composite actor with some hidden ports
(they may be port parameters):</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>269</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-04-29 10:08:00 -0700</bug_when>
<thetext>Lowering priority from P1 to P3.
P1 means: do this now
P2 means: for sure, before the next release
P3 means: hopefully before the next release, may change to P2
P4 and P5 are things worth considering</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>13</attachid>
<date>2008-03-20 11:39:48 -0700</date>
<delta_ts>2008-03-20 11:39:48 -0700</delta_ts>
<desc>Hidden Ports Take Up Space Example</desc>
<filename>hiddenPortProblem.PNG</filename>
<type>image/png</type>
<size>15956</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340163-s0NIvi9QcdvuhmrKtVJuzs9DhwOG8y19rK1HQ6NouSw</token>
</attachment>
</bug>
<bug>
<bug_id>163</bug_id>
<creation_ts>2008-04-28 18:02:54 -0700</creation_ts>
<short_desc>Case Actor: Pasting model with ports into a branch should create ports in other cases</short_desc>
<delta_ts>2008-04-28 18:02:54 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>minor</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>6.00</estimated_time>
<remaining_time>6.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-17Cil6oKQFxjAyLAqbYjYsB-jDRBYz9AurUyG0HZlhw</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>267</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-04-28 18:02:54 -0700</bug_when>
<thetext>If I paste something with ports into the branch of a case actor,
then the other cases should also get the ports.
We should also be smart enough so that if I then paste into the other
branches, then the existing ports should be reused.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>526</bug_id>
<creation_ts>2013-04-09 08:39:26 -0700</creation_ts>
<short_desc>Nullpointer exception upon getting value from record using escaped key</short_desc>
<delta_ts>2015-02-08 19:54:49 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>tokens</component>
<version>9.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>minor</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Marten Lohstroh">marten@eecs.berkeley.edu</reporter>
<assigned_to name="Marten Lohstroh">marten@eecs.berkeley.edu</assigned_to>
<cc>cxh@eecs.berkeley.edu</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>2.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-xoftkDuue7I7fu821UMbsFcbcJrbcIGWKs9Tap8Fuuw</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>995</commentid>
<comment_count>0</comment_count>
<who name="Marten Lohstroh">marten@eecs.berkeley.edu</who>
<bug_when>2013-04-09 08:39:26 -0700</bug_when>
<thetext>In the expression evaluator:
&gt;&gt; a = {x = 1}
{x = 1}
&gt;&gt; a.get(&quot;\&quot;x&quot;)
yields: &quot;Failed to evaluate expression
null&quot;
Hitting &quot;Dismiss&quot; and continuing by hitting &lt;Enter&gt; will keep giving the same exception.
Stacktrace:
java.lang.NullPointerException
at ptolemy.data.expr.ConversionUtilities.convertJavaTypeToToken(ConversionUtilities.java:233)
at ptolemy.data.expr.CachedMethod.invoke(CachedMethod.java:549)
at ptolemy.data.expr.ParseTreeEvaluator._methodCall(ParseTreeEvaluator.java:1452)
at ptolemy.data.expr.ParseTreeEvaluator.visitMethodCallNode(ParseTreeEvaluator.java:897)
at ptolemy.data.expr.ASTPtMethodCallNode.visit(ASTPtMethodCallNode.java:98)
at ptolemy.data.expr.ParseTreeEvaluator.evaluateParseTree(ParseTreeEvaluator.java:105)
at ptolemy.actor.gui.ExpressionShellTableau.evaluateCommand(ExpressionShellTableau.java:149)
at ptolemy.gui.ShellTextArea._evalCommand(ShellTextArea.java:319)
at ptolemy.gui.ShellTextArea.access$2(ShellTextArea.java:294)
at ptolemy.gui.ShellTextArea$ShellKeyListener.keyPressed(ShellTextArea.java:476)
at java.awt.Component.processKeyEvent(Component.java:6248)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2801)
at java.awt.Component.processEvent(Component.java:6067)
at java.awt.Container.processEvent(Container.java:2039)
at java.awt.Component.dispatchEventImpl(Component.java:4653)
at java.awt.Container.dispatchEventImpl(Container.java:2097)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1836)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676)
at java.awt.Component.dispatchEventImpl(Component.java:4525)
at java.awt.Container.dispatchEventImpl(Container.java:2097)
at java.awt.Window.dispatchEventImpl(Window.java:2482)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:648)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:607)
at java.awt.EventQueue$1.run(EventQueue.java:605)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:621)
at java.awt.EventQueue$2.run(EventQueue.java:619)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:618)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>996</commentid>
<comment_count>1</comment_count>
<who name="Marten Lohstroh">marten@eecs.berkeley.edu</who>
<bug_when>2013-04-24 12:59:50 -0700</bug_when>
<thetext>This was solved in the slipstream of addressing another issue, see: https://projects.ecoinformatics.org/ecoinfo/issues/5722</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>1007</commentid>
<comment_count>2</comment_count>
<who name="Marten Lohstroh">marten@eecs.berkeley.edu</who>
<bug_when>2013-09-22 19:01:56 -0700</bug_when>
<thetext>The same problem reappeared, needs looking into.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>1013</commentid>
<comment_count>3</comment_count>
<who name="Marten Lohstroh">marten@eecs.berkeley.edu</who>
<bug_when>2015-02-08 19:54:49 -0800</bug_when>
<work_time>2.0</work_time>
<thetext>Fixed.
&gt;&gt; x = {a = 1}
{a = 1}
&gt;&gt; x.get(&quot;b&quot;)
No such key: &quot;b&quot;
&gt;&gt;</thetext>
</long_desc>
</bug>
<bug>
<bug_id>330</bug_id>
<creation_ts>2010-03-17 15:40:32 -0700</creation_ts>
<short_desc>Undo/Redo fails for simple situations involving ports</short_desc>
<delta_ts>2010-03-17 15:40:32 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>undo</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>minor</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>5.00</estimated_time>
<remaining_time>5.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-mvWZJ1EBDhdCwZ17HDCywA5LP-iGZYH6SdLmmGilCUU</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>668</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-03-17 15:40:32 -0700</bug_when>
<thetext>Hauke reports:
1. Link two actors directly with a link without relation vertex.
2. Manually add a relation vertex to that relation (Cmd-click on the connection)
3. Undo
4. Redo
5. Boom
Another similar bug:
1. In a new blank canvas, place an input port, an output port and a relation
(a diamond). Move the relation so that it is not in between the
input port and the output port.
2. Connect the input port and the output port.
- Under Mac OS, place the mouse over the input port and then Command-click
and drag to the output port
3. Drag the end of the link from the output port to the relation
4. Undo by doing Command-z
5. Redo by doing Command-y
You will get the stack trace below.
I modified ptolemy.kernel.undo.UndoStackAttribute and added
the following to the c&apos;tor:
_debugging = true;
Note that this causes messages like:
&quot;Warning, _debugListeners was null, which means that _debugging was set to
true, but no listeners were added?&quot;
to appear. I removed those messages in the output below.
I also modified MoMLChangeRequest and set _DEBUG to true.
Below is a complete run that shows what is on the debug stack.
My comments start with ####. It is easiest to start at the bottom
and work up
bash-3.2$ $PTII/bin/vergil
****** Executing MoML change:
&lt;port name=&quot;port&quot;&gt;
&lt;property name=&quot;_location&quot; class=&quot;ptolemy.kernel.util.Location&quot;/&gt;
&lt;property name=&quot;input&quot;/&gt;&lt;/port&gt;
------ in context .
=======&gt; Pushing action onto undo stack:
&lt;deletePort name=&quot;port&quot; /&gt;
...in context: .
======= Clearing redo stack.
****** Executing MoML change:
&lt;port name=&quot;port2&quot;&gt;
&lt;property name=&quot;_location&quot; class=&quot;ptolemy.kernel.util.Location&quot;/&gt;
&lt;property name=&quot;output&quot;/&gt;&lt;/port&gt;
------ in context .
=======&gt; Pushing action onto undo stack:
&lt;deletePort name=&quot;port2&quot; /&gt;
...in context: .
======= Clearing redo stack.
****** Executing MoML change:
&lt;relation name=&quot;relation&quot;&gt;
&lt;vertex name=&quot;vertex1&quot; value=&quot;{300.0, 200.0}&quot;/&gt;
&lt;/relation&gt;
------ in context .
=======&gt; Pushing action onto undo stack:
&lt;deleteRelation name=&quot;relation&quot; /&gt;
...in context: .
======= Clearing redo stack.
****** Executing MoML change:
&lt;group&gt;
&lt;relation name=&quot;relation&quot; &gt;
&lt;vertex name=&quot;vertex1&quot; value=&quot;[290.0, 295.0]&quot; /&gt;
&lt;/relation&gt;
&lt;/group&gt;
------ in context .
### Here is where we move the relation, completing step #1 above.
=======&gt; Pushing action onto undo stack:
&lt;group&gt;
&lt;relation name=&quot;relation&quot; &gt;
&lt;vertex name=&quot;vertex1&quot; value=&quot;[300.0, 200.0]&quot; /&gt;
&lt;/relation&gt;
&lt;/group&gt;
...in context: .
#### Here is where we connect the input port and the output port, which
#### creates relation2. This is step #2 above.
======= Clearing redo stack.
****** Executing MoML change:
&lt;group&gt;
&lt;relation name=&quot;relation2&quot;/&gt;
&lt;link port=&quot;port2&quot; relation=&quot;relation2&quot;/&gt;
&lt;link port=&quot;port&quot; relation=&quot;relation2&quot;/&gt;
&lt;/group&gt;
------ in context .
=======&gt; Pushing action onto undo stack:
#### It might make more sense to do the unlinks first and then
#### deleteRelation, like what we do when we execute the change
&lt;group&gt;
&lt;deleteRelation name=&quot;relation2&quot; /&gt;
&lt;group&gt;&lt;unlink port=&quot;port&quot; insideIndex=&quot;0&quot; /&gt;&lt;/group&gt;
&lt;group&gt;&lt;unlink port=&quot;port2&quot; insideIndex=&quot;0&quot; /&gt;&lt;/group&gt;
&lt;/group&gt;
...in context: .
======= Clearing redo stack.
#### Here, we do the unlinks first and then delete the relation.
#### This is step #3
****** Executing MoML change:
&lt;group&gt;
&lt;unlink port=&quot;port2&quot; relation=&quot;relation2&quot;/&gt;
&lt;unlink port=&quot;port&quot; relation=&quot;relation2&quot;/&gt;
&lt;deleteRelation name=&quot;relation2&quot;/&gt;
&lt;link port=&quot;port&quot; relation=&quot;relation&quot;/&gt;
&lt;/group&gt;
------ in context .
=======&gt; Pushing action onto undo stack:
#### Again, this undo seems odd because we do the links to relation 2and *then*
#### create relation2. Then we unlink from port.
#### Compare this to the change request we executed for step #2,
#### which was relation-link-link, but this step is link-link-relation-unlink
#### Perhaps it should be unlink-relation-link-link? In otherwords,
#### backwards from what we have? Should the commands be pushed onto
#### the undo stack in LIFO instead of FIFO?
&lt;group&gt;
&lt;link port=&quot;port2&quot; insertInsideAt=&quot;0&quot; relation=&quot;relation2&quot; /&gt;
&lt;link port=&quot;port&quot; insertInsideAt=&quot;0&quot; relation=&quot;relation2&quot; /&gt;
&lt;group&gt; &lt;relation name=&quot;relation2&quot; class=&quot;ptolemy.actor.TypedIORelation&quot;&gt;
&lt;/relation&gt;
&lt;/group&gt;
&lt;group&gt;&lt;unlink port=&quot;port&quot; insideIndex=&quot;0&quot; /&gt;&lt;/group&gt;
&lt;/group&gt;
...in context: .
======= Clearing redo stack.
#### Here, we are about to do the undo()
#### Oddly, we create relation2 *after* we do the links?
#### Note that the unlink from port to relation is at the end?
&lt;====== Executing undo action:
&lt;group&gt;
&lt;link port=&quot;port2&quot; insertInsideAt=&quot;0&quot; relation=&quot;relation2&quot; /&gt;
&lt;link port=&quot;port&quot; insertInsideAt=&quot;0&quot; relation=&quot;relation2&quot; /&gt;
&lt;group&gt; &lt;relation name=&quot;relation2&quot; class=&quot;ptolemy.actor.TypedIORelation&quot;&gt;
&lt;/relation&gt;
&lt;/group&gt;
&lt;group&gt;&lt;unlink port=&quot;port&quot; insideIndex=&quot;0&quot; /&gt;&lt;/group&gt;
&lt;/group&gt;
...in context: .
#### Here, we actually do the MoML change
****** Executing MoML change:
&lt;group&gt;
&lt;link port=&quot;port2&quot; insertInsideAt=&quot;0&quot; relation=&quot;relation2&quot; /&gt;
&lt;link port=&quot;port&quot; insertInsideAt=&quot;0&quot; relation=&quot;relation2&quot; /&gt;
&lt;group&gt; &lt;relation name=&quot;relation2&quot; class=&quot;ptolemy.actor.TypedIORelation&quot;&gt;
&lt;/relation&gt;
&lt;/group&gt;
&lt;group&gt;&lt;unlink port=&quot;port&quot; insideIndex=&quot;0&quot; /&gt;&lt;/group&gt;
&lt;/group&gt;
------ in context .
#### Note that what gets pushed on to the undo stack is the reverse
#### of the above. The problem will be that the port is not
#### multiport. Compare this to the MoML from step #2, which is
#### relation-link-link, but we have link-deleteRelation-unlink-unlink.
#### Thsi should be unlink-unlink-deleteRelation-link
=======&gt; Pushing action onto redo stack:
&lt;group&gt;
&lt;group&gt;
&lt;link port=&quot;port&quot; insertInsideAt=&quot;0&quot; relation=&quot;relation&quot; /&gt;
&lt;/group&gt;
&lt;group&gt;
&lt;deleteRelation name=&quot;relation2&quot; /&gt;
&lt;/group&gt;
&lt;group&gt;&lt;unlink port=&quot;port&quot; insideIndex=&quot;0&quot; /&gt;&lt;/group&gt;
&lt;group&gt;&lt;unlink port=&quot;port2&quot; insideIndex=&quot;0&quot; /&gt;&lt;/group&gt;
&lt;/group&gt;
...in context: .
#### Here, we are about to process a redo()
#### Here&apos;s the MoMLChangeRequest we are going to execute, which will fail
&lt;====== Executing redo action:
&lt;group&gt;
&lt;group&gt;
&lt;link port=&quot;port&quot; insertInsideAt=&quot;0&quot; relation=&quot;relation&quot; /&gt;
&lt;/group&gt;
&lt;group&gt;
&lt;deleteRelation name=&quot;relation2&quot; /&gt;
&lt;/group&gt;
&lt;group&gt;&lt;unlink port=&quot;port&quot; insideIndex=&quot;0&quot; /&gt;&lt;/group&gt;
&lt;group&gt;&lt;unlink port=&quot;port2&quot; insideIndex=&quot;0&quot; /&gt;&lt;/group&gt;
&lt;/group&gt;
...in context: .
### Below is the MoML change that causes the exception.
****** Executing MoML change:
&lt;group&gt;
&lt;group&gt;
&lt;link port=&quot;port&quot; insertInsideAt=&quot;0&quot; relation=&quot;relation&quot; /&gt;
&lt;/group&gt;
&lt;group&gt;
&lt;deleteRelation name=&quot;relation2&quot; /&gt;
&lt;/group&gt;
&lt;group&gt;&lt;unlink port=&quot;port&quot; insideIndex=&quot;0&quot; /&gt;&lt;/group&gt;
&lt;group&gt;&lt;unlink port=&quot;port2&quot; insideIndex=&quot;0&quot; /&gt;&lt;/group&gt;
&lt;/group&gt;
------ in context .
### Here&apos;s the stack trace that appears after doing redo.
### The problem occurs because we are linking to &quot;port&quot; to &quot;relation&quot;, but
### we have not done the unlink yet, so port has two links.
ptolemy.kernel.util.InternalErrorException: ChangeRequest failed (NOTE: there is no ChangeListener):
&lt;group&gt;
&lt;group&gt;
&lt;link port=&quot;port&quot; insertInsideAt=&quot;0&quot; relation=&quot;relation&quot; /&gt;
&lt;/group&gt;
&lt;group&gt;
&lt;deleteRelation name=&quot;relation2&quot; /&gt;
&lt;/group&gt;
&lt;group&gt;&lt;unlink port=&quot;port&quot; insideIndex=&quot;0&quot; /&gt;&lt;/group&gt;
&lt;group&gt;&lt;unlink port=&quot;port2&quot; insideIndex=&quot;0&quot; /&gt;&lt;/group&gt;
&lt;/group&gt;
Because:
Cannot insert a second inside link in a port that is not a multiport.
in .&lt;Unnamed Object&gt;.port
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:231)
at ptolemy.moml.MoMLUndoEntry.execute(MoMLUndoEntry.java:107)
at ptolemy.kernel.undo.UndoStackAttribute.redo(UndoStackAttribute.java:263)
at ptolemy.kernel.undo.RedoChangeRequest._execute(RedoChangeRequest.java:96)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:171)
at ptolemy.kernel.util.NamedObj.executeChangeRequests(NamedObj.java:732)
at ptolemy.kernel.util.NamedObj.requestChange(NamedObj.java:1757)
at ptolemy.actor.CompositeActor.requestChange(CompositeActor.java:1594)
at ptolemy.vergil.basic.BasicGraphFrame.redo(BasicGraphFrame.java:1187)
at ptolemy.vergil.basic.BasicGraphFrame$RedoAction.actionPerformed(BasicGraphFrame.java:3318)
at javax.swing.JComponent$ActionStandin.actionPerformed(JComponent.java:3230)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1573)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2766)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:255)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:204)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2843)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2835)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2729)
at java.awt.Component.processEvent(Component.java:5379)
at java.awt.Container.processEvent(Container.java:2010)
at java.awt.Component.dispatchEventImpl(Component.java:4068)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1828)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:681)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:940)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:810)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:645)
at java.awt.Component.dispatchEventImpl(Component.java:3941)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Window.dispatchEventImpl(Window.java:1801)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Caused by: ptolemy.kernel.util.IllegalActionException: Cannot insert a second inside link in a port that is not a multiport.
in .&lt;Unnamed Object&gt;.port
at ptolemy.actor.IOPort.insertLink(IOPort.java:2036)
at ptolemy.kernel.ComponentPort.insertInsideLink(ComponentPort.java:256)
at ptolemy.moml.MoMLParser._processLink(MoMLParser.java:6170)
at ptolemy.moml.MoMLParser.access$700(MoMLParser.java:205)
at ptolemy.moml.MoMLParser$LinkRequest.execute(MoMLParser.java:7217)
at ptolemy.moml.MoMLParser._processPendingRequests(MoMLParser.java:6306)
at ptolemy.moml.MoMLParser.endElement(MoMLParser.java:892)
at com.microstar.xml.XmlParser.parseETag(XmlParser.java:1026)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1098)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1104)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseDocument(XmlParser.java:481)
at com.microstar.xml.XmlParser.doParse(XmlParser.java:159)
at com.microstar.xml.XmlParser.parse(XmlParser.java:132)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1402)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1374)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1530)
at ptolemy.moml.MoMLChangeRequest._execute(MoMLChangeRequest.java:289)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:171)
... 37 more
Caused by: ptolemy.kernel.util.IllegalActionException: Cannot insert a second inside link in a port that is not a multiport.
in .&lt;Unnamed Object&gt;.port
at ptolemy.actor.IOPort.insertLink(IOPort.java:2036)
at ptolemy.kernel.ComponentPort.insertInsideLink(ComponentPort.java:256)
at ptolemy.moml.MoMLParser._processLink(MoMLParser.java:6170)
at ptolemy.moml.MoMLParser.access$700(MoMLParser.java:205)
at ptolemy.moml.MoMLParser$LinkRequest.execute(MoMLParser.java:7217)
at ptolemy.moml.MoMLParser._processPendingRequests(MoMLParser.java:6306)
at ptolemy.moml.MoMLParser.endElement(MoMLParser.java:892)
at com.microstar.xml.XmlParser.parseETag(XmlParser.java:1026)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1098)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1104)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseDocument(XmlParser.java:481)
at com.microstar.xml.XmlParser.doParse(XmlParser.java:159)
at com.microstar.xml.XmlParser.parse(XmlParser.java:132)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1402)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1374)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1530)
at ptolemy.moml.MoMLChangeRequest._execute(MoMLChangeRequest.java:289)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:171)
at ptolemy.moml.MoMLUndoEntry.execute(MoMLUndoEntry.java:107)
at ptolemy.kernel.undo.UndoStackAttribute.redo(UndoStackAttribute.java:263)
at ptolemy.kernel.undo.RedoChangeRequest._execute(RedoChangeRequest.java:96)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:171)
at ptolemy.kernel.util.NamedObj.executeChangeRequests(NamedObj.java:732)
at ptolemy.kernel.util.NamedObj.requestChange(NamedObj.java:1757)
at ptolemy.actor.CompositeActor.requestChange(CompositeActor.java:1594)
at ptolemy.vergil.basic.BasicGraphFrame.redo(BasicGraphFrame.java:1187)
at ptolemy.vergil.basic.BasicGraphFrame$RedoAction.actionPerformed(BasicGraphFrame.java:3318)
at javax.swing.JComponent$ActionStandin.actionPerformed(JComponent.java:3230)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1573)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2766)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:255)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:204)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2843)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2835)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2729)
at java.awt.Component.processEvent(Component.java:5379)
at java.awt.Container.processEvent(Container.java:2010)
at java.awt.Component.dispatchEventImpl(Component.java:4068)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1828)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:681)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:940)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:810)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:645)
at java.awt.Component.dispatchEventImpl(Component.java:3941)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Window.dispatchEventImpl(Window.java:1801)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
----------------------
What I think is happening here is that it is not sufficient to just
reverse calls (link becomes unlink) in redo. I think we need to reverse
the order.
Interestingly, if we use multiports instead of ports, we get a different error:
1. File -&gt; New -&gt; Graph Editor
2. Create an input multiport, and output multiport and a relation diamond,
drag the diamond out of the way
3. Connect the input multiport to the output multiport
- Under Mac OS X, use Command-Click
4. Drag one end of the connection to the relation
5. Undo with Command-z
6. Redo with Command-y
ptolemy.kernel.util.InternalErrorException: ChangeRequest failed (NOTE: there is no ChangeListener):
&lt;group&gt;
&lt;group&gt;
&lt;link port=&quot;port&quot; insertInsideAt=&quot;0&quot; relation=&quot;relation&quot; /&gt;
&lt;/group&gt;
&lt;group&gt;
&lt;deleteRelation name=&quot;relation2&quot; /&gt;
&lt;/group&gt;
&lt;group&gt;&lt;unlink port=&quot;port&quot; insideIndex=&quot;0&quot; /&gt;&lt;/group&gt;
&lt;group&gt;&lt;unlink port=&quot;port2&quot; insideIndex=&quot;0&quot; /&gt;&lt;/group&gt;
&lt;/group&gt;
Because:
Index: 0, Size: 0
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:231)
at ptolemy.moml.MoMLUndoEntry.execute(MoMLUndoEntry.java:107)
at ptolemy.kernel.undo.UndoStackAttribute.redo(UndoStackAttribute.java:263)
at ptolemy.kernel.undo.RedoChangeRequest._execute(RedoChangeRequest.java:96)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:171)
at ptolemy.kernel.util.NamedObj.executeChangeRequests(NamedObj.java:732)
at ptolemy.kernel.util.NamedObj.requestChange(NamedObj.java:1757)
at ptolemy.actor.CompositeActor.requestChange(CompositeActor.java:1594)
at ptolemy.vergil.basic.BasicGraphFrame.redo(BasicGraphFrame.java:1187)
at ptolemy.vergil.basic.BasicGraphFrame$RedoAction.actionPerformed(BasicGraphFrame.java:3318)
at javax.swing.JComponent$ActionStandin.actionPerformed(JComponent.java:3230)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1573)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2766)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:255)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:204)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2843)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2835)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2729)
at java.awt.Component.processEvent(Component.java:5379)
at java.awt.Container.processEvent(Container.java:2010)
at java.awt.Component.dispatchEventImpl(Component.java:4068)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1828)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:681)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:940)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:810)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:645)
at java.awt.Component.dispatchEventImpl(Component.java:3941)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Window.dispatchEventImpl(Window.java:1801)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.LinkedList.entry(LinkedList.java:368)
at java.util.LinkedList.get(LinkedList.java:313)
at ptolemy.moml.MoMLParser._processUnlink(MoMLParser.java:6600)
at ptolemy.moml.MoMLParser.access$900(MoMLParser.java:205)
at ptolemy.moml.MoMLParser$UnlinkRequest.execute(MoMLParser.java:7258)
at ptolemy.moml.MoMLParser._processPendingRequests(MoMLParser.java:6306)
at ptolemy.moml.MoMLParser.endElement(MoMLParser.java:892)
at com.microstar.xml.XmlParser.parseETag(XmlParser.java:1026)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1098)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1104)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseDocument(XmlParser.java:481)
at com.microstar.xml.XmlParser.doParse(XmlParser.java:159)
at com.microstar.xml.XmlParser.parse(XmlParser.java:132)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1402)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1374)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1530)
at ptolemy.moml.MoMLChangeRequest._execute(MoMLChangeRequest.java:289)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:171)
... 37 more
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.LinkedList.entry(LinkedList.java:368)
at java.util.LinkedList.get(LinkedList.java:313)
at ptolemy.moml.MoMLParser._processUnlink(MoMLParser.java:6600)
at ptolemy.moml.MoMLParser.access$900(MoMLParser.java:205)
at ptolemy.moml.MoMLParser$UnlinkRequest.execute(MoMLParser.java:7258)
at ptolemy.moml.MoMLParser._processPendingRequests(MoMLParser.java:6306)
at ptolemy.moml.MoMLParser.endElement(MoMLParser.java:892)
at com.microstar.xml.XmlParser.parseETag(XmlParser.java:1026)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1098)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1104)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseDocument(XmlParser.java:481)
at com.microstar.xml.XmlParser.doParse(XmlParser.java:159)
at com.microstar.xml.XmlParser.parse(XmlParser.java:132)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1402)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1374)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1530)
at ptolemy.moml.MoMLChangeRequest._execute(MoMLChangeRequest.java:289)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:171)
at ptolemy.moml.MoMLUndoEntry.execute(MoMLUndoEntry.java:107)
at ptolemy.kernel.undo.UndoStackAttribute.redo(UndoStackAttribute.java:263)
at ptolemy.kernel.undo.RedoChangeRequest._execute(RedoChangeRequest.java:96)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:171)
at ptolemy.kernel.util.NamedObj.executeChangeRequests(NamedObj.java:732)
at ptolemy.kernel.util.NamedObj.requestChange(NamedObj.java:1757)
at ptolemy.actor.CompositeActor.requestChange(CompositeActor.java:1594)
at ptolemy.vergil.basic.BasicGraphFrame.redo(BasicGraphFrame.java:1187)
at ptolemy.vergil.basic.BasicGraphFrame$RedoAction.actionPerformed(BasicGraphFrame.java:3318)
at javax.swing.JComponent$ActionStandin.actionPerformed(JComponent.java:3230)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1573)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2766)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:255)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:204)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2843)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2835)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2729)
at java.awt.Component.processEvent(Component.java:5379)
at java.awt.Container.processEvent(Container.java:2010)
at java.awt.Component.dispatchEventImpl(Component.java:4068)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1828)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:681)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:940)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:810)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:645)
at java.awt.Component.dispatchEventImpl(Component.java:3941)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Window.dispatchEventImpl(Window.java:1801)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>151</bug_id>
<creation_ts>2008-03-20 12:10:24 -0700</creation_ts>
<short_desc>Debug | Stop Animation should stop animation over the whole model</short_desc>
<delta_ts>2008-03-20 12:10:24 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>minor</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163--G1EB3y2AW_FjhBw-AhQcoYR6QUaw6exsI3cF_eDYys</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>239</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-20 12:10:24 -0700</bug_when>
<thetext>Ian Brown writes:
&gt; The Debug | Stop Animating menu point only stops the animation in
&gt; the current window / sub-model. It should stop the animation over
&gt; the whole model.
I&apos;m not totally sure if we always want to stop the animation everywhere.
More thought is needed here.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>284</bug_id>
<creation_ts>2009-06-17 17:05:28 -0700</creation_ts>
<short_desc>Clone problems in GUI actors</short_desc>
<delta_ts>2012-06-29 08:08:56 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>minor</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>15.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-nxLupb_liNeOP-3MBtKJFw98Q0tsleL1jn--Zq14A4c</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>559</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-06-17 17:05:28 -0700</bug_when>
<thetext>One of the configuration test reports clone problems.
However, the nightly build does not test graphical actors.
To run the test on the graphical actors:
1) In the splash screen, follow the copyright link
2) In the next window, follow the copyright link at the bottom.
&quot;Other copyrights about this configuration (may take a moment to run).&quot;
3) In the next window, follow the copyright link at the bottom.
&quot;Other information about this configuration.&quot;
4) Click on &quot;about:configuration&quot;
The configuration will be expanded, which requires that all optional
packages be compiled (GR, JMF, JAI, Matlab etc.)
A window eventually appears which lists the problem actors.
The reason we need to fix these is because if the actor is used in
an actor oriented class definition, then cloning must be used.
Of the problem actors, I think that actor.lib.gui.TimedPlotter is
by far the most important actor to fix. The other actors could wait.
Here&apos;s the list:
The _connected java.util.ArrayList field
in the clone of &quot;ptolemy.actor.lib.gui.TimedPlotter&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._connected = (ArrayList)newObject
/* Get the object method or null? */ _connected;
The _connected java.util.ArrayList field
in the clone of &quot;ptolemy.actor.lib.gui.TimedPlotter&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._connected = (ArrayList)newObject
/* Get the object method or null? */ _connected;
The _lastTransform javax.media.j3d.Transform3D field
in the clone of &quot;ptolemy.domains.gr.lib.ViewScreen3D&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._lastTransform = (Transform3D)newObject
/* Get the object method or null? */ _lastTransform;
The _lastTransform javax.media.j3d.Transform3D field
in the clone of &quot;ptolemy.domains.gr.lib.ViewScreen3D&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._lastTransform = (Transform3D)newObject
/* Get the object method or null? */ _lastTransform;
The _affineTransform java.awt.geom.AffineTransform field
in the clone of &quot;ptolemy.actor.lib.jai.JAIAffineTransform&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._affineTransform = (AffineTransform)newObject
/* Get the object method or null? */ _affineTransform;
The _initialMatrix [[D field
in the clone of &quot;ptolemy.actor.lib.jai.JAIAffineTransform&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._initialMatrix = ([[D)newObject
/* Get the object method or null? */ _initialMatrix;
The _matrixValue [[D field
in the clone of &quot;ptolemy.actor.lib.jai.JAIAffineTransform&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._matrixValue = ([[D)newObject
/* Get the object method or null? */ _matrixValue;
The _initialMatrix [[D field
in the clone of &quot;ptolemy.actor.lib.jai.JAIBandCombine&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._initialMatrix = ([[D)newObject
/* Get the object method or null? */ _initialMatrix;
The _matrixValue [[D field
in the clone of &quot;ptolemy.actor.lib.jai.JAIBandCombine&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._matrixValue = ([[D)newObject
/* Get the object method or null? */ _matrixValue;
The _indiceArray [I field
in the clone of &quot;ptolemy.actor.lib.jai.JAIBandSelect&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._indiceArray = ([I)newObject
/* Get the object method or null? */ _indiceArray;
The _initialArray [Lptolemy.data.IntToken; field
in the clone of &quot;ptolemy.actor.lib.jai.JAIBandSelect&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._initialArray = (IntToken;)newObject
/* Get the object method or null? */ _initialArray;
The _constantValues [D field
in the clone of &quot;ptolemy.actor.lib.jai.JAIBorder&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._constantValues = ([D)newObject
/* Get the object method or null? */ _constantValues;
The _initialArray [Lptolemy.data.DoubleToken; field
in the clone of &quot;ptolemy.actor.lib.jai.JAIBorder&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._initialArray = (DoubleToken;)newObject
/* Get the object method or null? */ _initialArray;
The _zero ptolemy.data.IntToken field
in the clone of &quot;ptolemy.actor.lib.jai.JAIConstant&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._zero = (IntToken)newObject
/* Get the object method or null? */ _zero;
The _defaultValues [Lptolemy.data.IntToken; field
in the clone of &quot;ptolemy.actor.lib.jai.JAIConstant&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._defaultValues = (IntToken;)newObject
/* Get the object method or null? */ _defaultValues;
The values [Lptolemy.data.Token; field
in the clone of &quot;ptolemy.actor.lib.jai.JAIConstant&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject.values = (Token;)newObject
/* Get the object method or null? */ values;
The _filter javax.media.jai.KernelJAI field
in the clone of &quot;ptolemy.actor.lib.jai.JAIConvolve&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._filter = (KernelJAI)newObject
/* Get the object method or null? */ _filter;
The _initialMatrix [[D field
in the clone of &quot;ptolemy.actor.lib.jai.JAIConvolve&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._initialMatrix = ([[D)newObject
/* Get the object method or null? */ _initialMatrix;
The _firstMaskData ptolemy.data.DoubleMatrixToken field
in the clone of &quot;ptolemy.actor.lib.jai.JAIEdgeDetection&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._firstMaskData = (DoubleMatrixToken)newObject
/* Get the object method or null? */ _firstMaskData;
The _secondMaskData ptolemy.data.DoubleMatrixToken field
in the clone of &quot;ptolemy.actor.lib.jai.JAIEdgeDetection&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._secondMaskData = (DoubleMatrixToken)newObject
/* Get the object method or null? */ _secondMaskData;
The _initialMatrix [[D field
in the clone of &quot;ptolemy.actor.lib.jai.JAIEdgeDetection&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._initialMatrix = ([[D)newObject
/* Get the object method or null? */ _initialMatrix;
The _fileURL java.net.URL field
in the clone of &quot;ptolemy.actor.lib.jai.JAIImageReader&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._fileURL = (URL)newObject
/* Get the object method or null? */ _fileURL;
The _shape javax.media.jai.operator.MedianFilterShape field
in the clone of &quot;ptolemy.actor.lib.jai.JAIMedianFilter&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._shape = (MedianFilterShape)newObject
/* Get the object method or null? */ _shape;
The _initialArray [Lptolemy.data.IntToken; field
in the clone of &quot;ptolemy.actor.lib.jai.JAIPNGWriter&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._initialArray = (IntToken;)newObject
/* Get the object method or null? */ _initialArray;
The _valueArray [I field
in the clone of &quot;ptolemy.actor.lib.jai.JAIPNGWriter&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._valueArray = ([I)newObject
/* Get the object method or null? */ _valueArray;
The _transposeType javax.media.jai.operator.TransposeType field
in the clone of &quot;ptolemy.actor.lib.jai.JAITranspose&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._transposeType = (TransposeType)newObject
/* Get the object method or null? */ _transposeType;
The _startTime javax.media.Time field
in the clone of &quot;ptolemy.actor.lib.jmf.AudioPlayer&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._startTime = (Time)newObject
/* Get the object method or null? */ _startTime;
The YArray [B field
in the clone of &quot;ptolemy.actor.lib.jmf.ColorFinder&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject.YArray = ([B)newObject
/* Get the object method or null? */ YArray;
The UArray [B field
in the clone of &quot;ptolemy.actor.lib.jmf.ColorFinder&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject.UArray = ([B)newObject
/* Get the object method or null? */ UArray;
The VArray [B field
in the clone of &quot;ptolemy.actor.lib.jmf.ColorFinder&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject.VArray = ([B)newObject
/* Get the object method or null? */ VArray;
The _yClass [I field
in the clone of &quot;ptolemy.actor.lib.jmf.ColorFinder&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._yClass = ([I)newObject
/* Get the object method or null? */ _yClass;
The _uClass [I field
in the clone of &quot;ptolemy.actor.lib.jmf.ColorFinder&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._uClass = ([I)newObject
/* Get the object method or null? */ _uClass;
The _vClass [I field
in the clone of &quot;ptolemy.actor.lib.jmf.ColorFinder&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._vClass = ([I)newObject
/* Get the object method or null? */ _vClass;
The _dataSource javax.media.protocol.DataSource field
in the clone of &quot;ptolemy.actor.lib.jmf.MovieReader&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._dataSource = (DataSource)newObject
/* Get the object method or null? */ _dataSource;
The _waitSync java.lang.Object field
in the clone of &quot;ptolemy.actor.lib.jmf.MovieReader&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._waitSync = (Object)newObject
/* Get the object method or null? */ _waitSync;
The _file java.io.File field
in the clone of &quot;ptolemy.actor.lib.jmf.MovieWriter&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._file = (File)newObject
/* Get the object method or null? */ _file;
The _imageSourceStream [Lptolemy.actor.lib.jmf.MovieWriter$ImageSourceStream; field
in the clone of &quot;ptolemy.actor.lib.jmf.MovieWriter&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._imageSourceStream = (MovieWriter$ImageSourceStream;)newObject
/* Get the object method or null? */ _imageSourceStream;
The _waitFileSync java.lang.Object field
in the clone of &quot;ptolemy.actor.lib.jmf.MovieWriter&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._waitFileSync = (Object)newObject
/* Get the object method or null? */ _waitFileSync;
The _waitSync java.lang.Object field
in the clone of &quot;ptolemy.actor.lib.jmf.MovieWriter&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._waitSync = (Object)newObject
/* Get the object method or null? */ _waitSync;
The _startTime javax.media.Time field
in the clone of &quot;ptolemy.actor.lib.jmf.PlaySound&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._startTime = (Time)newObject
/* Get the object method or null? */ _startTime;
The _waitSync java.lang.Object field
in the clone of &quot;ptolemy.actor.lib.jmf.VideoCamera&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._waitSync = (Object)newObject
/* Get the object method or null? */ _waitSync;
The _frameBuffer javax.media.Buffer field
in the clone of &quot;ptolemy.actor.lib.jmf.VideoCamera&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._frameBuffer = (Buffer)newObject
/* Get the object method or null? */ _frameBuffer;
The _startTime javax.media.Time field
in the clone of &quot;ptolemy.actor.lib.jmf.VideoPlayer&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._startTime = (Time)newObject
/* Get the object method or null? */ _startTime;
The ipbuf_encodep1 [[I field
in the clone of &quot;ptolemy.domains.sdf.lib.vq.HTVQEncode&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject.ipbuf_encodep1 = ([[I)newObject
/* Get the object method or null? */ ipbuf_encodep1;
The ipbuf_encodep2 [[I field
in the clone of &quot;ptolemy.domains.sdf.lib.vq.HTVQEncode&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject.ipbuf_encodep2 = ([[I)newObject
/* Get the object method or null? */ ipbuf_encodep2;
The _codeBook [[[I field
in the clone of &quot;ptolemy.domains.sdf.lib.vq.HTVQEncode&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._codeBook = ([[[I)newObject
/* Get the object method or null? */ _codeBook;
The _lookupTable [[I field
in the clone of &quot;ptolemy.domains.sdf.lib.vq.HTVQEncode&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._lookupTable = ([[I)newObject
/* Get the object method or null? */ _lookupTable;
The colorHistogram [I field
in the clone of &quot;ptolemy.domains.sdf.lib.vq.ImageContrast&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject.colorHistogram = ([I)newObject
/* Get the object method or null? */ colorHistogram;
The _codebook [[[[I field
in the clone of &quot;ptolemy.domains.sdf.lib.vq.VQDecode&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._codebook = ([[[[I)newObject
/* Get the object method or null? */ _codebook;
The _leds [[Lptolemy.vergil.kernel.attributes.RectangleAttribute; field
in the clone of &quot;ptolemy.vergil.actor.lib.LEDMatrix&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._leds = (RectangleAttribute;)newObject
/* Get the object method or null? */ _leds;
The _ledArray_icon ptolemy.vergil.icon.EditorIcon field
in the clone of &quot;ptolemy.vergil.actor.lib.LEDMatrix&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._ledArray_icon = (EditorIcon)newObject.LEDMatrix.getAttribute(&quot;_icon&quot;);
The _icon ptolemy.vergil.icon.ImageIcon field
in the clone of &quot;ptolemy.vergil.actor.lib.MonitorImage&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._icon = (ImageIcon)newObject.MonitorImage.getAttribute(&quot;_icon&quot;);
The _iteration ptolemy.data.expr.Variable field
in the clone of &quot;ptolemy.matlab.Expression&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._iteration = (Variable)newObject.MatlabExpression.getAttribute(&quot;iteration&quot;);
The _dataParameters ptolemy.matlab.Engine$ConversionParameters field
in the clone of &quot;ptolemy.matlab.Expression&quot;
does not point to an object distinct from the master.
This may cause problems with actor oriented classes.
The clone(Workspace) method should have a line like:
newObject._dataParameters = (Engine$ConversionParameters)newObject
/* Get the object method or null? */ _dataParameters;</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>965</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-06-29 08:08:56 -0700</bug_when>
<thetext>The various GUI actors now clone properly.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>323</bug_id>
<creation_ts>2010-02-22 14:29:33 -0800</creation_ts>
<short_desc>Up button does not work in modal models</short_desc>
<delta_ts>2015-01-07 09:15:07 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>trivial</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>eal@eecs.berkeley.edu</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-gg6I5ygSGZgfQ8O2hYFBt1ik96Zv9u-eaZE3buwAMpw</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>646</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-02-22 14:29:33 -0800</bug_when>
<thetext>1. Start up vergil
2. File-&gt;New -&gt; Graph Editor
3. In the left hand actor pane, open Utilities and drag in a ModalModel
4. In the Graph Editor, open the ModalModel
5. In the ModalModel, click the up arrow in the menu bar.
Nothing happens.
In other composites, the up arrow opens the container.
Edward outlined a solution to this issue, but the details were a bit complex.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>1011</commentid>
<comment_count>1</comment_count>
<who name="Edward A. Lee">eal@eecs.berkeley.edu</who>
<bug_when>2015-01-07 09:15:07 -0800</bug_when>
<thetext>Fixed by looking for instances of Modal Model.
Also fixed for other level-skipping composites, such as IterateOverArray.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>137</bug_id>
<creation_ts>2008-03-14 21:16:23 -0700</creation_ts>
<short_desc>Recently file list for models</short_desc>
<delta_ts>2012-06-28 23:12:31 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.0.beta</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-FWMcjLyyXNmnRQJ2knMI-aycuevbEwrjJ02bvNRKkCU</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>217</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-14 21:16:23 -0700</bug_when>
<thetext>Ian Brown suggested having a recently used file list when opening models.
This would require storing data on a per user basis.
We have the actor.gui.PtolemyPreferences class, see
actor.gui.WelcomeWindow for code that uses PtolemyPreferences.
Of course, moving to an Eclipse or Netbeans editor would obviate the
need for this facility.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>964</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-06-28 23:12:31 -0700</bug_when>
<thetext>We now have a list of recently used files.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>285</bug_id>
<creation_ts>2009-06-19 12:23:49 -0700</creation_ts>
<short_desc>Codegen PointerTokens do not work on 64 bit Java because PointerToken assumes 32 bits</short_desc>
<delta_ts>2009-06-19 12:23:49 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Codegen</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-WaqxTpZenlyZ74YSHlcM11IxZ8engvBYrtEKd9hcmpE</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>560</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-06-19 12:23:49 -0700</bug_when>
<thetext>The problem is that running:
rm -rf ~/codegen
java -classpath $PTII ptolemy.moml.MoMLSimpleApplication $PTII/ptolemy/codegen/c/actor/lib/jni/test/auto/SimplePassPointerWithECFATest.xml
java -classpath $PTII ptolemy.moml.MoMLSimpleApplication $PTII/ptolemy/codegen/c/actor/lib/jni/test/auto/SimplePassPointerWithECFATest.xml
crashes the JVM on Sisyphus, our 64-bit Linux box.
I have reproduced the crash with Java 1.5.0_18, 1.5.0_19
and 1.6.0_14. The model works fine on 32-bit machines.
The problem is that the ptolemy.actor.lib.jni.PointerToken
assumes that an int can be used to hold the value of a memory
/** The memory address of the pointer.
*/
private int _value;
When the above model is run, there are various warnings about
casts.
I started down the path of fixing this, but it seems tricky.
For example, in PointerToken, should _value be an int or a long?
It depends on the runtime environment, will the JVM be 32 bit or
64 bit? Should we have a Pointer32Token and a Pointer64Token?
BTW - This is a 64-Bit java:
[bldmastr@sisyphus ptII]$ java -version
java version &quot;1.6.0_14&quot;
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mixed mode)
This is 32-bit:
-bash-3.1$ /usr/java/jdk1.6.0/bin/java -version
java version &quot;1.6.0&quot;
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>7</bug_id>
<creation_ts>2004-12-23 12:50:50 -0800</creation_ts>
<short_desc>The FSM Editor does not have an automatic layout feature</short_desc>
<delta_ts>2007-05-21 12:30:02 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>4.1</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-PQYBz9ARCF4GpheQMVrf3-xs-d1XSM-O0jwR1sd7oqw</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>11</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2004-12-23 12:50:50 -0800</bug_when>
<thetext>In March, 2004, Haiyang wrote:
Actually, the automatic-layout command is not configured correctly for modal
models, fsm models, and interface automaton models. This happens in
both the HyVisual version and full version of Ptolemy. To see the problem,
try:
File -&gt; New -&gt; Modal Model (or FSM Editor or Interface Automaton Editor)
and see the Graph menu.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>22</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-05-08 14:02:20 -0700</bug_when>
<thetext>The FSM Editor still does not have an automatic layout tool.
Allen Hopkins did some research in to layout tools for the
metropolis editor. We might look at those tools:
http://embedded.eecs.berkeley.edu/metropolis/forum/10.html</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>112</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-05-21 12:30:02 -0700</bug_when>
<thetext>The FSM editor now has primitive autolayout
* vergil/actor/ActorGraphFrame.java has a LayoutAction that provides
the &quot;Automatic Layout&quot; menu choice for regular Ptolemy models.
* The &quot;Automatic Layout&quot; menu choice calls layoutGraph();
* BasicGraphFrame has the layoutGraph() method
I added similar code to vergil/fsm/FSMGraphFrame.java.
Note that the layout is not pretty, we could do more here.
Also, refactoring this code might avoid a little code duplication.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>59</bug_id>
<creation_ts>2007-02-01 17:22:42 -0800</creation_ts>
<short_desc>Some users want double click to open composite actors</short_desc>
<delta_ts>2009-04-06 18:46:55 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0.1</version>
<rep_platform>All</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>ASSIGNED</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-2r2FFQu2-PN10cVNecP14ArT28u8GKPhj_N_vUTUJ-g</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>91</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-02-01 17:22:42 -0800</bug_when>
<thetext>From the Rome 1/17/07 meeting and other meetings.
Ray wrote:
&gt;Is there an easy way to change the double-click action in Ptolemy to do an
&gt;Open Actor and put the properties on a (right-click -&gt; properties)? Our
&gt;modelers keep asking (complaining) about this because this is pretty much
&gt;the standard that most Windows software tools follow. It doesn&apos;t bother me
&gt;personally, but HCI design debates aside, it&apos;s just what they&apos;re accustomed
&gt;to doing. Anyway, I was hoping you can tell me something to do in the
&gt;Vergil setup files that would enable this. If it&apos;s a code change, then it
&gt;might be worth thinking about allowing this behavior to be customized by the
&gt;user (i.e., some applications allow the user to select from &quot;classic&quot;,
&gt;&quot;windows&quot;, &quot;...&quot;, conventions).
&gt; However, I&apos;m truly skeptical about this... I use a lot of
&gt; Windows apps, and I don&apos;t agree with the assessment of your users.
&gt; Perhaps they are simply reflecting the fact that they tend to
&gt; look inside composite actors more than configure them.
&gt; However, what about atomic actors? Should double click open
&gt; the source code? This is what it would have to do to be consistent...
&gt; I seriously doubt that&apos;s what they want...</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>99</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-04-02 13:34:48 -0700</bug_when>
<thetext>We talked about this, Edward suggested that the composite actors
could have an attribute which would control how they handled double clicks.
Perhaps we could make this be a preference.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>123</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-06-04 15:58:08 -0700</bug_when>
<thetext>From the May, 2007 Rome Visit:
Double click - right click go to configuration</thetext>
</long_desc>
</bug>
<bug>
<bug_id>335</bug_id>
<creation_ts>2010-05-05 08:24:09 -0700</creation_ts>
<short_desc>Actor Oriented Class definition order should not matter</short_desc>
<delta_ts>2011-09-12 11:54:51 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>MoML</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>40.00</estimated_time>
<remaining_time>40.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-0h37zsG6cVEUXdq4vvwPcBCXlZPM_W3-AQ3_7ncdf8w</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>674</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-05 08:24:09 -0700</bug_when>
<thetext>From the April, 2010 site visit, Warren writes:
&quot;Class Improvements - Modify Ptolemy so that the class definition order in the MoML file doesn&apos;t matter. This way, class definitions wouldn&apos;t necessarily have to be at the top level&quot;
Using the MoML &quot;input source&quot; directive might make it easier
to manage actor oriented classes
&lt;input source=&quot;ptolemy/moml/test/testClass2.xml&quot;/&gt;
See &quot;Sharing classes across models&quot; in Using Virgil:
http://ptolemy.eecs.berkeley.edu/ptolemyII/ptII8.0/ptII/doc/design/usingVergil/usingVergil.pdf&quot;
Deferring instantiation of a class could require two passes over the
MoML file.
It could be that the bug here is that when a MoML file is saved, it
is saved with the classes in an incorrect order. Developing a test case could
help.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>751</commentid>
<comment_count>1</comment_count>
<attachid>39</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2011-09-12 11:54:51 -0700</bug_when>
<thetext>Created attachment 39
Adding a class definition to the library.
Unfortunately, using the &lt;input source MoML directive does not currently work because when the model is saved, the output does not include the &lt;input source
directive, instead it includes the class definition itself, see bug#360.
One possible solution there would be to use the deprecated import MoML statement or &lt;class source=&gt;
This attachment includes an example of how to manually update the library
to include a class definition.
1. Edit ptolemy/actor/lib/sequencesources.xml and add
&lt;entity name=&quot;CompositeClassDefinition&quot; class=&quot;ptolemy.actor.lib.test.CompositeClassDefinition&quot;/&gt;
2. The second attachment contains CompositeClassDefinition.xml, copy this so that it
appears as ptolemy/actor/lib/test/CompositeClassDefinition.xml
3. The second attachment contains AOCInput2.xml. Note that it contains:
&lt;entity name=&quot;CompositeClassDefinition&quot; class=&quot;ptolemy.actor.lib.test.CompositeClassDefinition&quot;&gt;
&lt;property name=&quot;_location&quot; class=&quot;ptolemy.kernel.util.Location&quot; value=&quot;{335, 80}&quot;&gt;
&lt;/property&gt;
&lt;/entity&gt;
4. Run $PTII/bin/vergil AOCInput2.xml
5. Note that the CompositeClassDefinition look much like a regular composite actor.
However, right clicking and selecting &quot;Open Instance&quot; shows that it is an actor oriented class.
It could be a bug here that CompositeClassDefinition is not displayed like other instances.
6. Run the model.
7. Now, we&apos;ll delete the CompositeClassDefinition, drag in a new one and run it.
Remove the CompositeClassDefinition actor and drag in the CompositeClassDefinition from
Actors -&gt; Sources -&gt;SequenceSources
8. Hook up the CompositeClassDefinition.
9. Run the model.
10. View the xml</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>39</attachid>
<date>2011-09-12 11:54:51 -0700</date>
<delta_ts>2011-09-12 11:54:51 -0700</delta_ts>
<desc>Adding a class definition to the library.</desc>
<filename>AOCInput2.tar</filename>
<type>application/x-tar</type>
<size>9216</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340163-O0pSV0JFepZ9Y2YhJZyaykKhIkzNStJYsTHse3N7zUU</token>
</attachment>
</bug>
<bug>
<bug_id>337</bug_id>
<creation_ts>2010-05-05 09:18:44 -0700</creation_ts>
<short_desc>Componentization of Ptolemy using OSGi</short_desc>
<delta_ts>2010-05-05 17:33:39 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>build system</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<dependson>222</dependson>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>200.00</estimated_time>
<remaining_time>200.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-OJL1jsqIG3BPQVsgfVvU2Q2-lgTfVRLTmnK55JdfqW0</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>676</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-05 09:18:44 -0700</bug_when>
<thetext>From the April, 2010 site visit, Warren writes:
&quot;Componentization of Ptolemy using OSGi - Componentize Ptolemy II using the OSGi component architecture behind Eclipse.&quot;
This is in progress, but somewhat stalled.
We have a workgroup at http://chess.eecs.berkeley.edu/triq/
Currently, the biggest issue concerns how do we create a moml module that can access classes in other modules.
We have a sample repository, but it would need to be updated.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>297</bug_id>
<creation_ts>2009-07-22 11:47:45 -0700</creation_ts>
<short_desc>Warn if ct and modal are combined or if continuous and fsm are combined</short_desc>
<delta_ts>2009-07-22 11:47:45 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Continuous Domain</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-unQyAYef2Dxhsa9H8Oas4DRzxSwLDDNuSN-6MSR55VM</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>579</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-07-22 11:47:45 -0700</bug_when>
<thetext>Edward wrote:
I agree!
Edward
Thomas Huining Feng wrote:
&gt; Hi Edward and Christopher,
&gt;
&gt; This way of checking compatibility is a bit ad hoc. It depends on a particular method implemented in a director.
&gt;
&gt; A better solution may be to implement a common interface for specifying compatibility and a checker that checks compatibility with information provided via that interface. (Can this be done with an ontology lattice?)
&gt;
&gt; Some allowable types of composition has been discussed in this paper:
&gt; Antoon Goderis, Christopher Brooks, lkay Altintas, Edward A. Lee, &quot;Composing Different Models of Computation in Ptolemy II and Kepler&quot;
&gt;
&gt; Allowable composition with Ptera is discussed in my thesis.
&gt;
&gt; EmbeddedPtidesDirector can only be contained within DE.
&gt;
&gt; FSM is used only when CT is in the hierarchy and modal is not.
&gt;
&gt; Etc.
&gt;
&gt; It seems it&apos;s better to summarize all this information in an easy-to-access place.
&gt;
&gt; Edward A. Lee wrote:
&gt;&gt;
&gt;&gt; ContinuousDirector has some code in it already that almost does the
&gt;&gt; right thing:
&gt;&gt;
&gt;&gt; private ContinuousDirector _enclosingContinuousDirector() {
&gt;&gt; if (_enclosingContinuousDirectorVersion != _workspace.getVersion()) {
&gt;&gt; // Update the cache.
&gt;&gt; _enclosingContinuousDirector = null;
&gt;&gt; NamedObj container = getContainer().getContainer();
&gt;&gt; while (container != null) {
&gt;&gt; if (container instanceof Actor) {
&gt;&gt; Director director = ((Actor) container).getDirector();
&gt;&gt; if (director instanceof ContinuousDirector) {
&gt;&gt; _enclosingContinuousDirector = (ContinuousDirector) director;
&gt;&gt; break;
&gt;&gt; }
&gt;&gt; if (!(director instanceof QuasiTransparentDirector)) {
&gt;&gt; break;
&gt;&gt; }
&gt;&gt; }
&gt;&gt; container = container.getContainer();
&gt;&gt; }
&gt;&gt; _enclosingContinuousDirectorVersion = _workspace.getVersion();
&gt;&gt; }
&gt;&gt; return _enclosingContinuousDirector;
&gt;&gt; }
&gt;&gt;
&gt;&gt;
&gt;&gt; Notice the marker interface QuasiTransparentDirector to ensure that
&gt;&gt; we see an enclosing director even if separated by an arbitrary number
&gt;&gt; of levels of modal model.
&gt;&gt;
&gt;&gt; What about doing a string comparison of the class name to
&gt;&gt; avoid the dependency?
&gt;&gt;
&gt;&gt; I think the check needs to be done at run time (in
&gt;&gt; preinitialize, say), but it would possibly be useful to
&gt;&gt; also issue a warning during construction. It should be just
&gt;&gt; a warning, however, or it will prevent being able to read MoML
&gt;&gt; files containing the error.
&gt;&gt;
&gt;&gt; Edward
&gt;&gt;
&gt;&gt;
&gt;&gt; Christopher Brooks wrote:
&gt;&gt;&gt; Hi Edward,
&gt;&gt;&gt; I was thinking about how we would warn if
&gt;&gt;&gt; domains.ct was used with domains.modal or if
&gt;&gt;&gt; domains.continuous was used with domains.fsm.
&gt;&gt;&gt;
&gt;&gt;&gt; The naive solution would be to have the domains.modal constructor
&gt;&gt;&gt; check for directors that are instances of domains.ct.kernel.CTDirector.
&gt;&gt;&gt; However, this would add a dependency between domains.modal and ct.
&gt;&gt;&gt;
&gt;&gt;&gt; An alternative would be to add a marker interface to ptolemy.actor
&gt;&gt;&gt; and have domains.ct.kernel.CTDirector implement it.
&gt;&gt;&gt;
&gt;&gt;&gt; We would need to do something similar for continuous and domains.fsm.
&gt;&gt;&gt;
&gt;&gt;&gt; I think we need to traverse check the directors in the containers of
&gt;&gt;&gt; domains.modal and check each parent director.
&gt;&gt;&gt;
&gt;&gt;&gt; We might also want to check parent directors in ct.kernel.CTDirector
&gt;&gt;&gt; and continous.kernel.ContinuousDirector.
&gt;&gt;&gt;
&gt;&gt;&gt; I think we should do this at instantiation time instead of runtime
&gt;&gt;&gt; to avoid people building incorrect models. However, it might be
&gt;&gt;&gt; safer to try to detect this at runtime so that people can recreate
&gt;&gt;&gt; incorrect models with the correct director.
&gt;&gt;&gt;
&gt;&gt;&gt; Thoughts?
&gt;&gt;&gt;
&gt;&gt;&gt; _Christopher
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt;
&gt;&gt;&gt; Edward A. Lee wrote:
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; I&apos;ve checked in a fix.
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; The problem is that you changed the demo to use domains.modal instead
&gt;&gt;&gt;&gt; of domains.fsm, but the demo uses CT.
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; Models that use CT should continue to use FSM.
&gt;&gt;&gt;&gt; CT can probably be made to work with modal, but I don&apos;t have
&gt;&gt;&gt;&gt; the energy or time to make this happen.
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; Ideally, we would catch this error and throw a friendlier
&gt;&gt;&gt;&gt; exception.
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; Edward
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; Thomas Huining Feng wrote:
&gt;&gt;&gt;&gt;&gt; Hi,
&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt; As I tested the GT demos, I found this new exception in BouncingBallX2 (in ptolemy/actor/gt/demo/BouncingBallX2). I have no idea what this means or when it started happen.
&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt; ptolemy.actor.sched.NotSchedulableException: Signal type conflict: ...Ball Model.yPosition (of type DISCRETE) and ...PeriodicSampler.input (of type CONTINUOUS)). Perhaps the connection has sequence semantics?
&gt;&gt;&gt;&gt;&gt; in .&lt;Unnamed Object&gt;.&lt;Unnamed Object&gt;.Ball Model.yPosition, .&lt;Unnamed Object&gt;.&lt;Unnamed Object&gt;.PeriodicSampler.input
&gt;&gt;&gt;&gt;&gt; at ptolemy.domains.ct.kernel.CTScheduler$SignalTypeMap.propagateType(CTScheduler.java:1363)
&gt;&gt;&gt;&gt;&gt; at ptolemy.domains.ct.kernel.CTScheduler._getSchedule(CTScheduler.java:584)
&gt;&gt;&gt;&gt;&gt; at ptolemy.actor.sched.Scheduler.getSchedule(Scheduler.java:188)
&gt;&gt;&gt;&gt;&gt; at ptolemy.domains.ct.kernel.CTMultiSolverDirector.initialize(CTMultiSolverDirector.java:541)
&gt;&gt;&gt;&gt;&gt; at ptolemy.domains.ct.kernel.CTMixedSignalDirector.initialize(CTMixedSignalDirector.java:192)
&gt;&gt;&gt;&gt;&gt; at ptolemy.actor.CompositeActor.initialize(CompositeActor.java:719)
&gt;&gt;&gt;&gt;&gt; at ptolemy.actor.Director.initialize(Director.java:731)
&gt;&gt;&gt;&gt;&gt; at ptolemy.actor.Director.initialize(Director.java:704)
&gt;&gt;&gt;&gt;&gt; at ptolemy.actor.CompositeActor.initialize(CompositeActor.java:719)
&gt;&gt;&gt;&gt;&gt; at ptolemy.actor.Manager.initialize(Manager.java:615)
&gt;&gt;&gt;&gt;&gt; at ptolemy.actor.Manager.execute(Manager.java:338)
&gt;&gt;&gt;&gt;&gt; at ptolemy.actor.gt.ModelExecutor.fire(ModelExecutor.java:107)
&gt;&gt;&gt;&gt;&gt; at ptolemy.actor.process.ProcessThread.run(ProcessThread.java:217)
&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;</thetext>
</long_desc>
</bug>
<bug>
<bug_id>338</bug_id>
<creation_ts>2010-05-05 09:26:39 -0700</creation_ts>
<short_desc>Parallel execution on multicore machines</short_desc>
<delta_ts>2010-05-05 11:40:18 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Multicore</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<dependson>341</dependson>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>1000.00</estimated_time>
<remaining_time>1000.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-TeCLK6PrnKKC9GH8jbYX-BCYjThLkJhB0f3LGMbppYE</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>677</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-05 09:26:39 -0700</bug_when>
<thetext>From the April, 2010 site visit, Warren writes:
&quot;Parallel execution of Ptolemy models on multicore machines - Enable parallel execution of Ptolemy models on multicore machines. Provide a way for modelers to partition models for parallel execution.&quot;
There are several approaches to this.
- Use ThreadedComposite:
E.A. Lee, &quot;ThreadedComposite: A Mechanism for Building Concurrent and Parallel Ptolemy II Models,&quot; EECS Department, University of California, Berkeley, Technical Report No. UCB/EECS-2008-151, December 7, 2008.
http://www.eecs.berkeley.edu/Pubs/TechRpts/2008/EECS-2008-151.html
See
http://ptolemy.eecs.berkeley.edu/ptolemyII/ptII8.0/ptII/ptolemy/domains/de/doc/
- Use PN, where each actor is a thread.
- Use Modular Code Generation
The problem we face now is that Publishers and Subscribers have problem crossing Opaque boundaries.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>678</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-05 09:27:16 -0700</bug_when>
<thetext>Changed title</thetext>
</long_desc>
</bug>
<bug>
<bug_id>272</bug_id>
<creation_ts>2009-04-14 15:34:29 -0700</creation_ts>
<short_desc>Better status messages while running (# of iterations, time to complete)</short_desc>
<delta_ts>2009-04-14 15:34:29 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Performance</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340163-3x73XzZNXqhX5QrAErMySMDYuEGm7ywehTCtqiq5Xcc</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>521</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-04-14 15:34:29 -0700</bug_when>
<thetext>It would be nice if we there was a way to get more information
about the runtime status of a model such as:
-Iteration #N of #M.
-Estimated time to completion
-Time of this iteration
-Worst time for an iteration this run
etc.
We should make this data available, perhaps via a listener.
Don&apos;t focus on messages, focus instead on making the data
available.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>144</bug_id>
<creation_ts>2008-03-19 17:59:07 -0700</creation_ts>
<short_desc>Manhattan link layout algorithm is too primitive</short_desc>
<delta_ts>2008-03-26 17:27:16 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-3Hzf68UrkM8G-15X0YsTGwWZee3dXAWHMV5WcL6vQzg</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>229</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-19 17:59:07 -0700</bug_when>
<thetext>Ian Brown writes:
&gt;The Manhattan router is too primitive. Ideally, it should route intelligently in
&gt;order to avoid crossing. That&apos;s quite difficult though – a simpler first step &gt;would be to allow the user to adjust where the single &apos;kink&apos; in the line is. &gt;Currently, the router always kinks at 50%. Consider the picture below. It&apos;s &gt;confusing because all the routes break at 50%. If, via a 3rd grab handle, you &gt;could change this fixed 50% to another value then you could at least alter the &gt;diagram by hand to avoid the crossings without having the move the positions of &gt;the actors.
There are several components to this:
1) It should be easier to break links and insert relations, see:
https://chess.eecs.berkeley.edu/bugzilla/show_bug.cgi?id=22
&quot;Should not need relation black diamonds,&quot; which discusses inserting a relation
in a link.
2) Relation Groups, introduced in Ptolemy II 6.0.2 might be of interest.
Relation groups are two relations that are connected, which allows more complex
graphical layouts to be used. The 6.0.2 release notes say:
&quot;Relations mediate connections between ports. For flexibility, particularly
with visual syntaxes, the Ptolemy II abstract syntax permits any number of relations to be involved in any one connection. Relations may be linked to other relations. Any two relations that are linked are said to be members of the same relation group. Specifically, a relation group is a maximal set of linked relations. Semantically, a relation group has the same meaning as a single relation. The API of the Relation class, support linking and unlinking relations, and also provides a method to obtain a list of all the relations in a relation group.&quot;
&quot;In a relation group, there is no significance to the order in which relations are linked, unlike the order in which ports are linked to relations. Also, unlike links between relations and ports, there is no significance to multiple links between the same relations. Any two relations are either linked or not linked.&quot;
3) Visio has a pretty good way of laying out connectors.
4) A separate enhancement would be using different automatic layout tools
to layout models. There are plenty of them out there, I think
http://www.graphviz.org/ is one. The layout tool should be open source
and implemented in Java.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>255</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-26 17:27:16 -0700</bug_when>
<thetext>Ian writes:
&gt; Doing the layout well is indeed a complex issue. The ability to manually
&gt; tweak the layout would be a quick win though.
&gt; I was thinking that we could add a 3rd manipulator handle to the Manhattan
&gt; link which could be used to adjust the break percentage. Instead of
&gt; hard-coding it at 50%, the middle handle could be used to change it to a
&gt; different percentage. It&apos;s a bit like the 3rd handle on the arc link that
&gt; is used to change the radius of the arc.
There was further discussion in email from Ian on Mar 20, 2008, but
the gist of the solution is above.
</thetext>
</long_desc>
</bug>
<bug>
<bug_id>161</bug_id>
<creation_ts>2008-04-28 16:02:35 -0700</creation_ts>
<short_desc>Ptplot changes: cursor query, annotation mode, histogram, plot formatter</short_desc>
<delta_ts>2008-04-28 16:11:13 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Ptplot</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>12.00</estimated_time>
<remaining_time>12.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-H4Yvl_k0-jDD7wAuoelQG5fbTOM2YKTmfjKUAhbgEms</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>261</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-04-28 16:02:35 -0700</bug_when>
<thetext>6/07 Changes from Rowland Johnson:
I&apos;ve been doing some work for a group at the lab that has been using
ptplot. I&apos;ve add some new &quot;features&quot; that you guys may want for the
distributed version. Execute the attached jar. The work is still a bit
raw around the edges and I&apos;m starting to clean it up and finalize it. If
you&apos;re interested, I&apos;ll work towards that end. Presently, the code
doesn&apos;t come close to the Ptolemy coding standards.
1) a &quot;cursor query mode&quot; that presents the coordinates of points.
2) an &quot;annotation mode&quot; for, you guessed it, annotating 1) individual
points and 2) the whole plot.
3) Histograms have bee re-worked. There is a histogram button that
produces a histogram of the plot.
3) The plot formatter has been re-worked so that format options can be
set for individual traces.
I&apos;ve extended certain classes (like Plot, and Histogram) to add these
features. Where appropriate, I&apos;ve modified things like PlotBox. I&apos;ve
cleaned up a fair amount. _drawPlot had that Frakenstein feel that
results from multiple people adding just enough stuff to make their
thing work. It may be somewhat better now. I don&apos;t know if the real-time
live update stuff still works (the group I did this for doesn&apos;t need the
real-time stuff).</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>262</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-04-28 16:11:13 -0700</bug_when>
<thetext>Hmm, it looks like I never received source code from Rowland, so
I&apos;m looking into this now.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>146</bug_id>
<creation_ts>2008-03-19 18:38:03 -0700</creation_ts>
<short_desc>Need to change visual order of ports to untangle wiring</short_desc>
<delta_ts>2013-02-27 22:51:08 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>eal@eecs.berkeley.edu</cc>
<cc>ian.brown@hsbcib.com</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-VZZGdEU5-UyH_TDdpDJnf_wei_hoPKyi1XpJ50yLCXM</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>233</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-19 18:38:03 -0700</bug_when>
<thetext>Ian Brown writes:
&gt; You cannot change the visual order of ports that an actor has
&gt; (a composite actor or an expression actor in particular).
&gt; One often needs to do this in order to untangle wiring.
&gt; Currently you can elect to remove and re-add the ports, or you
&gt; can edit the order in the XML file using something like notepad.
&gt; Neither of these options is very appealing. It would be nice to
&gt; have an up and a down button in the port dialog. Pressing these
&gt; would change the relative position of the port in the list.
I mistakenly added the above to
https://chess.eecs.berkeley.edu/bugzilla/show_bug.cgi?id=23
Ian wrote:
&gt; There are 2 issues here:
&gt; 1. You have 8 connections to a single multi-port. How do you alter the
&gt; connection to the 4th one without deleting them all and re-adding them from
&gt; scratch.
&gt; 2. You have 8 individual ports which you want to re-order so that they route
&gt; better on the visual layout.
&gt; The summary (of bug 23 -cxh) seems to describe issue 1 whilst I was
&gt; referring to issue 2. I suspect that the issues are unrelated in the
&gt; code and so belong in 2 separate incidents.
Aha! Ok, this is fairly straightforward, it would require reworking the port
dialog to allow changing the order.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>993</commentid>
<comment_count>1</comment_count>
<who name="Edward A. Lee">eal@eecs.berkeley.edu</who>
<bug_when>2013-02-27 22:51:08 -0800</bug_when>
<thetext>For composite actors, there is an easy workaround. If you select Appearance-&gt;Move to Back on a port, then it becomes the first port. If you select Appearance-&gt;Move to Front, then it becomes the last port. I agree it would be better to have up-down buttons in the port dialog, however, as that would also work for the Expression actor, for example.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>51</bug_id>
<creation_ts>2006-11-14 09:10:11 -0800</creation_ts>
<short_desc>FSM GUI needs tweaks</short_desc>
<delta_ts>2006-12-01 09:17:03 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>ASSIGNED</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-7Ygdla2vXXBz8khXhJkXPpwJzPTk9Efz09q9kv4b-m4</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>81</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-11-14 09:10:11 -0800</bug_when>
<thetext>Edward writes:
The longer term solution is that the GUI for FSMs needs a few tweaks.
E.g., it should show initial states visually, and it should provide
for the first state created to be, by default, the initial state.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>82</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-12-01 09:17:03 -0800</bug_when>
<thetext>Edward writes:
&gt; I&apos;ve improved the Vergil editor for FSMs by changing the
&gt; way states are displayed:
&gt; - The initial state is now shown in bold.
&gt; - States are shown in rounded boxes that fit the name.
&gt; - The initial state is selected at the state rather than in the background.
&gt; - The first state inserted is by default the initial state.
&gt; - States with refinements are visually different from states without.
&gt; To do:
&gt; - Similar changes needed for final states.
</thetext>
</long_desc>
</bug>
<bug>
<bug_id>149</bug_id>
<creation_ts>2008-03-20 12:04:58 -0700</creation_ts>
<short_desc>Allow drag and drop of an actor into a composite actor</short_desc>
<delta_ts>2008-03-20 12:04:58 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-1wLgw63ejDtIj8-DrlSSzVneZM7ZMsaAr7QV5hFoRTc</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>237</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-20 12:04:58 -0700</bug_when>
<thetext>Ian Brown writes:
&gt; When prototyping and using composite actors to reduce the complexity
&gt; of models, it would be useful to be able to drag actors in and out of
&gt; a composite actor. For example, I may select 4 actors and create a
&gt; hierarchy to put them all in a composite actor. I then realise that
&gt; a fifth actor that is at the top level can also be put inside that
&gt; hierarchy. Currently I need to manually copy / paste / delete it into
&gt; there and adjust all the relations accordingly. It would be nice to be
&gt; able to simply drag / drop it into the target composite actor.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>231</bug_id>
<creation_ts>2009-01-27 18:22:06 -0800</creation_ts>
<short_desc>Need a C Codegen BarGraph actor for LMSAdaptive</short_desc>
<delta_ts>2009-01-28 18:34:56 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Codegen</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Hiren D. Patel">hiren@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-ddnAge5BQZhs0kuVxU27rz8Z6t8HBYz5WtLCkkoUsmY</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>393</commentid>
<comment_count>0</comment_count>
<who name="Hiren D. Patel">hiren@eecs.berkeley.edu</who>
<bug_when>2009-01-27 18:22:06 -0800</bug_when>
<thetext>Error received:
9 [sig] LMSAdaptive 1592 _cygtls::handle_exceptions: Error while dumping s
tate (probably corrupted stack)
Segmentation fault (core dumped)
1. Open demo example: /ptolemy/domains/sdf/demo/LMSAdaptive
2. Drop in CCodeGenerator actor from ModeLibraries-&gt;CodeGenerators-&gt;CCodeGenerator
3. Double click CCodeGenerator
4. Click on Generate
5. Output in dialog box is as:
// Starting ptolemy.codegen.c.kernel.CCodeGenerator {.LMSAdaptive.CCodeGenerator} code generation.
Writing LMSAdaptive.c in file:/C:/Documents%20and%20Settings/hiren/codegen/ (48231 characters)
Reading &quot;ptolemy/codegen/c/makefile.in&quot;,
writing &quot;C:\Documents and Settings\hiren/codegen/LMSAdaptive.mk&quot;
In &quot;C:\Documents and Settings\hiren\codegen&quot;, about to execute:
make
-f
LMSAdaptive.mk
// Code generation complete.
gcc -D__int64=&quot;long long&quot; -Wall -ggdb LMSAdaptive.c -o LMSAdaptive -lm
In &quot;C:\Documents and Settings\hiren\codegen&quot;, about to execute:
C:/Documents and Settings/hiren/codegen/LMSAdaptive
Display: {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.0014468536073335, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.0024126897488137, 0.0021300179785668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.00013285397828184#, 0.0040933870447811, -0.0043299388270865, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {0.0038797966606602, 0.0029022454487087, -0.0053557366470163, 0.0022622551641904, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.00028847297100328#, -0.0010191486773357, -0.0041916842341811, 0.0032647240825019, -0.0022108064994188, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.00072683239385994#, 0.0029139163779244, -0.0004915641440868, 0.0021663561092221, -0.0031567087130483, 0.0020860564587171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.0013203370765909, 0.0031550885988245, -0.0026554187001045, 0.00013066089384422, -0.0025524195620243, 0.0026064635167626, -0.0011476857638722, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.0026690224904106, 0.0028246307300024, -0.0025211362581008, -0.0010741531300862, -0.0036858756610559, 0.0029429260768908, -0.00085792797033567#, -0.00063902072324274#, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.00018216491736483#, 0.0063420719900343, -0.0016592850579717, -0.001424368678621, -0.00054365842120615#, 0.005899038160788, -0.0017354397157167, -0.0013947240236251, 0.001666599071153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.0031111617770119, 0.013338016843982, 0.0082358634816547, 0.0010001623977716, -0.001528873131972, 0.014738618990577, 0.0065805962910033, -0.0038633108240577, -0.00045932027088087#, 0.0046884209702233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.010291049943736, 0.0069182228074967, 0.023569620124317, 0.022688412207804, 0.0037852295766849, 0.012579219090915, 0.025955246048377, 0.014363830044085, -0.0058699845970531, 2.8817369391274e-05, 0.010276111046701, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {0.010370446352082, -0.008984843782663, 0.0093501212008513, 0.056651859451417, 0.051823537826597, 0.024349671120293, 0.021172291272247, 0.057277638462515, 0.034502153275196, -0.011955513455553, -4.4660618130536e-05#, 0.022761033942138, 0.0, 0.0, 0.0, 0.0}
Display: {0.010385638548854, 0.012780555980484, -0.0074026152340624, 0.0416726404215, 0.087601585844418, 0.074954572528924, 0.033571615606962, 0.052239139737106, 0.079708762816602, 0.030573629037398, -0.012669290875501, 0.011888843567684, 0.023977111612845, 0.0, 0.0, 0.0}
Display: {0.027954330710331, 0.012799280256225, 0.019423086993008, 0.021025010514306, 0.069139803673479, 0.11905076524012, 0.095941800909816, 0.067521219829341, 0.073498848551295, 0.08629045755651, 0.039747578325324, -0.0036709244906312, 0.010577213392967, 0.029551621536512, 0.0, 0.0}
Display: {0.01372990613765, 0.029552999481774, 0.019440942690836, 0.046606327496226, 0.049449971843158, 0.1014453844837, 0.13799246835898, 0.12699818960064, 0.088072026605439, 0.080368607537201, 0.092879825880669, 0.046314441591342, -0.0042607712940933, 0.016773315083, 0.028180786898185, 0.0}
All Done.
// Starting ptolemy.codegen.c.kernel.CCodeGenerator {.LMSAdaptive.CCodeGenerator} code generation.
Writing LMSAdaptive.c in file:/C:/cygwin/tmp/ (48231 characters)
Reading &quot;ptolemy/codegen/c/makefile.in&quot;,
writing &quot;file:/C:/cygwin/tmp/LMSAdaptive.mk&quot;
// Starting ptolemy.codegen.c.kernel.CCodeGenerator {.LMSAdaptive.CCodeGenerator} code generation.
Writing LMSAdaptive.c in file:/C:/cygwin/tmp/ (48231 characters)
Reading &quot;ptolemy/codegen/c/makefile.in&quot;,
writing &quot;C:/cygwin/tmp/LMSAdaptive.mk&quot;
In &quot;C:\cygwin\tmp&quot;, about to execute:
make
-f
LMSAdaptive.mk
// Code generation complete.
gcc -D__int64=&quot;long long&quot; -Wall -ggdb LMSAdaptive.c -o LMSAdaptive -lm
In &quot;C:\cygwin\tmp&quot;, about to execute:
C:/cygwin/tmp/LMSAdaptive
Display: {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.0014468536073335, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.0024126897488137, 0.0021300179785668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.00013285397828184#, 0.0040933870447811, -0.0043299388270865, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {0.0038797966606602, 0.0029022454487087, -0.0053557366470163, 0.0022622551641904, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.00028847297100328#, -0.0010191486773357, -0.0041916842341811, 0.0032647240825019, -0.0022108064994188, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.00072683239385994#, 0.0029139163779244, -0.0004915641440868, 0.0021663561092221, -0.0031567087130483, 0.0020860564587171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.0013203370765909, 0.0031550885988245, -0.0026554187001045, 0.00013066089384422, -0.0025524195620243, 0.0026064635167626, -0.0011476857638722, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.0026690224904106, 0.0028246307300024, -0.0025211362581008, -0.0010741531300862, -0.0036858756610559, 0.0029429260768908, -0.00085792797033567#, -0.00063902072324274#, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.00018216491736483#, 0.0063420719900343, -0.0016592850579717, -0.001424368678621, -0.00054365842120615#, 0.005899038160788, -0.0017354397157167, -0.0013947240236251, 0.001666599071153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.0031111617770119, 0.013338016843982, 0.0082358634816547, 0.0010001623977716, -0.001528873131972, 0.014738618990577, 0.0065805962910033, -0.0038633108240577, -0.00045932027088087#, 0.0046884209702233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.010291049943736, 0.0069182228074967, 0.023569620124317, 0.022688412207804, 0.0037852295766849, 0.012579219090915, 0.025955246048377, 0.014363830044085, -0.0058699845970531, 2.8817369391274e-05, 0.010276111046701, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {0.010370446352082, -0.008984843782663, 0.0093501212008513, 0.056651859451417, 0.051823537826597, 0.024349671120293, 0.021172291272247, 0.057277638462515, 0.034502153275196, -0.011955513455553, -4.4660618130536e-05#, 0.022761033942138, 0.0, 0.0, 0.0, 0.0}
Display: {0.010385638548854, 0.012780555980484, -0.0074026152340624, 0.0416726404215, 0.087601585844418, 0.074954572528924, 0.033571615606962, 0.052239139737106, 0.079708762816602, 0.030573629037398, -0.012669290875501, 0.011888843567684, 0.023977111612845, 0.0, 0.0, 0.0}
Display: {0.027954330710331, 0.012799280256225, 0.019423086993008, 0.021025010514306, 0.069139803673479, 0.11905076524012, 0.095941800909816, 0.067521219829341, 0.073498848551295, 0.08629045755651, 0.039747578325324, -0.0036709244906312, 0.010577213392967, 0.029551621536512, 0.0, 0.0}
Display: {0.01372990613765, 0.029552999481774, 0.019440942690836, 0.046606327496226, 0.049449971843158, 0.1014453844837, 0.13799246835898, 0.12699818960064, 0.088072026605439, 0.080368607537201, 0.092879825880669, 0.046314441591342, -0.0042607712940933, 0.016773315083, 0.028180786898185, 0.0}
All Done.
6. Output from console is:
$ ./LMSAdaptive.exe
Display: {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0}
Display: {-0.0014468536073335, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.0024126897488137, 0.0021300179785668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.00013285397828184#, 0.0040933870447811, -0.0043299388270865, 0.0, 0
.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {0.0038797966606602, 0.0029022454487087, -0.0053557366470163, 0.0022622
551641904, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.00028847297100328#, -0.0010191486773357, -0.0041916842341811, 0.003
2647240825019, -0.0022108064994188, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0}
Display: {-0.00072683239385994#, 0.0029139163779244, -0.0004915641440868, 0.0021
663561092221, -0.0031567087130483, 0.0020860564587171, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.0013203370765909, 0.0031550885988245, -0.0026554187001045, 0.000130
66089384422, -0.0025524195620243, 0.0026064635167626, -0.0011476857638722, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.0026690224904106, 0.0028246307300024, -0.0025211362581008, -0.00107
41531300862, -0.0036858756610559, 0.0029429260768908, -0.00085792797033567#, -0.
00063902072324274#, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.00018216491736483#, 0.0063420719900343, -0.0016592850579717, -0.001
424368678621, -0.00054365842120615#, 0.005899038160788, -0.0017354397157167, -0.
0013947240236251, 0.001666599071153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}
Display: {-0.0031111617770119, 0.013338016843982, 0.0082358634816547, 0.00100016
23977716, -0.001528873131972, 0.014738618990577, 0.0065805962910033, -0.00386331
08240577, -0.00045932027088087#, 0.0046884209702233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.
0}
Display: {-0.010291049943736, 0.0069182228074967, 0.023569620124317, 0.022688412
207804, 0.0037852295766849, 0.012579219090915, 0.025955246048377, 0.014363830044
085, -0.0058699845970531, 2.8817369391274e-05, 0.010276111046701, 0.0, 0.0, 0.0,
0.0, 0.0}
Display: {0.010370446352082, -0.008984843782663, 0.0093501212008513, 0.056651859
451417, 0.051823537826597, 0.024349671120293, 0.021172291272247, 0.0572776384625
15, 0.034502153275196, -0.011955513455553, -4.4660618130536e-05#, 0.022761033942
138, 0.0, 0.0, 0.0, 0.0}
Display: {0.010385638548854, 0.012780555980484, -0.0074026152340624, 0.041672640
4215, 0.087601585844418, 0.074954572528924, 0.033571615606962, 0.052239139737106
, 0.079708762816602, 0.030573629037398, -0.012669290875501, 0.011888843567684, 0
.023977111612845, 0.0, 0.0, 0.0}
Display: {0.027954330710331, 0.012799280256225, 0.019423086993008, 0.02102501051
4306, 0.069139803673479, 0.11905076524012, 0.095941800909816, 0.067521219829341,
0.073498848551295, 0.08629045755651, 0.039747578325324, -0.0036709244906312, 0.
010577213392967, 0.029551621536512, 0.0, 0.0}
Display: {0.01372990613765, 0.029552999481774, 0.019440942690836, 0.046606327496
226, 0.049449971843158, 0.1014453844837, 0.13799246835898, 0.12699818960064, 0.0
88072026605439, 0.080368607537201, 0.092879825880669, 0.046314441591342, -0.0042
607712940933, 0.016773315083, 0.028180786898185, 0.0}
9 [sig] LMSAdaptive 1592 _cygtls::handle_exceptions: Error while dumping s
tate (probably corrupted stack)
Segmentation fault (core dumped)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>394</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-01-28 18:34:56 -0800</bug_when>
<thetext>I fixed a few problems:
When I ran it, a Null Pointer Exception was thrown because wrapup()
in ptolemy.actor.lib.gui.BarGraph was dereferencing the plot variable.
I fixed this to check for null.
Also, the codegenerator was removing graphical classes, so running
ptcg on this model was substituting in a Discard, which was confusing.
Now this issue is that we don&apos;t have a C codegen version of BarGraph.
Implementing one would not be difficult. However, with the changes
I made above, this is more of a feature request than a bug request,
so I changed the title and marked this as an enhancement.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>150</bug_id>
<creation_ts>2008-03-20 12:07:40 -0700</creation_ts>
<short_desc>Renaming ports is too difficult</short_desc>
<delta_ts>2008-03-20 12:07:40 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-wHljU-yqg8u1b_THWw30_jsXmQaD4mLhm-JmhwXupRw</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>238</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-20 12:07:40 -0700</bug_when>
<thetext>Ian Brown writes:
&gt; Renaming ports is too difficult. You need to navigate down 2 levels
&gt; in the menu and select the rename. It should be possible to click on
&gt; the name of the port in the GUI in order to rename it. Alternatively,
&gt; double clicking it brings up the configuration dialog …. if the name
&gt; could be changed from there that would be an alternative solution.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>18</bug_id>
<creation_ts>2006-07-27 14:22:33 -0700</creation_ts>
<short_desc>Multiple containment hierarchies (Look at a model in anyway)</short_desc>
<delta_ts>2006-07-27 14:22:33 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P3</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-pUiIx6obxJyY9vAXPD06Zv_zPQp0wx7AzvoXTvYIOkY</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>30</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 14:22:33 -0700</bug_when>
<thetext>It would be nice if we could have multiple containment hierarchies
so that we can look at a model in any way.
For example, perhaps we would have annotations that would assign
an actor to a particular container. Maybe this could be used to
help view what actors are running on what processor or what parameters
are used by what actors.
More information about exactly what the problem is here would help.
(From the July Rome AFRL Visit)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>10</bug_id>
<creation_ts>2005-02-27 18:11:29 -0800</creation_ts>
<short_desc>Matlab interface fails under Cygwin with gcc 3.3 and later</short_desc>
<delta_ts>2007-05-21 10:07:27 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Matlab</component>
<version>4.1</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>major</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-UPuQnCQm-QmY1bNq5TaBUwU9QGNFZDl7arV0DDrPLP8</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>16</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2005-02-27 18:11:29 -0800</bug_when>
<thetext>The Matlab interface does not work for me under Cygwin with gcc-3.3.3
or gcc-3.4.1. I&apos;m running Matlab6p5.
Under Cygwin, when I run a Matlab demo, Vergil ungracefully exits.
The JNI tests in ptolemy/jni/test fail in a similar fashion for me.
I can run a simple JNI demo that invokes a C function inside Java.
In this simple demo, Ptolemy is not involved.
I suspect C++, since the Matlab interface and the JNI tests use C++.
This has been a long standing failure, our solution was to stick with
gcc-3.2
I&apos;ve tried compiling and linking with various combinations of
-Wl,--add-stdcall-alias
-mno-cygwin
-Wl,--kill-at
A few Cygwin JNI resources:
* http://forum.java.sun.com/thread.jspa?forumID=52&amp;threadID=476416
* http://forum.java.sun.com/thread.jspa?threadID=589317&amp;tstart=75
mentions -kill-at
* http://forum.java.sun.com/thread.jspa?threadID=589317&amp;tstart=75
Problems with JNI and gcc: Hello World application freezes
cygwin
* http://www.inonit.com/cygwin/jni/helloWorld/
Cygwin jni
In April, 2004, Zoltan wrote:
&gt; I apologize for not being more help on the matlab front... Unfortunately,
&gt; we&apos;ve had to put PTII on the backburner here for a while due to other
&gt; pressures...
&gt; I&apos;d just like to let you know that matlab 6.5 doesn&apos;t work for me either on
&gt; Win2K with the latest version of gcc and cygwin. However, I am fairly
&gt; certain that the problem is somehow related to the latest version of gcc
&gt; from cygwin... If you go back to gcc 3.1.1, then everything should work
&gt; fine (we&apos;ve used it successfully here with matlab 6.5 up to around new
&gt; year&apos;s).
&gt; There is probably a change somewhere in how to build the dll &quot;properly&quot; with
&gt; the latest gcc / or there is a bug in building dlls with it. I haven&apos;t had
&gt; time to look into it yet... :-(
_Christopher</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>17</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2005-03-15 14:37:41 -0800</bug_when>
<thetext>I poked around at this and it seems like the problem is with gcc-3.3.3 and
gcc-3.4 under Cygwin. Basically, starting up the Matlab interface exits
Vergil.
My workaround is to use Microsoft Visual C++. This has the added
advantage of making HyVisual much more likely to work on machines
that do not have Cygwin installed.
I hacked up configure to make this work properly.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>59</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 16:49:06 -0700</bug_when>
<thetext>JNI works now, except the launcher program fails for Edward, perhaps
because he is not in the domain. The problem is the launcher
cannot successfully query the registry.
The next step is to try working with his clone machine.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>70</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-10-11 19:41:00 -0700</bug_when>
<thetext>I modified the launcher program so that if it can&apos;t open the
registry, it uses the value found by configure.
I think there are still problems with the matlab interface, I&apos;ve
seen it exit on me.
Under Cygwin, the Matlab interface is more robust if it is run with
$PTII/bin/vergil -jni
because that uses the launcher program.
So, this bug stays open, though I&apos;m dropping the priority.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>109</commentid>
<comment_count>4</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-05-21 10:07:27 -0700</bug_when>
<thetext>The Matlab interface works fine under Windows with gcc-3.4.4 and JDK 1.6.
</thetext>
</long_desc>
</bug>
<bug>
<bug_id>348</bug_id>
<creation_ts>2010-05-17 08:13:10 -0700</creation_ts>
<short_desc>XMLToken parsing problems</short_desc>
<delta_ts>2010-05-17 08:13:10 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>tokens</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>10.00</estimated_time>
<remaining_time>10.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-qAyPkvs-HWkexp31-6b01STuBUu4WhLcHl3n8nmq2VU</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>694</commentid>
<comment_count>0</comment_count>
<attachid>36</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-17 08:13:10 -0700</bug_when>
<thetext>Created attachment 36
StringToXML to Test Problem
A
Const -&gt; StringToXML -&gt; Test
model hangs during run
I modified (hacked) XMLToken so that two XMLTokens are comparable.
If their toString() representations are equal, then they are equal.
(A better test would be to parse both and do the compare, but that would
be a later day).
The attached model hangs
1. $PTII/bin/vergil StringToXML.xml &amp;
2. run the model
3. &quot;kill -3 %1&quot;, I get:
&quot;StringToXML&quot; prio=1 tid=0x0102f3e0 nid=0x98b400 runnable [0xb0f32000..0xb0f33d90]
at java.lang.Throwable.fillInStackTrace(Native Method)
at java.lang.Throwable.&lt;init&gt;(Throwable.java:196)
at java.lang.Exception.&lt;init&gt;(Exception.java:41)
at ptolemy.data.expr.ParseException.&lt;init&gt;(ParseException.java:59)
at ptolemy.data.expr.PtParser.generateParseException(PtParser.java:3962)
at ptolemy.data.expr.PtParser.jj_consume_token(PtParser.java:3809)
at ptolemy.data.expr.PtParser.unary(PtParser.java:1674)
at ptolemy.data.expr.PtParser.power(PtParser.java:1207)
at ptolemy.data.expr.PtParser.term(PtParser.java:1461)
at ptolemy.data.expr.PtParser.sum(PtParser.java:1396)
at ptolemy.data.expr.PtParser.shift(PtParser.java:1330)
at ptolemy.data.expr.PtParser.relational(PtParser.java:1260)
at ptolemy.data.expr.PtParser.logicalEquals(PtParser.java:1145)
at ptolemy.data.expr.PtParser.bitwiseAnd(PtParser.java:1091)
at ptolemy.data.expr.PtParser.bitwiseXor(PtParser.java:1038)
at ptolemy.data.expr.PtParser.bitwiseOr(PtParser.java:985)
at ptolemy.data.expr.PtParser.logicalAnd(PtParser.java:932)
at ptolemy.data.expr.PtParser.logicalOr(PtParser.java:879)
at ptolemy.data.expr.PtParser.funcIf(PtParser.java:828)
at ptolemy.data.expr.PtParser.arrayConstruct(PtParser.java:2845)
at ptolemy.data.expr.PtParser.primaryElement(PtParser.java:2223)
at ptolemy.data.expr.PtParser.element(PtParser.java:1730)
at ptolemy.data.expr.PtParser.unary(PtParser.java:1670)
at ptolemy.data.expr.PtParser.power(PtParser.java:1207)
at ptolemy.data.expr.PtParser.term(PtParser.java:1461)
at ptolemy.data.expr.PtParser.sum(PtParser.java:1396)
at ptolemy.data.expr.PtParser.shift(PtParser.java:1330)
at ptolemy.data.expr.PtParser.relational(PtParser.java:1260)
at ptolemy.data.expr.PtParser.logicalEquals(PtParser.java:1145)
at ptolemy.data.expr.PtParser.bitwiseAnd(PtParser.java:1091)
at ptolemy.data.expr.PtParser.bitwiseXor(PtParser.java:1038)
at ptolemy.data.expr.PtParser.bitwiseOr(PtParser.java:985)
at ptolemy.data.expr.PtParser.logicalAnd(PtParser.java:932)
at ptolemy.data.expr.PtParser.logicalOr(PtParser.java:879)
at ptolemy.data.expr.PtParser.funcIf(PtParser.java:828)
at ptolemy.data.expr.PtParser.expression(PtParser.java:815)
at ptolemy.data.expr.PtParser.start(PtParser.java:768)
at ptolemy.data.expr.PtParser.generateParseTree(PtParser.java:180)
at ptolemy.data.expr.Variable._parseIfNecessary(Variable.java:1706)
at ptolemy.data.expr.Variable._evaluate(Variable.java:1634)
at ptolemy.data.expr.Variable.getType(Variable.java:602)
at ptolemy.data.expr.Variable$TypeTerm.getValue(Variable.java:2375)
at ptolemy.graph.Inequality.isSatisfied(Inequality.java:130)
at ptolemy.graph.InequalitySolver._solve(InequalitySolver.java:490)
at ptolemy.graph.InequalitySolver.solveLeast(InequalitySolver.java:217)
at ptolemy.actor.TypedCompositeActor.resolveTypes(TypedCompositeActor.java:267)
at ptolemy.actor.Manager.resolveTypes(Manager.java:1111)
at ptolemy.actor.Manager.preinitializeAndResolveTypes(Manager.java:993)
- locked &lt;0x0a7865d0&gt; (a ptolemy.actor.Manager)
at ptolemy.actor.Manager.initialize(Manager.java:643)
- locked &lt;0x0a7865d0&gt; (a ptolemy.actor.Manager)
at ptolemy.actor.Manager.execute(Manager.java:340)
at ptolemy.actor.Manager.run(Manager.java:1162)
at ptolemy.actor.Manager$3.run(Manager.java:1215)
I think this might be because we are not correctly parsing the XMLToken?
In the model, the Constant has the value as a double quoted string:
&lt;entity name=&quot;Const&quot; class=&quot;ptolemy.actor.lib.Const&quot;&gt;
&lt;property name=&quot;value&quot; class=&quot;ptolemy.data.expr.Parameter&quot; value=&quot;&amp;quot;&amp;lt;?xml version=&apos;1.0&apos; encoding=&apos;UTF-8&apos;?&amp;gt;&amp;#10; &amp;lt;Actors&amp;gt;&amp;#10; &amp;lt;Actor&amp;gt; &amp;lt;name&amp;gt;Const&amp;lt;/name&amp;gt;&amp;#10; &amp;lt;class&amp;gt;ptolemy.actor.lib.Const&amp;lt;/class&amp;gt;&amp;#10; &amp;lt;/Actor&amp;gt;&amp;#10; &amp;lt;/Actors&amp;gt;&amp;quot;&quot;&gt;
In the Test actor, the value is not double quoted, which seems right:
&lt;entity name=&quot;Test&quot; class=&quot;ptolemy.actor.lib.Test&quot;&gt;
&lt;property name=&quot;correctValues&quot; class=&quot;ptolemy.data.expr.Parameter&quot; value=&quot;{&amp;lt;?xml version=&apos;1.0&apos; encoding=&apos;UTF-8&apos;?&amp;gt;&amp;#10; &amp;lt;Actors&amp;gt;&amp;#10; &amp;lt;Actor&amp;gt; &amp;lt;name&amp;gt;Const&amp;lt;/name&amp;gt;&amp;#10; &amp;lt;class&amp;gt;ptolemy.actor.lib.Const&amp;lt;/class&amp;gt;&amp;#10; &amp;lt;/Actor&amp;gt;&amp;#10; &amp;lt;/Actors&amp;gt;}&quot;&gt;
However, how will the parser know that this is an XMLToken?</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>36</attachid>
<date>2010-05-17 08:13:10 -0700</date>
<delta_ts>2010-05-17 08:13:10 -0700</delta_ts>
<desc>StringToXML to Test Problem</desc>
<filename>StringToXML.xml</filename>
<type>text/xml</type>
<size>6518</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340164-C-GHm8uRZNsLWrbCx4_nx6P4qKwZMNmw3M4HxBv45Pc</token>
</attachment>
</bug>
<bug>
<bug_id>157</bug_id>
<creation_ts>2008-03-21 00:01:47 -0700</creation_ts>
<short_desc>Nightly build code coverage does not handle Java Generics</short_desc>
<delta_ts>2012-06-29 08:48:04 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>build system</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-aQPv_RU_9BXvATS8VExtbnPpdAoGcB2BbxMJ_b9qbg0</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>249</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-21 00:01:47 -0700</bug_when>
<thetext>The code coverage tool that we are using is very old and fails to parse
Java Generics (http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html).
We should use a different code coverage tool.
We should probably move to a more standard nightly build tool as well.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>970</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-06-29 08:48:04 -0700</bug_when>
<thetext>Fixed. We are now using Cobertura for the nightly builds.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>223</bug_id>
<creation_ts>2008-12-08 20:39:58 -0800</creation_ts>
<short_desc>Fix Eclipse Generics Warnings</short_desc>
<delta_ts>2009-04-06 19:03:01 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>kernel</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P4</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>120.00</estimated_time>
<remaining_time>120.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-81PdArxi1uD2leJKq7QOlYNXg2f8KdbCdz_o8DTDRrc</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>376</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-12-08 20:39:58 -0800</bug_when>
<thetext>Eclipse yields many thousands of warnings about Generics.
We should address these, starting in the kernel and working our way out.
Currently, the Ptolemy Eclipse installation instructions say to disable
the Generics warnings and the Serialization warnings. Not everyone
does the disabling, which tends to hide new warnings in new code.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>224</bug_id>
<creation_ts>2008-12-08 20:43:18 -0800</creation_ts>
<short_desc>Check for memory leaks</short_desc>
<delta_ts>2009-04-06 19:03:26 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>kernel</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P4</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-nsziVQ8qeiwa0x4LenGF0I4bQdBSD4VoQHOKFg-HnoE</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>377</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-12-08 20:43:18 -0800</bug_when>
<thetext>We should check for memory leaks in both Vergil and the non-graphical
clients.
One easy test is to instantiate a model and then set the container
to null. All the memory should be freed, right?
Doing the same thing with running the model would also be interesting.
We might not be able to get rid of all the leaks, but getting a handle
on the severity of the issue would be good.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>197</bug_id>
<creation_ts>2008-09-19 14:11:40 -0700</creation_ts>
<short_desc>SR ReflexGame demo does generate output</short_desc>
<delta_ts>2008-09-19 14:11:40 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>SR</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>3.00</estimated_time>
<remaining_time>3.00</remaining_time>
<actual_time>0.00</actual_time>
<deadline>2009-03-01</deadline>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-113eNhRFYVk-nmyFMZ1nyUGGRC1DnPAzqxY1XNuWv-g</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>320</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-19 14:11:40 -0700</bug_when>
<thetext>The Synchronous/Reactive Reflex Game demo at
$PTII/ptolemy/domains/sr/demo/ReflexGame/ReflexGame.xml
does not produce output after the button is pressed.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>167</bug_id>
<creation_ts>2008-09-11 14:26:08 -0700</creation_ts>
<short_desc>Create Hierarchy fails if directly connected to an output port</short_desc>
<delta_ts>2008-09-22 07:56:03 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-osQsPLlDCRKq3OiulZdE0ltyKJG-Zot7yteWymXcbzU</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>276</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-11 14:26:08 -0700</bug_when>
<thetext>If the user selects an actor and the wire to an output port, and
then does create hiearchy, an error occurs.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>324</commentid>
<comment_count>1</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-22 07:56:03 -0700</bug_when>
<thetext>This is for any port, not specific for output ports</thetext>
</long_desc>
</bug>
<bug>
<bug_id>168</bug_id>
<creation_ts>2008-09-11 14:42:08 -0700</creation_ts>
<short_desc>EventButton actor puts button in upper left corner</short_desc>
<delta_ts>2008-09-11 14:42:08 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-9iumDahR32BFGlBEhMJaRBN4qyEDmyoioPVcrIRb2hU</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>277</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-11 14:42:08 -0700</bug_when>
<thetext>The EventButton actor puts its button in the upper right.
The problem is that the EventButton appears in the upper left.
To instantiate an EventButton, do Graph -&gt; InstantiateEntity
ptolemy.domains.de.lib.EventButton
It should be more configurable so we can have
multiple buttons.
Also, the current type is Token, perhaps this can
be configured as well.
See $PTII/ptolemy/domains/de/lib/test/EventButtonTest.xml</thetext>
</long_desc>
</bug>
<bug>
<bug_id>286</bug_id>
<creation_ts>2009-07-20 18:13:59 -0700</creation_ts>
<short_desc>JavaCC 4.1 and 4.2 fail because of ReInit() problems</short_desc>
<delta_ts>2009-07-20 18:13:59 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Parameters</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>minor</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>3.00</estimated_time>
<remaining_time>3.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-XVvfHZbubXZhNFWwjc7SW_E6yLE1dU2vqf_Nnxv9yDg</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>565</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-07-20 18:13:59 -0700</bug_when>
<thetext>JavaCC-4.1 and 4.2 fail
Tests in data/expr/test/FileParameter.tcl fails with:
java.lang.Error:
ERROR: Second call to the constructor of a static SimpleCharStream.
You must either use ReInit() or set the JavaCC option STATIC to false
during the generation of this class.
at ptolemy.data.expr.SimpleCharStream.&lt;init&gt;(SimpleCharStream.java:283)
at ptolemy.data.expr.SimpleCharStream.&lt;init&gt;(SimpleCharStream.java:300)
at ptolemy.data.expr.PtParser.&lt;init&gt;(PtParser.java:2971)
However, JavaCC-4.0 does work.
I looked at this awhile ago and setting the JavaCC option STATIC
did not solve the problem.
We use JavaCC in ptolemy/data/expr for PtParser.jjt and MatrixParser.jjt
We also use it in moml/unit for Units.jjt
It would be nice to review this and fix it sometime.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>8</bug_id>
<creation_ts>2004-12-23 15:44:35 -0800</creation_ts>
<short_desc>Exec actor needs refactoring and other work.</short_desc>
<delta_ts>2006-05-08 14:03:38 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>4.1</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>ASSIGNED</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>minor</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-sWE7hFdu50InntwVPKsEvX4GCjA1_KhvxDJovoe8pjU</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>12</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2004-12-23 15:44:35 -0800</bug_when>
<thetext>actor.lib.Exec, actor.lib.security.KeyStoreActor and gui.JTextAreaExec
all have duplicated code. A refactoring might help here.
Also, Kepler has some exec actors we should look at.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>13</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2004-12-23 15:48:38 -0800</bug_when>
<thetext>See also
http://chess.eecs.berkeley.edu/ptolemy/listinfo/ptolemy/2004-February/006929.html
which describes some of the limitations of the current Exec actor</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>14</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2004-12-23 16:25:22 -0800</bug_when>
<thetext>Subject: Re: Exec actor needs refactoring and other work.
In addition, Tobin Fricke has the following essay about uses of the
Exec actor:
http://www.livejournal.com/users/nibot_lab/30408.html
_Christopher
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>23</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-05-08 14:03:38 -0700</bug_when>
<thetext>The exec actor has need some rework for awhile.
See the Kepler exec actor and Tobin Fricke&apos;s
Ode to the Exec actor
http://nibot-lab.livejournal.com/30408.html</thetext>
</long_desc>
</bug>
<bug>
<bug_id>199</bug_id>
<creation_ts>2008-09-20 14:50:41 -0700</creation_ts>
<short_desc>Create hierarchy fails if a (input|output|input/output) port is within the selection</short_desc>
<delta_ts>2008-09-27 15:48:01 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>minor</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-qCudTxU28M99cdEYoF4UDU-ojA_9rarUSLH2c4kj5-w</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>323</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-20 14:50:41 -0700</bug_when>
<thetext>You get an error message when you try to do this.
However semantics are not very clear in this case: to be discussed with EAL and CXH to determine what to do in this case.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>333</commentid>
<comment_count>1</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-27 15:48:01 -0700</bug_when>
<thetext>We skipped the selection of ports in composite actors since these should remain in the already existing composite actor. When the wire has been selected the port will be correctly duplicated.
</thetext>
</long_desc>
</bug>
<bug>
<bug_id>347</bug_id>
<creation_ts>2010-05-17 08:05:17 -0700</creation_ts>
<short_desc>Layout cannot be run a second time on a GT model</short_desc>
<delta_ts>2012-06-29 08:32:46 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>minor</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>huining.feng@gmail.com</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-_TRfd0OkucjXyAnSOsYjzxY6OLOa91_wWuiKPMbRa7Y</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>693</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-17 08:05:17 -0700</bug_when>
<thetext>1. cd $PTII/ptolemy/actor/gt/demo/DiningPhilosophers
2. vergil DiningPhilosophers.xml
3. run the model
4. do layout on the result
5. try to do layout again on the result.
The problem is that findEffigy() is returning a KeilerLayoutGUI instead
of the ActorGraphFrame.
The workaround is to save the model. I added a better error message
that says to save the model.
The problem appears to be associated with gt and ModelView. If I create
a model by hand and don&apos;t save it, then layout works fine.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>695</commentid>
<comment_count>1</comment_count>
<who name="Thomas Huining Feng">huining.feng@gmail.com</who>
<bug_when>2010-05-18 22:21:34 -0700</bug_when>
<thetext>Fixed. Originally I reset MoML parser every time AFTER cleaning up model in the View event. The bug disappears when I change the code to reset MoML parser every time BEFORE cleaning up model. Reason unclear.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>696</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-19 09:16:33 -0700</bug_when>
<thetext>Hmm, this bug still occurs for me:
1. cd $PTII/ptolemy/actor/gt/demo/DiningPhilosophers
2. vergil DiningPhilosophers.xml
3. run the model
4. do layout on the resulting model
5. try to do layout again on the resulting model
The stack trace below appears:
ptolemy.kernel.util.InternalErrorException: For now only actor oriented graphs with ports are supported by KIELER layout. Internal Error: findEffigy() returned a KielerLayoutGUI, please save the model before running the layout mechanism.
in .DiningPhilosophers
at ptolemy.vergil.basic.layout.KielerLayoutGUI$BaseLayoutAction.actionPerformed(KielerLayoutGUI.java:255)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1882)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2202)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
at java.awt.Component.processMouseEvent(Component.java:5602)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3129)
at java.awt.Component.processEvent(Component.java:5367)
at java.awt.Container.processEvent(Container.java:2010)
at java.awt.Component.dispatchEventImpl(Component.java:4068)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4256)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3936)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3866)
at java.awt.Container.dispatchEventImpl(Container.java:2054)
at java.awt.Window.dispatchEventImpl(Window.java:1801)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>967</commentid>
<comment_count>3</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-06-29 08:32:46 -0700</bug_when>
<thetext>This is fixed, I can run layout more than once in a model generated by GT.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>11</bug_id>
<creation_ts>2005-04-28 09:36:33 -0700</creation_ts>
<short_desc>DE EventButton and SR ButtonTime have duplicate code</short_desc>
<delta_ts>2005-04-28 09:36:33 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>5.0-beta</version>
<rep_platform>PC</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>trivial</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-cnEnSjbOxBif8VSdG9FEowPsOdQcnLiLB0F_0e5Yl4M</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>18</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2005-04-28 09:36:33 -0700</bug_when>
<thetext>Haiyang pointed out the following issue:
* DE EventButton and SR ButtonTime are the same actor?
DE EventButton says:
// FIXME: This actor is almost identitcal to the SR ButtonTime actor.
// There is no need to have a copy here. An alternative design is to
// put one of them into actor.lib direcory.
EventButton is used in actor/lib/net/demo/Datagram/Datagram.xml
To see the button, you must run with a Run Control Panel. Hitting
the Run button in the graph editor will not display the button.
SR ButtonTime is used in sr/demo/ReflexGame/ReflexGame.xml
I commented DE EventButton out of the configuration</thetext>
</long_desc>
</bug>
<bug>
<bug_id>299</bug_id>
<creation_ts>2009-07-22 11:52:54 -0700</creation_ts>
<short_desc>Check java files for broken &lt;pre&gt; ... &lt;/pre&gt; html</short_desc>
<delta_ts>2009-08-05 17:36:54 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>build system</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>trivial</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-ZHIkzItNoIQGNHs65oKV0Kv1Bg2s1AxD1j_WlN0xZ6E</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>581</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-07-22 11:52:54 -0700</bug_when>
<thetext>Edward A. Lee wrote:
&gt;
&gt; Christopher:
&gt;
&gt; The class document for continuous.Integrator, which includes
&gt; a &lt;pre&gt;...&lt;/pre&gt; block is messed up. Probably due to auto formatting ??
&gt;
&gt; Edward
&gt;
Hi Edward,
Good point, I&apos;ll be sure to not format block comments in the future.
I updated the eclipse.htm page.
Unfortunately, there are 238 files that have &lt;pre&gt; in the comments.
Not all of these are messed up, but we should probably take a look.
./com/jgoodies/forms/builder/ButtonBarBuilder.java
./com/jgoodies/forms/builder/ButtonStackBuilder.java
./com/jgoodies/forms/builder/DefaultFormBuilder.java
./com/jgoodies/forms/builder/I15dPanelBuilder.java
./com/jgoodies/forms/builder/PanelBuilder.java
./com/jgoodies/forms/debug/FormDebugUtils.java
./com/jgoodies/forms/factories/Borders.java
./com/jgoodies/forms/factories/ComponentFactory.java
./com/jgoodies/forms/factories/DefaultComponentFactory.java
./com/jgoodies/forms/factories/FormFactory.java
./com/jgoodies/forms/layout/CellConstraints.java
./com/jgoodies/forms/layout/ColumnSpec.java
./com/jgoodies/forms/layout/ConstantSize.java
./com/jgoodies/forms/layout/FormLayout.java
./com/jgoodies/forms/layout/RowSpec.java
./diva/canvas/interactor/SelectionInteractor.java
./diva/canvas/tutorial/ArcTutorial.java
./diva/canvas/tutorial/CompositeFigureTutorial.java
./diva/canvas/tutorial/ConnectorTutorial.java
./diva/canvas/tutorial/DragTutorial.java
./diva/canvas/tutorial/FigureTutorial.java
./diva/canvas/tutorial/SimpleTutorial.java
./diva/canvas/tutorial/TransformedFigureTutorial.java
./diva/graph/layout/GridAnnealingLayout.java
./diva/graph/layout/LevelLayout.java
./diva/resource/RelativeBundle.java
./diva/util/jester/TestSuite.java
./diva/util/xml/AbstractXmlBuilder.java
./diva/util/xml/XmlBuilder.java
./doc/coding/tcljava.htm
./doc/doccheck/diva/util/java2d/PaintedList.html
./doc/doccheck/diva/util/java2d/PaintedPath.html
./doc/doccheck/diva/util/java2d/PaintedShape.html
./doc/doccheck/diva/util/java2d/PaintedString.html
./doc/doccheck/diva/util/java2d/Polygon2D.html
./doc/doccheck/diva/util/java2d/PolygonIterator.html
./doc/doccheck/diva/util/java2d/Polyline2D.html
./doc/doccheck/diva/util/java2d/PolylineIterator.html
./doc/doccheck/diva/util/java2d/ShapeUtilities.html
./jni/JNIUtilities.java
./ptolemy/actor/Director.java
./ptolemy/actor/gt/gui/GTGUIAction.java
./ptolemy/actor/gui/BrowserLauncher.java
./ptolemy/actor/gui/CompositeActorApplication.java
./ptolemy/actor/gui/CompositeActorSimpleApplication.java
./ptolemy/actor/gui/Configuration.java
./ptolemy/actor/gui/GenerateCopyrights.java
./ptolemy/actor/gui/HTMLViewer.java
./ptolemy/actor/gui/jnlp/MenuApplication.java
./ptolemy/actor/gui/MoMLApplication.java
./ptolemy/actor/gui/MoMLSimpleApplication.java
./ptolemy/actor/gui/MoMLSimpleStatisticalApplication.java
./ptolemy/actor/gui/properties/ActionGUIProperty.java
./ptolemy/actor/gui/properties/GUIAction.java
./ptolemy/actor/gui/PtExecuteApplication.java
./ptolemy/actor/gui/PtolemyFrame.java
./ptolemy/actor/gui/TableauFrame.java
./ptolemy/actor/gui/test/Rerun.java
./ptolemy/actor/gui/WelcomeWindow.java
./ptolemy/actor/IOPort.java
./ptolemy/actor/LazyTypedCompositeActor.java
./ptolemy/actor/lib/ArrayElementAsMatrix.java
./ptolemy/actor/lib/colt/ColtBeta.java
./ptolemy/actor/lib/colt/ColtBinomial.java
./ptolemy/actor/lib/colt/ColtExponential.java
./ptolemy/actor/lib/colt/ColtNegativeBinomial.java
./ptolemy/actor/lib/comm/ConvolutionalCoder.java
./ptolemy/actor/lib/comm/Scrambler.java
./ptolemy/actor/lib/database/DatabaseManager.java
./ptolemy/actor/lib/Exec.java
./ptolemy/actor/lib/Expression.java
./ptolemy/actor/lib/hoc/ApplyFunctionOverSequence.java
./ptolemy/actor/lib/io/DirectoryListing.java
./ptolemy/actor/lib/jai/JAIAffineTransform.java
./ptolemy/actor/lib/jai/JAIBandCombine.java
./ptolemy/actor/lib/joystick/Joystick.java
./ptolemy/actor/lib/jxta/demo/corba/NonlinearServant.java
./ptolemy/actor/lib/Lattice.java
./ptolemy/actor/lib/LinearDifferenceEquationSystem.java
./ptolemy/actor/lib/MonitorValue.java
./ptolemy/actor/lib/net/DatagramReader.java
./ptolemy/actor/lib/NonStrictTest.java
./ptolemy/actor/lib/python/PythonScript.java
./ptolemy/actor/lib/RecursiveLattice.java
./ptolemy/actor/lib/security/KeyStoreActor.java
./ptolemy/actor/lib/SubMatrix.java
./ptolemy/actor/lib/Test.java
./ptolemy/actor/lib/TestExceptionHandler.java
./ptolemy/actor/lib/x10/X10Interface.java
./ptolemy/actor/lib/xslt/XMLInclusion.java
./ptolemy/actor/parameters/FilePortParameter.java
./ptolemy/actor/parameters/ParameterSet.java
./ptolemy/actor/ptalon/PtalonEvaluator.java
./ptolemy/actor/sched/Schedule.java
./ptolemy/actor/TypeAttribute.java
./ptolemy/actor/TypedCompositeActor.java
./ptolemy/actor/TypedIOPort.java
./ptolemy/actor/util/ActorTypeUtil.java
./ptolemy/backtrack/automatic/ptolemy/actor/lib/LinearDifferenceEquationSystem.java
./ptolemy/backtrack/automatic/ptolemy/actor/lib/RecursiveLattice.java
./ptolemy/backtrack/automatic/ptolemy/domains/sdf/lib/Autocorrelation.java
./ptolemy/backtrack/automatic/ptolemy/domains/sdf/lib/Chop.java
./ptolemy/backtrack/eclipse/ast/LocalClassLoader.java
./ptolemy/backtrack/util/FieldRecord.java
./ptolemy/backtrack/util/java/util/AbstractList.java
./ptolemy/backtrack/util/java/util/AbstractMap.java
./ptolemy/backtrack/util/java/util/Collections.java
./ptolemy/backtrack/util/java/util/LinkedHashMap.java
./ptolemy/backtrack/util/java/util/List.java
./ptolemy/backtrack/util/java/util/Map.java
./ptolemy/backtrack/util/java/util/Random.java
./ptolemy/cg/kernel/generic/CodeGeneratorAdapter.java
./ptolemy/cg/kernel/generic/GenericCodeGenerator.java
./ptolemy/cg/kernel/generic/html/HTMLCodeGeneratorAdapter.java
./ptolemy/cg/kernel/generic/program/CodeStream.java
./ptolemy/cg/kernel/generic/program/procedural/c/CCodeGenerator.java
./ptolemy/cg/kernel/generic/program/procedural/c/CParseTreeCodeGenerator.java
./ptolemy/cg/kernel/generic/program/procedural/java/JavaCodeGenerator.java
./ptolemy/cg/kernel/generic/program/procedural/java/JavaParseTreeCodeGenerator.java
./ptolemy/cg/kernel/generic/program/ProgramCodeGeneratorAdapter.java
./ptolemy/cg/kernel/generic/program/ProgramCodeGeneratorAdapterStrategy.java
./ptolemy/chic/ChicAttribute.java
./ptolemy/codegen/c/kernel/CCodeGenerator.java
./ptolemy/codegen/c/kernel/CParseTreeCodeGenerator.java
./ptolemy/codegen/java/kernel/JavaCodeGenerator.java
./ptolemy/codegen/java/kernel/JavaParseTreeCodeGenerator.java
./ptolemy/codegen/kernel/CodeGenerator.java
./ptolemy/codegen/kernel/CodeGeneratorHelper.java
./ptolemy/codegen/kernel/CodeStream.java
./ptolemy/codegen/vhdl/kernel/VHDLParseTreeCodeGenerator.java
./ptolemy/copernicus/applet/AppletWriter.java
./ptolemy/copernicus/applet/JarSigner.java
./ptolemy/copernicus/interpreted/InterpretedWriter.java
./ptolemy/copernicus/kernel/ClassWriter.java
./ptolemy/copernicus/kernel/Copernicus.java
./ptolemy/copernicus/kernel/GeneratorAttribute.java
./ptolemy/copernicus/kernel/MakefileWriter.java
./ptolemy/copernicus/kernel/WatchDogTimer.java
./ptolemy/data/#MatrixToken.java#
./ptolemy/data/expr/ASTPtFunctionDefinitionNode.java
./ptolemy/data/expr/ConversionUtilities.java
./ptolemy/data/expr/FileParameter.java
./ptolemy/data/expr/FixPointFunctions.java
./ptolemy/data/expr/StringParameter.java
./ptolemy/data/expr/Token.java
./ptolemy/data/expr/Variable.java
./ptolemy/data/MatrixToken.java
./ptolemy/data/type/ArrayType.java
./ptolemy/data/type/BaseType.java
./ptolemy/data/type/ObjectType.java
./ptolemy/data/type/RecordType.java
./ptolemy/domains/continuous/kernel/ContinuousIntegrator.java
./ptolemy/domains/continuous/kernel/solver/ExplicitRK23Solver.java
./ptolemy/domains/continuous/kernel/solver/ExplicitRK45Solver.java
./ptolemy/domains/continuous/lib/DifferentialSystem.java
./ptolemy/domains/continuous/lib/Integrator.java
./ptolemy/domains/csp/demo/DiningPhilosophers/checkDeadlock/Check.java
./ptolemy/domains/ct/demo/Corba/NonlinearServant.java
./ptolemy/domains/ct/demo/Helicopter/ControllerActor.java
./ptolemy/domains/ct/demo/Helicopter/HelicopterActor.java
./ptolemy/domains/ct/demo/Lorenz/Lorenz.java
./ptolemy/domains/ct/demo/Thermostat/Thermostat.java
./ptolemy/domains/ct/kernel/CTBaseIntegrator.java
./ptolemy/domains/ct/kernel/CTSchedule.java
./ptolemy/domains/ct/kernel/CTScheduler.java
./ptolemy/domains/ct/kernel/solver/BackwardEulerSolver.java
./ptolemy/domains/ct/kernel/solver/DerivativeResolver.java
./ptolemy/domains/ct/kernel/solver/ExplicitRK23Solver.java
./ptolemy/domains/ct/kernel/solver/ExplicitRK45Solver.java
./ptolemy/domains/ct/kernel/solver/ForwardEulerSolver.java
./ptolemy/domains/ct/kernel/solver/TrapezoidalRuleSolver.java
./ptolemy/domains/ct/lib/ContinuousTransferFunction.java
./ptolemy/domains/ct/lib/CTRateLimiter.java
./ptolemy/domains/ct/lib/DifferentialSystem.java
./ptolemy/domains/ct/lib/Integrator.java
./ptolemy/domains/ct/lib/LinearStateSpace.java
./ptolemy/domains/ddf/kernel/DDFDirector.java
./ptolemy/domains/dt/kernel/DTDirector.java
./ptolemy/domains/fsm/kernel/AbstractActionsAttribute.java
./ptolemy/domains/fsm/kernel/CommitActionsAttribute.java
./ptolemy/domains/fsm/kernel/ia/InterfaceAutomaton.java
./ptolemy/domains/fsm/kernel/OutputActionsAttribute.java
./ptolemy/domains/fsm/kernel/RelationList.java
./ptolemy/domains/fsm/kernel/RelationType.java
./ptolemy/domains/fsm/kernel/test/AlternatingSimulation.java
./ptolemy/domains/fsm/kernel/test/CombineInternalTransitions.java
./ptolemy/domains/fsm/kernel/test/Compose.java
./ptolemy/domains/fsm/kernel/test/DeadlockStates.java
./ptolemy/domains/fsm/kernel/test/GetInfo.java
./ptolemy/domains/fsm/kernel/test/Project.java
./ptolemy/domains/fsm/kernel/Transition.java
./ptolemy/domains/giotto/kernel/GiottoScheduler.java
./ptolemy/domains/gr/lib/experimental/VrmlLoad.java
./ptolemy/domains/gr/lib/java3d-copyright.htm
./ptolemy/domains/modal/kernel/AbstractActionsAttribute.java
./ptolemy/domains/modal/kernel/CommitActionsAttribute.java
./ptolemy/domains/modal/kernel/ia/InterfaceAutomaton.java
./ptolemy/domains/modal/kernel/OutputActionsAttribute.java
./ptolemy/domains/modal/kernel/RelationList.java
./ptolemy/domains/modal/kernel/RelationType.java
./ptolemy/domains/modal/kernel/test/AlternatingSimulation.java
./ptolemy/domains/modal/kernel/test/CombineInternalTransitions.java
./ptolemy/domains/modal/kernel/test/Compose.java
./ptolemy/domains/modal/kernel/test/DeadlockStates.java
./ptolemy/domains/modal/kernel/test/GetInfo.java
./ptolemy/domains/modal/kernel/test/Project.java
./ptolemy/domains/modal/kernel/Transition.java
./ptolemy/domains/ptera/kernel/ParametersAttribute.java
./ptolemy/domains/ptinyos/util/nc2moml/MoMLLib.java
./ptolemy/domains/ptinyos/util/nc2moml/NC2MoML.java
./ptolemy/domains/ptinyos/util/ncapp2moml/NCApp2MoML.java
./ptolemy/domains/sdf/lib/Autocorrelation.java
./ptolemy/domains/sdf/lib/Chop.java
./ptolemy/domains/sdf/lib/LMSAdaptive.java
./ptolemy/domains/sdf/lib/MatrixJoin.java
./ptolemy/domains/sdf/lib/MatrixSplit.java
./ptolemy/domains/sdf/lib/RaisedCosine.java
./ptolemy/domains/sdf/lib/Repeat.java
./ptolemy/domains/sdf/lib/vq/HTVQEncode.java
./ptolemy/domains/tm/kernel/TMEvent.java
./ptolemy/domains/wireless/lib/PowerLossChannel.java
./ptolemy/domains/wireless/lib/TerrainProperty.java
./ptolemy/domains/wireless/lib/Triangulator.java
./ptolemy/graph/Graph.java
./ptolemy/graph/sched/Schedule.java
./ptolemy/gui/demo/FileChooserQuery.java
./ptolemy/gui/GraphicalMessageHandler.java
./ptolemy/gui/JTextAreaExec.java
./ptolemy/gui/PtGUIUtilities.java
./ptolemy/gui/Query.java
./ptolemy/gui/ShellTextArea.java
./ptolemy/gui/Top.java
./ptolemy/gui/UndeferredGraphicalMessageHandler.java
./ptolemy/hsif/HSIFUtilities.java
./ptolemy/kernel/attributes/FileAttribute.java
./ptolemy/kernel/attributes/FileOrURLAccessor.java
./ptolemy/kernel/attributes/VersionAttribute.java
./ptolemy/kernel/InstantiableNamedObj.java
./ptolemy/kernel/util/ConfigurableAttribute.java
./ptolemy/kernel/util/ModelErrorHandler.java
./ptolemy/kernel/util/MoMLExportable.java
./ptolemy/kernel/util/NamedObj.java
./ptolemy/kernel/util/Settable.java
./ptolemy/kernel/util/StringAttribute.java
./ptolemy/kernel/util/Workspace.java
./ptolemy/math/Complex.java
./ptolemy/math/DoubleArrayStat.java
./ptolemy/math/SignalProcessing.java
./ptolemy/matlab/Expression.java
./ptolemy/media/Audio.java
./ptolemy/media/Picture.java
./ptolemy/moml/ConvertToLazy.java
./ptolemy/moml/EntityLibrary.java
./ptolemy/moml/filter/ActorIndex.java
./ptolemy/moml/filter/BackwardCompatibility.java
./ptolemy/moml/filter/ConvertAnnotationToTextAttribute.java
./ptolemy/moml/filter/HideAnnotationNames.java
./ptolemy/moml/filter/MultiportToSinglePort.java
./ptolemy/moml/filter/ParameterNameChanges.java
./ptolemy/moml/filter/PropertyClassChanges.java
./ptolemy/moml/filter/RemoveGraphicalClasses.java
./ptolemy/moml/filter/RemoveProperties.java
./ptolemy/moml/MoMLCommandLineApplication.java
./ptolemy/moml/MoMLFilter.java
./ptolemy/moml/MoMLParser.java
./ptolemy/moml/MoMLSimpleApplication.java
./ptolemy/moml/test/MoMLParserLeak.java
./ptolemy/plot/compat/PxgraphApplication.java
./ptolemy/plot/compat/PxgraphParser.java
./ptolemy/plot/demo/TwoPlotExample.java
./ptolemy/plot/Histogram.java
./ptolemy/plot/Plot.java
./ptolemy/plot/PlotApplication.java
./ptolemy/plot/PlotBox.java
./ptolemy/plot/PlotFrame.java
./ptolemy/plot/plotml/EditablePlotMLApplication.java
./ptolemy/plot/plotml/HistogramMLApplication.java
./ptolemy/plot/plotml/PlotBoxMLParser.java
./ptolemy/plot/plotml/PlotMLApplication.java
./ptolemy/plot/plotml/PlotMLFrame.java
./ptolemy/util/StreamExec.java
./ptolemy/util/StringBufferExec.java
./ptolemy/util/StringUtilities.java
./ptolemy/util/XSLTUtilities.java
./ptolemy/vergil/actor/ActorViewerGraphController.java
./ptolemy/vergil/actor/DocManager.java
./ptolemy/vergil/kernel/attributes/UpdateAnnotations.java
./ptolemy/vergil/kernel/VergilUtilities.java
./ptolemy/vergil/VergilApplication.java</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>593</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-08-05 17:36:54 -0700</bug_when>
<thetext>Fixed!
I updated the following files so that the ASCII art or formulas in the
&lt;pre&gt; ... &lt;/pre&gt; blocks was correct. This was necessary because I
had accidentally formatted the comments.
The files are:
ptolemy/domains/ct/kernel/CTBaseIntegrator.java
ptolemy/domains/ct/kernel/CTScheduler.java
ptolemy/domains/ct/demo/Helicopter/ControllerActor.java
ptolemy/domains/ct/lib/CTRateLimiter.java
ptolemy/domains/sdf/lib/Chop.java
ptolemy/domains/sdf/lib/RaisedCosine.java
ptolemy/domains/sdf/lib/Autocorrelation.java
ptolemy/actor/lib/colt/ColtBeta.java
ptolemy/actor/lib/RecursiveLattice.java
ptolemy/actor/lib/Lattice.java
ptolemy/data/expr/FileParameter.java
To find these files, I created adm/bin/checkpre, which looks for
Java files that have ---- inside a &lt;pre&gt; ... &lt;/pre&gt; block.
This identifies most of the problems.
I also put all the .java files that contain &lt;pre&gt; ...&lt;/pre&gt; into
one file and scanned it by eye.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>138</bug_id>
<creation_ts>2008-03-14 21:59:49 -0700</creation_ts>
<short_desc>Editing Python Scripts is difficult</short_desc>
<delta_ts>2008-03-19 18:08:36 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.0.beta</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>ian.brown@hsbcib.com</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-AAQWq8jvFd7wlFCcadrBOqLedlCe0N3SNNwe07zIkZk</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>218</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-14 21:59:49 -0700</bug_when>
<thetext>Ian Brown said:
&gt; Editing python scripts in the python actor leaves a lot to be desired.
&gt; This is low priority.
ptolemy/actor/gui/TextEffigy.java includes support for editing a
file using emacs if the Java property ptolemy.user.texteditor is set to emacs.
Something similar could be done to ptolemy.actor.gui.TextEditor
so that we invoked an external editor.
The way to run with the property set is:
export JAVAFLAGS=-Dptolemy.user.texteditor=emacs
$PTII/bin/vergil -v ptolemy/actor/lib/python/test/PythonReadFile.xml
However, this does not work because TextEditorTableauFactory does
not use TextEffigy, it uses vergil.toolbox.TextEditorForStringAttributes
which uses TextEditor.
BTW - the way that the Python determines which editor to open is that
actor/lib/python/python.xml includes:
&lt;property name=&quot;_tableauFactory&quot;
class=&quot;ptolemy.vergil.toolbox.TextEditorTableauFactory&quot;&gt;
Also, it is not clear if invoking a separate editor is the right thing.
Emacs has pretty good support for this, but a 100% Java editor might make
more sense.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>224</commentid>
<comment_count>1</comment_count>
<who name="Ian Brown">ian.brown@hsbcib.com</who>
<bug_when>2008-03-17 02:11:29 -0700</bug_when>
<thetext>The issue is with the handling of syntax errors rather than the actual editing itself. Consider a 100 line script with an error on line 65. When you try to close the text effigy, the script will be syntax checked and you will be informed via an exception report that there is an error somewhere in it. This is not really very helpful. A line number report of where the error is and then some feedback in the editor of the current line number would be a minimum requirement.
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>230</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-19 18:08:36 -0700</bug_when>
<thetext>One possibility would be to extend the stack trace display so that it
had a hyperlink that would jump to the appropriate line. We could
encode the line number in the URL.
I&apos;ve often wanted this for Java bugs. It would be nice if this feature
was smart enough to work within Eclipse or other IDEs and jump to the
proper line in the file.
We might have to handle Python stack traces specially.
The hard problem is that give just a Java class name it can be difficult
to map that back to a file.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>154</bug_id>
<creation_ts>2008-03-20 13:23:09 -0700</creation_ts>
<short_desc>Extend &quot;Set Breakpoints&quot; to other domains, allow port inspection</short_desc>
<delta_ts>2008-03-20 13:23:09 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Debugger</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-G94vsxF3LqGHs-kzEhYl2dRNNFW2yAcaFhgiz-uKhaQ</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>244</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-20 13:23:09 -0700</bug_when>
<thetext>Ian Brown writes:
&gt; A Debug / Single Step mode would be useful. Stepping could be in
&gt; terms of individual actor firing, micro step increment or model
&gt; time increment. When paused in debug mode, it should be possible
&gt; to see which ports have tokens on them, and what those tokens are.
There is a debugger, it was originally started by Frederic Boulanger of Supelec and then worked on by Elaine Cheong. The debugger currently only works
in SDF, and is accessible by right clicking on an actor and selecting
&quot;Set Breakpoints&quot;
See also
http://ptolemy.berkeley.edu/ptolemyII/ptIIlatest/ptII/ptolemy/vergil/debugger/package.html
and
http://ptolemy.berkeley.edu/ptolemyII/ptIIlatest/ptII/doc/coding/debugging.htm
There was some internal traffic about extending the debugger to DE at
http://chess.eecs.berkeley.edu/ptolemy/listinfo/ptolemy/2006-December/009724.html
This enhancement has a few parts:
- Extend the debugger to other domains, particularly DE.
In DE the stop time would be model time.
- Allow inspection of data on ports.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>58</bug_id>
<creation_ts>2007-02-01 17:13:09 -0800</creation_ts>
<short_desc>Look for static structs and check access for mutual exclusion</short_desc>
<delta_ts>2009-04-06 18:46:02 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>kernel</component>
<version>6.0.1</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-KkokdaEiRB0uvMrHuzFNHJTH-GwImpna0mCoc-ZJlX0</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>89</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2007-02-01 17:13:09 -0800</bug_when>
<thetext>From the Rome 1/17/07 meeting:
--&gt;Look for all static data structures and make sure that all accesses
exhibit mutual exclusion. Watch for caches.
--&gt;Ray: watch for a singleton with the hashmap inside.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>334</bug_id>
<creation_ts>2010-05-05 08:07:31 -0700</creation_ts>
<short_desc>Refactoring of Publisher channels: optionally update Subscribers with new channel name</short_desc>
<delta_ts>2010-08-23 12:15:12 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>15.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>9.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-Wxr8TBGFxkZ-f-u4wpIEB304AD5ROg9UAOxPW9tNMIQ</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>673</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-05 08:07:31 -0700</bug_when>
<thetext>From the April, 2010 site visit, Warren writes:
&quot;Add in a &quot;refactoring&quot; feature so that if the name of a channel had been changed on a Publisher, the change would automatically be made on all relevant Subscribers.&quot;
One way to do this would be to have a parameter for Publisher that would automatically update the channel parameter in any connected Subscribers if the channel parameter of Publisher changed.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>704</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-08-23 12:15:12 -0700</bug_when>
<work_time>9.0</work_time>
<thetext>Fixed in r58979:
Added Publisher.propagateNameChanges so that if the channel name of a Publisher is changed, then the corresponding Subscriber will be updated if propagateNameChanges is true. Added tests.
actor/lib/Publisher.java
actor/lib/test/PublisherSubscriberChannelChange.xml
actor/lib/test/Publisher.tcl
actor/CompositeActor.java
Below is the documentation for propagateNameChanges
/** If true, then propagate channel name changes to any
* Subscribers. The default value is a BooleanToken with the
* value false, indicating that if the channel name is changed,
* then the channel names of the Subscribers are not changed. If
* the value is true, then if the channel name is changed, the
* channel names of the connected Subscribers are updated.
*
* &lt;p&gt;If the value is true, then SubscriptionAggregators that
* have the same regular expression as the channel name of the
* Publisher will be updated. However, SubscriptionAggregators
* usually have regular expressions as channel names, so usually
* the channel name of the SubscriptionAggregator will &lt;b&gt;not&lt;/b&gt;
* be updated.&lt;/p&gt;
*
* &lt;p&gt;Note that if a Publisher is within an Actor Oriented Class
* definition, then any Subscribers with the same channel name in
* Actor Oriented Class definitions will &lt;b&gt;not&lt;/b&gt; be updated.
* This is because there is no connection between the Publisher
* in the Actor Oriented Class definition and the Subscriber.
* However, if the channel name in a Publisher in an instance of
* an Actor Oriented Class is updated, then the
* corresponding Subscribers in instances of Actor Oriented Class
* will be updated.&lt;/p&gt;
*/
public Parameter propagateNameChanges;</thetext>
</long_desc>
</bug>
<bug>
<bug_id>139</bug_id>
<creation_ts>2008-03-15 15:01:24 -0700</creation_ts>
<short_desc>Convert the Ptolemy II repository from CVS to SVN</short_desc>
<delta_ts>2008-09-18 20:04:58 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>build system</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>ian.brown@hsbcib.com</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>87.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-InJnVo5q4WIw0cq8A3lufqggn5bUZhQ91e52gHBxKP4</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>219</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-15 15:01:24 -0700</bug_when>
<thetext>We should consider converting from CVS to SVN:
- The NAOMI (http://chess.eecs.berkeley.edu/naomi) is using SVN
in the NAOMI client
- SVN is &quot;more better&quot; than CVS. That is, SVN was developed
after CVS and has better support for branches etc.
- Ptolemy should include an interface to the version control system.
If we are converting to SVN, then we should do it sooner rather
than later so that the Ptolemy interface would not require both
CVS and SVN. However, using Eclipse or Netbeans would obviate
the need for this interface.
To convert to SVN we need to:
- Provide explicit instructions on how to use Eclipse with SVN
- Update the nightly build to use SVN
- Convert the CVS repository to SVN and preserve the log files
(there are scripts to do this)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>225</commentid>
<comment_count>1</comment_count>
<who name="Ian Brown">ian.brown@hsbcib.com</who>
<bug_when>2008-03-17 02:15:37 -0700</bug_when>
<thetext>Anon access via http: would be a great advantage of SVN. That would allow me to access the repository via our proxy here and mean that I would not need to continually update and merge manually from snapshots.
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>312</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-17 19:29:54 -0700</bug_when>
<work_time>80.0</work_time>
<thetext>https access is enabled, see http://chess.eecs.berkeley.edu/ptexternal
The remaining problem is that svn does not recognize the CA for our certificate,
though firefox does.
Another issue is that we need a more complete ChangeLog like what we used
to have.
Another issue is that we need to write scripts that will sanity check
the repository for the proper svn:eol-style and svn:keywords settings.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>313</commentid>
<comment_count>3</comment_count>
<attachid>18</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-18 09:53:13 -0700</bug_when>
<thetext>Created attachment 18
Certificate Authority PEM file for source.eecs.berkeley.edu</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>314</commentid>
<comment_count>4</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-18 09:54:01 -0700</bug_when>
<thetext>About the svn certificate problem, it appears that the issue is
that the certificate authority (CA) is not in the openssl database.
http://blogs.dovetailsoftware.com/blogs/kmiller/archive/2007/04/12/subversion-and-certificate-authorties.aspx
Discussion about a similar problem, where the solution is for
each user to either accept the certificate permanently, or set the
ssl-authority-files line in ~/.subversion/servers to:
ssl-authority-files=/Users/cxh/tmp/BuiltinObjectToken:VerisignClass3PublicPrimaryCertificationAuthority
where that file is the CA pem file. To generate the PEM file for the CA:
1) In firefox, go to https://source.eecs.berkeley.edu
2) Click on the lock in the bottom right
3) In the Page Info window, select the Security Tab and then select
View Certificate
4) Select Details and then select the top level CA, which will be something
like VeriSign Class 3 Public Primary CA
5) Export the file as an X.509 PEM file
6) Use that file in ~/.subversion/servers for thev ssl-authority-files value
However, this is just a workaround, and a poor workaround compared to accepting
the certificate permanently.
The real issue is: why doesn&apos;t svn (and presumably openssl) know about this CA?
More info on the CA
bash-3.2$ openssl x509 -text -in
BuiltinObjectToken:VerisignClass3PublicPrimaryCertificationAuthority
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
70:ba:e4:1d:10:d9:29:34:b6:38:ca:7b:03:cc:ba:bf
Signature Algorithm: md2WithRSAEncryption
Issuer: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary Certification
Authority
Validity
Not Before: Jan 29 00:00:00 1996 GMT
Not After : Aug 1 23:59:59 2028 GMT
Subject: C=US, O=VeriSign, Inc., OU=Class 3 Public Primary
Certification Authority
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:c9:5c:59:9e:f2:1b:8a:01:14:b4:10:df:04:40:
db:e3:57:af:6a:45:40:8f:84:0c:0b:d1:33:d9:d9:
11:cf:ee:02:58:1f:25:f7:2a:a8:44:05:aa:ec:03:
1f:78:7f:9e:93:b9:9a:00:aa:23:7d:d6:ac:85:a2:
63:45:c7:72:27:cc:f4:4c:c6:75:71:d2:39:ef:4f:
42:f0:75:df:0a:90:c6:8e:20:6f:98:0f:f8:ac:23:
5f:70:29:36:a4:c9:86:e7:b1:9a:20:cb:53:a5:85:
e7:3d:be:7d:9a:fe:24:45:33:dc:76:15:ed:0f:a2:
71:64:4c:65:2e:81:68:45:a7
Exponent: 65537 (0x10001)
Signature Algorithm: md2WithRSAEncryption
bb:4c:12:2b:cf:2c:26:00:4f:14:13:dd:a6:fb:fc:0a:11:84:
8c:f3:28:1c:67:92:2f:7c:b6:c5:fa:df:f0:e8:95:bc:1d:8f:
6c:2c:a8:51:cc:73:d8:a4:c0:53:f0:4e:d6:26:c0:76:01:57:
81:92:5e:21:f1:d1:b1:ff:e7:d0:21:58:cd:69:17:e3:44:1c:
9c:19:44:39:89:5c:dc:9c:00:0f:56:8d:02:99:ed:a2:90:45:
4c:e4:bb:10:a4:3d:f0:32:03:0e:f1:ce:f8:e8:c9:51:8c:e6:
62:9f:e6:9f:c0:7d:b7:72:9c:c9:36:3a:6b:9f:4e:a8:ff:64:
0d:64
-----BEGIN CERTIFICATE-----
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG
A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2
MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV
BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN
ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE
BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is
I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G
CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do
lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc
AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k
-----END CERTIFICATE-----
On the Mac, it looks like OpenSSL keeps certs in
/System/Library/OpenSSL/
One idea would be to edit openssl.cnf and add the CA there.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>316</commentid>
<comment_count>5</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-18 16:46:10 -0700</bug_when>
<thetext>I figured out how to update OpenSSLs certs with the appropriate CA. See
http://chess.eecs.berkeley.edu/ptexternal/wiki/Main/Subversion#svnCertficateIsNotIssuedByATrustedAuthority
This bug remains open pending solving the ChangeLog issue and creating scripts
to sanity check the repository for the proper svn:eol-style and svn:keywords
settings.
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>317</commentid>
<comment_count>6</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-18 20:04:58 -0700</bug_when>
<work_time>7.0</work_time>
<thetext>Closing this:
SVN is installed, see http://chess.eecs.berkeley.edu/ptexternal/wiki/Main/Subversion
We have https access, see http://chess.eecs.berkeley.edu/ptexternal
I hacked up a way to create ChangeLogs that is fairly fast. The author
of the svn2cl script suggested operating on files on a per year basis.
I added a rule to $PTII/makefile that creates ChangeLogThisYear.txt
The nightly build will build
http://chess.eecs.berkeley.edu/ptexternal/nightly/ChangeLog.txt
which consists of the ChangeLogs for different years concatenated together.
Only the most recent year is regenerated.
I created some scripts in adm/bin that find problems with keywords and
update $PTII/doc/coding/releasemgt.htm to describe their use.</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>18</attachid>
<date>2008-09-18 09:53:13 -0700</date>
<delta_ts>2008-09-18 09:53:13 -0700</delta_ts>
<desc>Certificate Authority PEM file for source.eecs.berkeley.edu</desc>
<filename>sourceBuiltinObjectToken_VerisignClass3PublicPrimaryCertificationAuthority</filename>
<type>text/plain</type>
<size>848</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340164-WkT7R47Q6W-HvtpGj4KYpIWFEU3DHqEVoGED70mHbUs</token>
</attachment>
</bug>
<bug>
<bug_id>140</bug_id>
<creation_ts>2008-03-15 15:02:58 -0700</creation_ts>
<short_desc>Ptolemy interface to SVN or CVS</short_desc>
<delta_ts>2008-03-15 15:04:42 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-XapxJAXPy7bLR5NzP1OMLS_9O0VYgzWfzVWZzW4XhR8</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>220</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-15 15:02:58 -0700</bug_when>
<thetext>Empty </thetext>
</long_desc><long_desc isprivate="0" >
<commentid>221</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-15 15:04:42 -0700</bug_when>
<thetext>Ian Brown writes:
&gt; Subversion / CVS integration. We get this with a eclipse / NetBeans harness</thetext>
</long_desc>
</bug>
<bug>
<bug_id>290</bug_id>
<creation_ts>2009-07-20 19:28:03 -0700</creation_ts>
<short_desc>Need a way to save a vergil graph diagram as an image file</short_desc>
<delta_ts>2012-06-28 22:58:23 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>printing</component>
<version>8.0.beta</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-tVYtpg6VH0No_4ni3OmyvrBOqwwNX6C7EcF6RbR-2cw</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>569</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-07-20 19:28:03 -0700</bug_when>
<thetext>A few people have been asking about a way to save the image of a Ptolemy
vergil graph model diagram as an image file. Ideally, we would save
this as a .png file, which is lossless and has many colors. Being
able to save as .gif or .jpg are options.
Currently, we have -printPDF, which is a bit of a hack, and requires
that a pdf printer such as the non-free Adobe Acrobat be installed.
In PtPlot, how we set up the save as Encapsulated PostScript (EPS) was
to create ptolemy.plot.EPSGraphics which extends java.awt.Graphics.
Presumably there is a better ways and someone has done this for png.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>961</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-06-28 22:58:23 -0700</bug_when>
<thetext>Edward has implemented export png and pdf functionality.
We can also export pdfs.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>25</bug_id>
<creation_ts>2006-07-27 14:51:29 -0700</creation_ts>
<short_desc>Borrow features from zoomable interfaces like Shrimp</short_desc>
<delta_ts>2009-04-06 18:56:52 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-IeS73OlGTRkaZY5EqEfFfs0lK7MhVbeH1cpHphx2iRU</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>37</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 14:51:29 -0700</bug_when>
<thetext>Borrow features from
Simple Hierarchical Multi-Perspective (Shrimp)
http://www.thechiselgroup.org/shrimp
which says:
SHriMP is both an application and a technique, designed for visualizing and
exploring software architecture and any other information space. SHriMP (Simple
Hierarchical Multi-Perspective) is a domain-independent visualization technique
designed to enhance how people browse and explore complex information spaces.
Among the applications we are actively exploring is the exploration of large
software programs, and the understanding of complex knowledge-bases (via the
Protégé tool).
In general, we should look at Zoomable User Interfaces (ZUI)
(From the July Rome AFRL Visit)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>44</bug_id>
<creation_ts>2006-09-15 18:56:17 -0700</creation_ts>
<short_desc>Factor out gui code from unit package</short_desc>
<delta_ts>2006-09-20 21:19:09 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>build system</component>
<version>6.0-devel</version>
<rep_platform>PC</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-pEWCaaPH4FMxHh8wCDYCfeMfyWYJuVdlkSSMOx8v6C4</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>66</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-09-15 18:56:17 -0700</bug_when>
<thetext>ptolemy.data.unit.BasicEdgeHighlighter class depends on diva, it should
be moved to ptolemy.data.unit.gui</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>68</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-09-20 21:19:09 -0700</bug_when>
<thetext>This is fixed. I moved BasicEdgeHighlighter to actor.gui.unit.
I also moved two unit classes from actor.gui to actor.gui.unit.
</thetext>
</long_desc>
</bug>
<bug>
<bug_id>358</bug_id>
<creation_ts>2011-06-16 07:30:25 -0700</creation_ts>
<short_desc>Code Generation for Modal Models</short_desc>
<delta_ts>2011-06-16 07:32:08 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Codegen</component>
<version>8.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>All</op_sys>
<bug_status>ASSIGNED</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>50.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-j008R6QxdjvA5zTi2UzB1hUtKg2hw-DR3HE7t2T8MGQ</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>747</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2011-06-16 07:30:25 -0700</bug_when>
<thetext>Enhance the cg code generator to generate code for modal models.
We had limited support for this in $PTII/ptolemy/codegen, we need to
finish the port to $PTII/ptolemy/cg.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>748</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2011-06-16 07:32:08 -0700</bug_when>
<thetext>Currently:
$PTII/bin/ptcg -language java /Users/cxh/ptII/ptolemy/domains/modal/test/auto/Blending.xml
fails with:
Cannot resolve codegen type from Ptolemy type: unknown
Wrote /Users/cxh/cg/Array.java
Wrote /Users/cxh/cg/Token.java
Writing Blending.java in file:/Users/cxh/cg/ (47930 characters)
Wrote /Users/cxh/cg/Blending.java
Reading &quot;ptolemy/cg/kernel/generic/program/procedural/java/makefile.in&quot;,
writing &quot;/Users/cxh/cg/Blending.mk&quot;
In &quot;/Users/cxh/cg&quot;, about to execute:
make -f Blending.mk
javac -classpath &quot;.::.&quot; Blending.java
Blending.java:667: cannot find symbol
symbol : variable Blending_BlendingController_mode_controller__Controller__currentState
location: class Blending
Blending_BlendingController_mode_controller__Controller__currentState = STATE_Blending_BlendingController_mode_controller_Mode_A;
^
Blending.java:667: cannot find symbol
symbol : variable STATE_Blending_BlendingController_mode_controller_Mode_A
location: class Blending
Blending_BlendingController_mode_controller__Controller__currentState = STATE_Blending_BlendingController_mode_controller_Mode_A;
^
Blending.java:775: cannot find symbol
symbol : variable Blending_BlendingController_input
location: class Blending
Blending_BlendingController_input = temporary;
^
3 errors
make: *** [Blending.class] Error 1
All Done</thetext>
</long_desc>
</bug>
<bug>
<bug_id>212</bug_id>
<creation_ts>2008-10-27 13:54:12 -0700</creation_ts>
<short_desc>Selected link should be bold or a different color</short_desc>
<delta_ts>2008-10-27 13:54:12 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>10.00</estimated_time>
<remaining_time>10.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-CRvFXKiCV6UoZpwneoapTPaqvGDjxIBO0wojyV2Fvgw</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>359</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-10-27 13:54:12 -0700</bug_when>
<thetext>Ian Brown writes:
&quot;It is difficult to trace wiring in complex diagrams. It would be good it when one
selects a wire, it goes bold or changes colour. This boldness / colour should
propagate through actors where the input / output relationship is known. This
would be especially useful where actors with multiport input and outputs (such
as boolean switches) are used. This would allow a designer to more easily trace a
single data-flow though a complex diagram.&quot;
Right now, when a link is selected, we highlight the ends of the relation.
We could do more here.
Note that we do have the dependency highlighter, which will show dependencies.
To use the dependency highlighter in vergil, in the left hand actor library
pane, drag Utilities -&gt; Analysis -&gt; DependencyHighlighter on to the actor
in question. The context menu for the actor gains four menu choices that
will highlight or clear highlights for the dependents and prerequisites.
Perhaps a better interface would help here. Would it be possible for the
context menu to have these choices always present?</thetext>
</long_desc>
</bug>
<bug>
<bug_id>164</bug_id>
<creation_ts>2008-05-16 19:59:22 -0700</creation_ts>
<short_desc>Multiport Composites should infer their width</short_desc>
<delta_ts>2009-02-02 15:54:28 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>kernel</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>bert.rodiers@gmail.com</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>320.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-IZCkXMr_Ug6CKdQKbyQ1FyahO1WcB_1cI-4eln1ldNo</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>272</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-05-16 19:59:22 -0700</bug_when>
<thetext>http://bugzilla.ecoinformatics.org/show_bug.cgi?id=3300
&quot;CompositeActor does not support multiport&quot;
Discusses a common problem that has appeared before.
I added information about this to the Ptolemy II faq, see
http://ptolemy.eecs.berkeley.edu/ptolemyII/ptIIfaq.htm#multiportComposites
Below is more detailed information:
From: &quot;Christopher Brooks&quot; &lt;cxh@eecs.berkeley.edu&gt;
To: &quot;Edward A. Lee&quot; &lt;eal@eecs.berkeley.edu&gt;
Sent: Friday, November 30, 2007 9:48 AM
Subject: Re: [Ptolemy] 1+1 != 2 with transparent composite with multiport
&gt; Thanks!
&gt;
&gt; In the perfect world, we would warn the user about dropping the second
&gt; channel.
&gt; What&apos;s odd is that both Consts fire and the data from the second Const
&gt; disappears. This is counterintuitive.
&gt;
&gt; _Christopher
&gt; --------
&gt;
&gt;
&gt; This isn&apos;t a bug, it&apos;s a feature! ;-)
&gt;
&gt; Seriously, what&apos;s going on here is that the &quot;width&quot; of the inside
&gt; relation is set (by default) to 1. In our semantics, when a multiport
&gt; has width 2 on the outside and width 1 on the inside, the second
&gt; channel
&gt; is dropped.
&gt;
&gt; To get this to work, set the width of the relation on the inside to 0,
&gt; which means &quot;infer the width from the connections&quot;.
&gt;
&gt; Arguably, the default width should always be 0, but we would need a
&gt; proof of soundness. I.e., that the inferred width is always unique.
&gt; One of my students took a stab at such a proof a few years ago, but
&gt; didn&apos;t get anywhere. Probably worth revisiting...
&gt;
&gt; Edward
&gt;
&gt;
&gt; At 08:14 AM 11/30/2007, Christopher Brooks wrote:
&gt; &gt;Jason writes:
&gt; &gt;
&gt; &gt;&gt; Chris, is the way the attached works the intended implementation?
&gt; &gt;&gt; I thought the display would read 2.
&gt; &gt;
&gt; &gt;Hi Jason,
&gt; &gt;
&gt; &gt;Yep, 1+1 is usually 2, expect for sufficiently large values of 1.
&gt; &gt;:-)
&gt; &gt;
&gt; &gt;The model you sent appears to illustrate a bug.
&gt; &gt;
&gt; &gt;I checked in a test version as
&gt; &gt;ptolemy/domains/sdf/test/auto/SDFMultiportComposite.xml
&gt; &gt;
&gt; &gt;The model is an SDF model that has two Consts connected to
&gt; &gt;a composite actor that has a multiport.
&gt; &gt;
&gt; &gt; SDF
&gt; &gt; -------
&gt; &gt; | |
&gt; &gt; Const -------&gt;|Comp.|
&gt; &gt; | | |
&gt; &gt; Const-----| -------
&gt; &gt;
&gt; &gt;
&gt; &gt;The composite is transparent (it has no internal director)
&gt; &gt;Inside the composite, the multiport is connected to the
&gt; &gt;plus port of an AddSubtract. The output of the
&gt; &gt;AddSubtract is connected to a Display:
&gt; &gt;
&gt; &gt; ---------- -----------
&gt; &gt; &gt;&gt;--------| + | | |
&gt; &gt; | Add/Sub|--&gt;| Display |
&gt; &gt; | - | | |
&gt; &gt; ---------- -----------
&gt; &gt;
&gt; &gt;When I run the test, the Display gets &quot;1&quot;.
&gt; &gt;The version I checked in uses a Test actor which expects &quot;2&quot;.
&gt; &gt;
&gt; &gt;This test fails in Ptolemy II 4.0, 5.0 and 6.0.
&gt; &gt;
&gt; &gt;
&gt; &gt;I vaguely remember seeing a problem like this before.
&gt; &gt;
&gt; &gt;Adding a SDF director to the composite does not help.
&gt; &gt;
&gt; &gt;If the multiport is removed and two non-multiports are used, then
&gt; &gt;the test passes.
&gt; &gt;
&gt; &gt;Any comments? This seems like it should work.
&gt; &gt;
&gt; &gt;_Christopher</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>274</commentid>
<comment_count>1</comment_count>
<attachid>17</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-07-21 13:10:29 -0700</bug_when>
<thetext>Created attachment 17
Composite within composite multiport problem.
This example, from Jason, has a composite within a composite where the input of each composite is a multiport. The problem is that setting the value of the width to 0 fails:
Error evaluating expression: 0
in .MultiportProblem.CompositeActor.relation.width
Because:
Cannot use unspecified width on this relation because of its links.
in .MultiportProblem.CompositeActor.relation</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>349</commentid>
<comment_count>2</comment_count>
<attachid>20</attachid>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-10-08 08:16:12 -0700</bug_when>
<thetext>Created attachment 20
First analysis</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>350</commentid>
<comment_count>3</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-10-08 08:17:20 -0700</bug_when>
<thetext>I attached a first analysis (Width_inference.pdf)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>399</commentid>
<comment_count>4</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-02-02 15:54:28 -0800</bug_when>
<thetext>The mentioned limitations for width inference have been solved (so now it is possible to have multiple relations for which the width needs to be inferred at the same port). Notice that the value to infer the widths have been changed from 0 to -1.</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>17</attachid>
<date>2008-07-21 13:10:29 -0700</date>
<delta_ts>2008-07-21 13:10:29 -0700</delta_ts>
<desc>Composite within composite multiport problem.</desc>
<filename>MultiportProblem.xml</filename>
<type>application/xml</type>
<size>7799</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340164-Yu6fmxnQRUx9_ek1MUY3CsgZWivWETvDvUsemBe5sl8</token>
</attachment>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>20</attachid>
<date>2008-10-08 08:16:12 -0700</date>
<delta_ts>2008-10-08 08:16:12 -0700</delta_ts>
<desc>First analysis</desc>
<filename>Width_inference.pdf</filename>
<type>application/pdf</type>
<size>58489</size>
<attacher name="Bert Rodiers">bert.rodiers@gmail.com</attacher>
<token>1526340164-ytFTF0B35elu2oqTdqrS3bPritUt8cM_wxS4EwN9hT8</token>
</attachment>
</bug>
<bug>
<bug_id>344</bug_id>
<creation_ts>2010-05-05 15:03:46 -0700</creation_ts>
<short_desc>Use openArchitectureWare templates for codegen</short_desc>
<delta_ts>2010-05-05 15:03:46 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Codegen</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>rome</keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>500.00</estimated_time>
<remaining_time>500.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-8-K0VZkOR1BbeUntlOngWojCJ11D4BKa5ylY0DkEsw8</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>686</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-05-05 15:03:46 -0700</bug_when>
<thetext>Edward writes:
&quot;The actor library for codegen is given using a rather crude
template file format that is inherited from the previous
codegen package. We would like to replace this with a
modern template code generation mechanism based on
openarchitectureware, which is now part of EMF
(the Eclipse Modeling Framework). We have a rough
plan for how to accomplish this... It is not easy,
but it looks like it will work. This will make it much
easier to write good codegen templates.&quot;</thetext>
</long_desc>
</bug>
<bug>
<bug_id>329</bug_id>
<creation_ts>2010-03-01 16:50:17 -0800</creation_ts>
<short_desc>Show name on ports in a CompositeActor is confusing</short_desc>
<delta_ts>2010-03-11 13:35:24 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>4.00</estimated_time>
<remaining_time>4.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-yjcf293pdXjDckfFarkegmqam8bI3HXPiLQ3RIkM-ZE</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>662</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-03-01 16:50:17 -0800</bug_when>
<thetext>Show name on a CompositeActor port determines whether the name is shown at the
upper level, not whether the name is displayed at the inner level.
1. Start Vergil
2. File -&gt; New -&gt; Graph Editor
3. In the left hand actor pane, select Utilities and then drag a
CompositeActor into the canvas
4. Right click on the CompositeActor and select &quot;Open Actor&quot;
5. In the CompositeActor, create a port by clicking on the menu bar
6. Right click on the port and select Customize -&gt; Rename
7. Click on the &quot;Show name&quot; checkbox and then select Commit
Note that the name of the port now appears in the container of the
CompositeActor.
There is no easy way to disable the port name appearing in the inside
of the CompositeActor.
One possible solution would be to detect this case and have the dialog
box say &quot;Show port name in container&quot; instead of &quot;Show name&quot;.
Note that at the upper level, the Port dialog also controls whether
the name of the port of the CompositeActor is displayed.
Also, we should have an option that would control whether the name
was shown inside the CompositeActor.
See also
http://chess.eecs.berkeley.edu/ptolemy/listinfo/ptolemy/2005-October/008709.html</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>665</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-03-11 13:35:24 -0800</bug_when>
<thetext>I discussed this with Edward and we determined that fixing this would not be
difficult, but we have no plans to fix it any time soon.
The reason to fix this would be so that the user can determine whether
port names of ports that go in and out of a Composite are visible.
I could see how if one was using Ptolemy to create figures for a paper,
then the user would want to control this.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>214</bug_id>
<creation_ts>2008-10-27 14:02:04 -0700</creation_ts>
<short_desc>Allow multiple connections to a non-multiport</short_desc>
<delta_ts>2008-10-27 14:02:04 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>20.00</estimated_time>
<remaining_time>20.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-Qo5dkX_12_OP4a4Lhtt9SB6qnzZOs1R4K2ULqLU4KWA</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>361</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-10-27 14:02:04 -0700</bug_when>
<thetext>Ian Brown writes:
&quot;One should be able to have multiple wires connected to a single output port (a
non multi-port). Currently one needs to add a little diamond junction after the
port and this does not help the readability of the diagram or assist the creation
of it.&quot;
This is an interesting issue that points out differences between the user view
and the developer view.
For users, it should &quot;just work&quot; to connect multiple outputs to a single
non-multiport. The user does not care that much about semantics, they just want
their data to go to two actors.
However, Ptolemy developers are very concerned about semantics, and precisely
what does it mean for data to go to two places. Usually the user just wants
the data to be copied (cloned).
One hack would be to add a relation automatically, but that is wrong since it
would make the model uglier.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>152</bug_id>
<creation_ts>2008-03-20 12:32:36 -0700</creation_ts>
<short_desc>Delete an actor, yet keep wiring in place</short_desc>
<delta_ts>2008-03-20 12:32:36 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P4</priority>
<bug_severity>enhancement</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-TrwIFle5-fnvV6TTHTwIyZSW-o1N2pIeMV_F8UN1gTk</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>240</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-03-20 12:32:36 -0700</bug_when>
<thetext>Ian Brown write:
&gt; Option to delete an actor and have the wiring stay in place.
&gt; Often one wants to delete an actor and replace it with another.
&gt; It&apos;s annoying that all the wiring disappears when you delete the actor.
I agree, I often have this problem. Managing the complexity in the right
menu button could be tricky though.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>273</bug_id>
<creation_ts>2009-05-13 19:16:46 -0700</creation_ts>
<short_desc>Revision 53669 breaks codegen.</short_desc>
<delta_ts>2009-05-15 09:06:12 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Linux</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>critical</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Ben Lickly">blickly@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>1.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-1nCz2BTXu7BwIwrd_-E1By8nWk8cY_589RCcmYHZQIs</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>530</commentid>
<comment_count>0</comment_count>
<who name="Ben Lickly">blickly@eecs.berkeley.edu</who>
<bug_when>2009-05-13 19:16:46 -0700</bug_when>
<thetext>The revision 53669 breaks codegen in Vergil, in that double-clicking on a CCodeGenerator of a saved model now gives
&quot;No effigy: Please save the model to a file before generating code.&quot;
rather than the codegen dialog.
Running codegen without Vergil still works fine.
Since this change was a fix for http://bugzilla.ecoinformatics.org/show_bug.cgi?id=4053, I&apos;m hesitant to just roll it back.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>531</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-05-15 09:06:12 -0700</bug_when>
<work_time>1.0</work_time>
<thetext>Fixed by updating PtolemyFrame.java.
Interestingly the CodeGeneratorGUI extends PtolemyFrame, which is
why this issue came up.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>319</bug_id>
<creation_ts>2009-12-07 10:59:26 -0800</creation_ts>
<short_desc>Fix clone() for PropertyLattice</short_desc>
<delta_ts>2011-02-26 22:38:13 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Properties</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>WONTFIX</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>major</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Elizabeth Latronico">beth@berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-f_2YF_ljJIobk7SLMM71jgMkCBDBlysnfhD79j120Qg</token>
<group id="19">pthomas</group>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>638</commentid>
<comment_count>0</comment_count>
<who name="Elizabeth Latronico">beth@berkeley.edu</who>
<bug_when>2009-12-07 10:59:26 -0800</bug_when>
<thetext>+) This will probably have interact with fixing equals() for PropertyLattice (see additional bug report).
+) The intent seems to be that a specific PropertyLattice should be a singleton. What is a better way of implementing this?
+) What is the interaction / what are possible issues regarding user-defined custom lattices?
+) (Edward) The clone() method returns this. This is only correct if the object and all instances of subclasses are immutable. This seems extremely unlikely in a class that has an isConstant() method.
Comment (Thomas M.): As far as I remember cloning was an issue when we combined the property system with model transformation. Jackie got it to run somehow, but unfortunately I don&apos;t remember the details. It&apos;s definitely something we did not understand in full detail, so some refactoring may be good. In my opinion the refactored code needs to be tested along with the model transformation.
+) Fix issues identified in FindBugs:
http://chess.eecs.berkeley.edu/ptexternal/nightly/findbugs.htm
(Christopher)
About Clonable, the FindBugs warning is:
CN: In class ptolemy.data.properties.lattice.LatticeProperty
In class ptolemy.data.properties.lattice.LatticeProperty
In method ptolemy.data.properties.lattice.LatticeProperty.clone()
At LatticeProperty.java:[line 74]
http://findbugs.sourceforge.net/bugDescriptions.html#CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE
says
&quot;This class defines a clone() method but the class doesn&apos;t implement Cloneable. There are some situations in which this is OK (e.g., you want to control how subclasses can clone themselves), but just make sure that this is what you intended.&quot;
I made LatticeProperty implement Cloneable.
However, the LatticeProperty.clone returns itself:
/**
* Return this LatticeProperty.
* @return The clone.
* @exception CloneNotSupportedException Not thrown in this base class.
*/
public Object clone() throws CloneNotSupportedException {
return this;
}
Is this really what we want?
http://findbugs.sourceforge.net/bugDescriptions.html#CN_IDIOM_NO_SUPER_CALL
says:
&quot;CN: clone method does not call super.clone() (CN_IDIOM_NO_SUPER_CALL) This non-final class defines a clone() method that does not call super.clone(). If this class (&quot;A&quot;) is extended by a subclass (&quot;B&quot;), and the subclass B calls super.clone(), then it is likely that B&apos;s clone() method will return an object of type A, which violates the standard contract for clone().
If all clone() methods call super.clone(), then they are guaranteed to use Object.clone(), which always returns an object of the correct type.&quot;
I think that maybe LatticeProperty.clone should actually clone itself
and not just return itself.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>727</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2011-02-26 22:38:13 -0800</bug_when>
<thetext>ptolemy.data.properties was removed</thetext>
</long_desc>
</bug>
<bug>
<bug_id>238</bug_id>
<creation_ts>2009-02-16 11:49:18 -0800</creation_ts>
<short_desc>MultiInstanceComposite gives problems in PN</short_desc>
<delta_ts>2009-02-17 12:07:25 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>major</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-tvJ5uHAGbKy0G7PC6s4edVnbVgU1DdGWfiPfDNiwSAo</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>405</commentid>
<comment_count>0</comment_count>
<attachid>27</attachid>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-02-16 11:49:18 -0800</bug_when>
<thetext>Created attachment 27
The model that fails.
The attached version of this model throws a null pointer exception
trying to send data to a receiver that has no _director.
One of the MultiInstanceComposites will finish at a certain moment:
The StaticSchedulingDirector will set _postfireReturns to false, and
hence postfire will return false later, the corresponding
processThread will stop iterating and will automatically go into
wrapup.
If the MultiInstanceComposite is the master copy, it will clean up the
other clones and the relation. Even if the other copies still exist of
somebody else still has to get the data.
This will result in the director becoming zero in PNQueueReceiver (for
the different receivers of this relation) as shown in the following
call stack
Thread [.AllToAllMultiInstanceComposite.MultiInstanceComposite]
(Suspended (breakpoint at line 113 in
ptolemy.domains.pn.kernel.PNQueueReceiver))
ptolemy.domains.pn.kernel.PNQueueReceiver.setContainer(ptolemy.actor.IOPort)
line: 113
ptolemy.actor.TypedIOPort(ptolemy.actor.IOPort)._removeReceivers(ptolemy.kernel.Relation)
line: 3937
ptolemy.actor.TypedIOPort(ptolemy.actor.IOPort).createReceivers() line: 486
ptolemy.actor.lib.Commutator(ptolemy.actor.AtomicActor).connectionsChanged(ptolemy.kernel.Port)
line: 197
ptolemy.actor.TypedIOPort(ptolemy.kernel.Port).unlink(ptolemy.kernel.Relation)
line: 734
ptolemy.actor.TypedIOPort(ptolemy.kernel.ComponentPort).unlink(ptolemy.kernel.Relation) line: 606
ptolemy.actor.TypedIOPort(ptolemy.actor.IOPort).unlink(ptolemy.kernel.Relation) line: 3201
ptolemy.actor.TypedIORelation(ptolemy.kernel.Relation).unlinkAll() line: 384
ptolemy.actor.TypedIORelation(ptolemy.kernel.ComponentRelation).unlinkAll()
line: 504
ptolemy.actor.TypedIORelation(ptolemy.kernel.ComponentRelation).setContainer(ptolemy.kernel.CompositeEntity) line: 437
ptolemy.actor.TypedIORelation(ptolemy.actor.IORelation).setContainer(ptolemy.kernel.CompositeEntity)
line: 635
ptolemy.actor.lib.hoc.MultiInstanceComposite.wrapup() line: 415
ptolemy.actor.process.ProcessThread.wrapup() line: 312
ptolemy.actor.process.ProcessThread.run() line: 253
Later on other actors (or even the MultiInstanceComposite instances
that are in the process of being destroyed) write or read from ports
related to this receivers and this causes the nullpointerexception.
Edward&apos;s proposed solution:
The right fix, I&apos;m afraid, is to reimplement MultiInstanceComposite.
It&apos;s not really done right... It should not be destroying the structure
in its wrapup method...</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>406</commentid>
<comment_count>1</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-02-17 12:07:25 -0800</bug_when>
<thetext>Reimplemented preinitialize and wrapup of MultiInstanceComposite. Wrapup does now nothing and preinitialize takes care of deleting superfluous instances.</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>27</attachid>
<date>2009-02-16 11:49:18 -0800</date>
<delta_ts>2009-02-16 11:49:18 -0800</delta_ts>
<desc>The model that fails.</desc>
<filename>AllToAllMultiInstanceComposite.xml</filename>
<type>text/xml</type>
<size>13671</size>
<attacher name="Bert Rodiers">bert.rodiers@gmail.com</attacher>
<token>1526340164-Ec9usH-iiAXqIDEGoOHPLFAmw__i4LEMFZWsvOPvyPc</token>
</attachment>
</bug>
<bug>
<bug_id>320</bug_id>
<creation_ts>2009-12-07 11:00:19 -0800</creation_ts>
<short_desc>Fix equals() and toString() for PropertyLattice</short_desc>
<delta_ts>2011-02-26 22:38:19 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Properties</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>WONTFIX</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>major</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Elizabeth Latronico">beth@berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-6vgfS7KI3RAVGymeNjsTwyTwzBhcd_NFGNoa_8RIGLE</token>
<group id="19">pthomas</group>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>639</commentid>
<comment_count>0</comment_count>
<who name="Elizabeth Latronico">beth@berkeley.edu</who>
<bug_when>2009-12-07 11:00:19 -0800</bug_when>
<thetext>Currently equals() does not compare the contents of the lattice and does not have a corresponding hashcode() method.
+) The contents of the lattice should be compared (using the graph package methods; it’s just a directed graph) in addition to the name.
+) If two lattices have the same contents, but different names, should they be not equal? I think they should be not equal because actors may have different rules for different lattice names, even if the lattice contents are the same.
+) If two lattices have the same contents are they allowed to have different names? This I’m not sure about. If a lattice has identical contents, it seems like it is really the same lattice.
+) (Edward) One of the constructors does not specify a name, which causes toString() to use the classname as the name. This seems wrong to me. For one thing, if you use this constructor, equals() will throw a null-pointer exception!
+) (Edward) The equals() method compares names (which seems questionable to me... why is this right?). Even if this this is right, there is no corresponding hashcode() method, so if instances are put into hashed data structures, we will get chaos. (Christopher tried to add one, but it was not consistent with the equals() method.
Comment (Thomas M.): Think it has to do with the reset mechanism. Every time we start the solver, new instances of the classes are created. Hence, comparison on the id&apos;s does not match.
+) (Christopher) Also PropertyLattice.toString() overrides Graph.toString(). PropertyLattice.toString() returns the package name in which the class is defined. Graph.toString() returns a description of the contents of the graph, which is much more useful. However, removing the PropertyLattice.toString() definition causes lots of test failures.
I think that PropertyLattice.toString() should be removed and a different method used so that the tests pass.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>732</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2011-02-26 22:38:19 -0800</bug_when>
<thetext>ptolemy.data.properties was removed</thetext>
</long_desc>
</bug>
<bug>
<bug_id>355</bug_id>
<creation_ts>2011-01-19 14:17:08 -0800</creation_ts>
<short_desc>NullPointerError on renaming</short_desc>
<delta_ts>2012-06-29 08:30:29 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>8.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Mac OS X 10.6</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>major</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Ben Lickly">blickly@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-SSTDfMvc2JQEYxW8aPzyyVWtYsz5ebc7qFR4k2oLIJc</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>717</commentid>
<comment_count>0</comment_count>
<who name="Ben Lickly">blickly@eecs.berkeley.edu</who>
<bug_when>2011-01-19 14:17:08 -0800</bug_when>
<thetext>Vergil seems to now have a bug causing NullPointerErrors to be thrown when an actor is renamed.
The bug is non-deterministic, but on my system, usually 2 or 3 renamings (either of the same actor multiple times or of different actors) is enough to trigger the bug
Steps to reproduce:
1. Open a new model.
2. Drag in an actor (or an entity or an attribute).
3. Select the actor
4. Open the rename dialog with F2.
5. Give the actor a new name.
6. Repeat steps 3-5.
Exception text:
Exception in thread &quot;AWT-EventQueue-0&quot; java.lang.NullPointerException
at ptolemy.actor.gui.RenameConfigurer.apply(RenameConfigurer.java:199)
at ptolemy.actor.gui.RenameDialog._handleClosing(RenameDialog.java:69)
at ptolemy.gui.ComponentDialog$1.propertyChange(ComponentDialog.java:214)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
at java.awt.Component.firePropertyChange(Component.java:8217)
at javax.swing.JOptionPane.setValue(JOptionPane.java:1945)
at javax.swing.plaf.basic.BasicOptionPaneUI$ButtonActionListener.actionPerformed(BasicOptionPaneUI.java:1187)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6352)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6117)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4714)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
at java.awt.Container.dispatchEventImpl(Container.java:2129)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)
at java.awt.Dialog$1.run(Dialog.java:1046)
at java.awt.Dialog$3.run(Dialog.java:1098)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1096)
at java.awt.Component.show(Component.java:1563)
at java.awt.Component.setVisible(Component.java:1515)
at java.awt.Window.setVisible(Window.java:842)
at java.awt.Dialog.setVisible(Dialog.java:986)
at ptolemy.gui.ComponentDialog.&lt;init&gt;(ComponentDialog.java:255)
at ptolemy.gui.ComponentDialog.&lt;init&gt;(ComponentDialog.java:122)
at ptolemy.gui.ComponentDialog.&lt;init&gt;(ComponentDialog.java:101)
at ptolemy.actor.gui.RenameDialog.&lt;init&gt;(RenameDialog.java:57)
at ptolemy.vergil.kernel.RenameDialogAction.actionPerformed(RenameDialogAction.java:113)
at javax.swing.JComponent$ActionStandin.actionPerformed(JComponent.java:3368)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1639)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2851)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:267)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:216)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2928)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2920)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2814)
at java.awt.Component.processEvent(Component.java:6129)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4714)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676)
at java.awt.Component.dispatchEventImpl(Component.java:4586)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>718</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2011-01-19 17:42:22 -0800</bug_when>
<thetext>I think the problem here is that F2 on the canvas will throw a NPE.
Steps to reproduce:
1. Open a new model.
2. Open the rename dialog with F2.
3. Give the actor a new name.
I get the following exception in stdout:
Exception in thread &quot;AWT-EventQueue-0&quot; java.lang.NullPointerException
at ptolemy.actor.gui.RenameConfigurer.apply(RenameConfigurer.java:199)
at ptolemy.actor.gui.RenameDialog._handleClosing(RenameDialog.java:69)
at ptolemy.gui.ComponentDialog$1.propertyChange(ComponentDialog.java:214)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
at java.awt.Component.firePropertyChange(Component.java:8217)
at javax.swing.JOptionPane.setValue(JOptionPane.java:1945)
at javax.swing.plaf.basic.BasicOptionPaneUI$ButtonActionListener.actionPerformed(BasicOptionPaneUI.java:1187)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6352)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6117)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4714)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
at java.awt.Container.dispatchEventImpl(Container.java:2129)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)
at java.awt.Dialog$1.run(Dialog.java:1046)
at java.awt.Dialog$3.run(Dialog.java:1098)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1096)
at java.awt.Component.show(Component.java:1563)
at java.awt.Component.setVisible(Component.java:1515)
at java.awt.Window.setVisible(Window.java:842)
at java.awt.Dialog.setVisible(Dialog.java:986)
at ptolemy.gui.ComponentDialog.&lt;init&gt;(ComponentDialog.java:255)
at ptolemy.gui.ComponentDialog.&lt;init&gt;(ComponentDialog.java:122)
at ptolemy.gui.ComponentDialog.&lt;init&gt;(ComponentDialog.java:101)
at ptolemy.actor.gui.RenameDialog.&lt;init&gt;(RenameDialog.java:57)
at ptolemy.vergil.kernel.RenameDialogAction.actionPerformed(RenameDialogAction.java:113)
at javax.swing.JComponent$ActionStandin.actionPerformed(JComponent.java:3368)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1639)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2851)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:267)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:216)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2928)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2920)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2814)
at java.awt.Component.processEvent(Component.java:6129)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4714)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676)
at java.awt.Component.dispatchEventImpl(Component.java:4586)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
The offending line in actor.gui.RenameConfigurer is:
parent.requestChange(request);
parent gets set earlier
NamedObj parent = _object.getContainer();
So what is happening is that there is no parent for the open composite,
so parent is set to null.
As a hack, I tried to use _object instead parent:
NamedObj context = parent;
if (context == null) {
context = _object;
}
MoMLChangeRequest request = new MoMLChangeRequest(this, // originator
context, // context
moml.toString(), // MoML code
null); // base
request.addChangeListener(this);
request.setUndoable(true);
context.requestChange(request);
But now I get
com.microstar.xml.XmlException: Cannot create entity without a class name. in [external stream] at line 1 and column 19
at ptolemy.moml.MoMLParser._checkForNull(MoMLParser.java:3792)
at ptolemy.moml.MoMLParser._createEntity(MoMLParser.java:3973)
at ptolemy.moml.MoMLParser.startElement(MoMLParser.java:2493)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:921)
at com.microstar.xml.XmlParser.parseDocument(XmlParser.java:481)
at com.microstar.xml.XmlParser.doParse(XmlParser.java:159)
at com.microstar.xml.XmlParser.parse(XmlParser.java:132)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1402)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1374)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1530)
at ptolemy.moml.MoMLChangeRequest._execute(MoMLChangeRequest.java:289)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:171)
at ptolemy.kernel.util.NamedObj.executeChangeRequests(NamedObj.java:735)
at ptolemy.kernel.util.NamedObj.requestChange(NamedObj.java:1775)
at ptolemy.actor.CompositeActor.requestChange(CompositeActor.java:1921)
at ptolemy.actor.gui.RenameConfigurer.apply(RenameConfigurer.java:202)
at ptolemy.actor.gui.RenameDialog._handleClosing(RenameDialog.java:69)
at ptolemy.gui.ComponentDialog$1.propertyChange(ComponentDialog.java:214)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
at java.awt.Component.firePropertyChange(Component.java:8217)
at javax.swing.JOptionPane.setValue(JOptionPane.java:1945)
at javax.swing.plaf.basic.BasicOptionPaneUI$ButtonActionListener.actionPerformed(BasicOptionPaneUI.java:1187)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6352)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6117)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4714)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
at java.awt.Container.dispatchEventImpl(Container.java:2129)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)
at java.awt.Dialog$1.run(Dialog.java:1046)
at java.awt.Dialog$3.run(Dialog.java:1098)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1096)
at java.awt.Component.show(Component.java:1563)
at java.awt.Component.setVisible(Component.java:1515)
at java.awt.Window.setVisible(Window.java:842)
at java.awt.Dialog.setVisible(Dialog.java:986)
at ptolemy.gui.ComponentDialog.&lt;init&gt;(ComponentDialog.java:255)
at ptolemy.gui.ComponentDialog.&lt;init&gt;(ComponentDialog.java:122)
at ptolemy.gui.ComponentDialog.&lt;init&gt;(ComponentDialog.java:101)
at ptolemy.actor.gui.RenameDialog.&lt;init&gt;(RenameDialog.java:57)
at ptolemy.vergil.kernel.RenameDialogAction.actionPerformed(RenameDialogAction.java:113)
at javax.swing.JComponent$ActionStandin.actionPerformed(JComponent.java:3368)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1639)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2851)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:267)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:216)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2928)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2920)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2814)
at java.awt.Component.processEvent(Component.java:6129)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4714)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676)
at java.awt.Component.dispatchEventImpl(Component.java:4586)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4544)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
One interesting thing is that the rename context menu is not visible
on the canvas. In other words, right clicking on the canvas in Ptolemy
brings up a menu that does not have a rename menu choice. What is happening
here is that F2 is invoking the rename action on the top level composite.
Kepler does have a rename menu choice for the top level. However, it
produces a similar stack trace. See also the Kepler bug
Composite Actor windows show wrong title after workflow Rename
http://bugzilla.ecoinformatics.org/show_bug.cgi?id=5101</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>966</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-06-29 08:30:29 -0700</bug_when>
<thetext>Fixed.
I think the problem is that hitting F2 in an unnamed model was
bringing up a NPE. We now tell the user to save the model.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>356</bug_id>
<creation_ts>2011-02-02 13:05:21 -0800</creation_ts>
<short_desc>AudioCapture sample data for &gt;8 bits data is parsed incorrectly</short_desc>
<delta_ts>2011-02-02 23:28:25 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>8.0.1</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>CLOSED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>major</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Dennis Geurts">dennis.geurts@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-QUFx6pUG1ChpDYg6hHER0wmwWk8LDN3Euu8Kc9dqTl0</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>719</commentid>
<comment_count>0</comment_count>
<who name="Dennis Geurts">dennis.geurts@gmail.com</who>
<bug_when>2011-02-02 13:05:21 -0800</bug_when>
<thetext>Java File: ptolemy.media.javasound.LiveSound
Method: _byteArrayToDoubleArray()
Line numbers: 928- 941
This code is actually called by the ptolemy.actor.lib.javasound.AudioCapture actor.
In the switch at the given location in the file, the bytes are shifted to form the actual result. During this shift the result is shifted by one byte location. Then the next byte is appended.
This is done by means of: result += (byteArray[j++] | 0xff);
Please note the binary OR; This means that always 0xFF is appended to the result.
This behavior leads to less precise signals being fed out of the AudioCapture actor.
Actual fix would be to change these lines to:
result += (byteArray[j++] &amp; 0xff);
i.e. a binary AND.
I have changed the file locally and the effect is a dramatic improvement in signal accuracy!</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>720</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2011-02-02 17:19:32 -0800</bug_when>
<thetext>Fixed!
Many thanks for this.
Running ptolemy/actor/lib/javasound/test/auto/testAudioCapture_AudioPlayer.xml
results in a much better sound with this change.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>721</commentid>
<comment_count>2</comment_count>
<who name="Dennis Geurts">dennis.geurts@gmail.com</who>
<bug_when>2011-02-02 23:28:25 -0800</bug_when>
<thetext>(In reply to comment #1)
You are very welcome. Thank YOU for the prompt response!
verified the code change in trunk, so marking the issue as closed, okay ?</thetext>
</long_desc>
</bug>
<bug>
<bug_id>280</bug_id>
<creation_ts>2009-06-08 11:02:47 -0700</creation_ts>
<short_desc>Resetting model parameters after partial execution</short_desc>
<delta_ts>2011-02-26 22:38:22 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Properties</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>WONTFIX</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords>pthomas</keywords>
<priority>P5</priority>
<bug_severity>major</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Man-Kit Leung">jleung@berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-aokyPt4ZsTid7b0mJ1YSLH0rMDxRKFnZ3O8yf5ZYQfg</token>
<group id="19">pthomas</group>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>555</commentid>
<comment_count>0</comment_count>
<who name="Man-Kit Leung">jleung@berkeley.edu</who>
<bug_when>2009-06-08 11:02:47 -0700</bug_when>
<thetext>Parameters may be changed after property resolution due to partial execution. How can we reset or preserve the orginal model parameters so that subsequent property resolution would work correctly?</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>734</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2011-02-26 22:38:22 -0800</bug_when>
<thetext>ptolemy.data.properties was removed</thetext>
</long_desc>
</bug>
<bug>
<bug_id>528</bug_id>
<creation_ts>2013-05-21 19:49:39 -0700</creation_ts>
<short_desc>Addition is not commutative</short_desc>
<delta_ts>2015-02-07 18:42:18 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>tokens</component>
<version>9.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>Linux</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>major</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Marten Lohstroh">marten@eecs.berkeley.edu</reporter>
<assigned_to name="Marten Lohstroh">marten@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>5.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-Ggh66NixVZRPV9gGA0SVPZ873IWPBQV85uPegj7CB8c</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>1004</commentid>
<comment_count>0</comment_count>
<who name="Marten Lohstroh">marten@eecs.berkeley.edu</who>
<bug_when>2013-05-21 19:49:39 -0700</bug_when>
<thetext>From the expression evaluator:
&gt;&gt; {a=1} + 1
add method not supported between ptolemy.data.RecordToken &apos;{a = 1}&apos; and ptolemy.data.IntToken &apos;1&apos; because the tokens have different classes.
&gt;&gt; 1 + {a=1}
&quot;1{a = 1}&quot;
&gt;&gt;</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>1005</commentid>
<comment_count>1</comment_count>
<who name="Marten Lohstroh">marten@eecs.berkeley.edu</who>
<bug_when>2013-07-27 23:51:14 -0700</bug_when>
<thetext>Issue addressed by:
1) making record and string incomparable in the type lattice;
2) removing the overrides of add() and addSubtract() in StringToken that would forcefully convert any token into a StringToken using the toString() method, even if not permitted by the relations in the type order.
Change committed in revision: 67012
New behavior:
&gt;&gt; {a=1} + 1
add method not supported between ptolemy.data.RecordToken &apos;{a = 1}&apos; and ptolemy.data.IntToken &apos;1&apos; because the tokens have different classes.
&gt;&gt; 1 + {a=1}
add method not supported between ptolemy.data.IntToken &apos;1&apos; and ptolemy.data.RecordToken &apos;{a = 1}&apos; because the types are incomparable.
&gt;&gt;</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>1006</commentid>
<comment_count>2</comment_count>
<who name="Marten Lohstroh">marten@eecs.berkeley.edu</who>
<bug_when>2013-07-29 18:10:45 -0700</bug_when>
<thetext>The following cases make sense now:
&gt;&gt; {a = 1, b = 2} + 1
add method not supported between ptolemy.data.RecordToken &apos;{a = 1, b = 2}&apos; and ptolemy.data.IntToken &apos;1&apos; because the tokens have different classes.
&gt;&gt; 1 + {a = 1, b = 2}
add method not supported between ptolemy.data.IntToken &apos;1&apos; and ptolemy.data.RecordToken &apos;{a = 1, b = 2}&apos; because the types are incomparable.
&gt;&gt; {a = 1, b = 2} + &quot;foo&quot;
add method not supported between ptolemy.data.RecordToken &apos;{a = 1, b = 2}&apos; and ptolemy.data.StringToken &apos;&quot;foo&quot;&apos; because the tokens have different classes.
&gt;&gt; &quot;foo&quot; + {a = 1, b = 2}
add method not supported between ptolemy.data.StringToken &apos;&quot;foo&quot;&apos; and ptolemy.data.RecordToken &apos;{a = 1, b = 2}&apos; because the types are incomparable.
But these cases are still need fixing:
&gt;&gt; {1, 2} + &quot;foo&quot;
{&quot;1foo&quot;, &quot;2foo&quot;}
&gt;&gt; &quot;foo&quot; + {1, 2}
add method not supported between ptolemy.data.StringToken &apos;&quot;foo&quot;&apos; and ptolemy.data.ArrayToken &apos;{1, 2}&apos; because the types are incomparable.
&gt;&gt; [1, 2] + &quot;foo&quot;
&quot;[1, 2]foo&quot;
&gt;&gt; &quot;foo&quot; + [1, 2]
&quot;foo[1, 2]&quot;
Also, all of these cases must be captured in a regressions test.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>1012</commentid>
<comment_count>3</comment_count>
<who name="Marten Lohstroh">marten@eecs.berkeley.edu</who>
<bug_when>2015-02-07 18:42:18 -0800</bug_when>
<work_time>5.0</work_time>
<thetext>Ptolemy II supports something akin to what in MatLAB is referred to as scalar expansion; the addition of a token of base type to an array (or vice versa) will result in that token being added to each element of the array. Addition is overloaded as to mean concatenation when used between strings. String concatenation, however, is not commutative. Nevertheless, we should expect the add operation between arrays and different type tokens is not dependent on the order of its operands. Hence, we now have:
&gt;&gt; {1, 2} + &quot;foo&quot;
{&quot;1foo&quot;, &quot;2foo&quot;}
&gt;&gt; &quot;foo&quot; + {1, 2}
{&quot;foo1&quot;, &quot;foo2&quot;}
The behavior between matrices and strings, however, is different because Matrix &lt;= String in the type lattice. Therefore, adding a string to a matrix will cause the matrix to be converted into a string first. Therefore, the following remains:
&gt;&gt; [1, 2] + &quot;foo&quot;
&quot;[1, 2]foo&quot;
&gt;&gt; &quot;foo&quot; + [1, 2]
&quot;foo[1, 2]&quot;
This may seem odd or inconsistent with the add operation for arrays, but it is directly implied by the design of the type lattice. Moreover, since there does not exist a StringMatrix, it seems unlikely that anyone would want to perform an add operation between the elements of a matrix and a string.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>185</bug_id>
<creation_ts>2008-09-17 10:47:29 -0700</creation_ts>
<short_desc>coloring relation groups</short_desc>
<delta_ts>2008-09-17 10:47:29 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-dNQnVjuwLScGgySndGmU4r18FGnZaa3c5q3f8wFdq0Y</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>296</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-17 10:47:29 -0700</bug_when>
<thetext>vergil.actor.LinkController has a FIXME where coloring relation groups doesn&apos;t work quite right
(From Edward&apos;s bug list)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>186</bug_id>
<creation_ts>2008-09-17 10:48:28 -0700</creation_ts>
<short_desc>IterateOverArray: problem with undo</short_desc>
<delta_ts>2008-09-17 10:48:28 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-MgRAclnmr45K1G4ss_OPqcuRAtk1gb8cEzXwAFsCGRE</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>297</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-17 10:48:28 -0700</bug_when>
<thetext>IterateOverArray: When you drop in an actor, and then another actor,
and then select &quot;undo,&quot; the second actor is deleted without the
first one being re-created. Thus, undo is only a partial undo. The
fix to this is extremely complicated. Probably the only viable
mechanism is to use UndoStackAttribute.getUndoInfo() to get the undo
stack and then to manipulate the contents of that stack directly.
(From Edward&apos;s bug list)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>317</bug_id>
<creation_ts>2009-12-07 08:46:05 -0800</creation_ts>
<short_desc>Additional Top and Bottom needed for interacting with StructuredProperty?</short_desc>
<delta_ts>2011-02-26 22:38:26 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Properties</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>WONTFIX</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Elizabeth Latronico">beth@berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-SVaVluZnOo_xxt-Pb2fCX4SKpXawXkLLZw_bLG37seY</token>
<group id="19">pthomas</group>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>636</commentid>
<comment_count>0</comment_count>
<who name="Elizabeth Latronico">beth@berkeley.edu</who>
<bug_when>2009-12-07 08:46:05 -0800</bug_when>
<thetext>Currently lattice designers create one lattice with individual scalar properties. For example, “Unknown”, “Const”, and “Non-const” for the constant/non-constant lattice.
However many models might also use StructuredProperties, where a set of individual properties is assembled into a StructuredProperty. Currently StructuredProperty is implemented as not comparable to scalar properties, so the least upper bound is “Top” and the greatest lower bound is “Bottom”.
+) Do we need to insert an extra “Top” and “Bottom” element then? Or can we re-use the Top and Bottom of the scalar lattice somehow?
+) What does this mean for lattices where the Top and Bottom are valid solutions and are something other than a generic Top and Bottom? For example, Non-const is the top element in the constant/non-constant lattice and is a valid solution. Should there be another Top added above that? That seems different in intent from the original scalar lattice.
+) Alternatively, should the StructuredProperty be allowed to have a single property for the whole structure in addition to properties for the fields? How would this property be determined and what are any monotonicity concerns?
+) How should the choices be communicated to the user?</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>737</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2011-02-26 22:38:26 -0800</bug_when>
<thetext>ptolemy.data.properties was removed</thetext>
</long_desc>
</bug>
<bug>
<bug_id>318</bug_id>
<creation_ts>2009-12-07 08:57:47 -0800</creation_ts>
<short_desc>How to exclude certain inequalities and/or property terms from being considered by the constraint solver?</short_desc>
<delta_ts>2011-02-26 22:38:24 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Properties</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>WONTFIX</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Elizabeth Latronico">beth@berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-7PEriUy-ddFtiETTtMLiJOc7JNCN0gS2FG8j43Bh0YA</token>
<group id="19">pthomas</group>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>637</commentid>
<comment_count>0</comment_count>
<who name="Elizabeth Latronico">beth@berkeley.edu</who>
<bug_when>2009-12-07 08:57:47 -0800</bug_when>
<thetext>The current attempt at this is the isEffective() method for PropertyTerms.
+) What is the appropriate unit to mark as not effective? Should it be a PropertyTerm, and then all inequalities using the term should then be disregarded? Or should it be a whole inequality?
+) If PropertyTerms are no longer the appropriate unit to mark, how do we deal with the user interaction side of the issue? Part of the original intent was to use this analysis to mark unreachable items / items that we want to ignore as ineffective without doing a model transformation. For example, if I want to know what the property resolution would be if I deleted a certain actor, I could mark all PropertyTerms from that actor as ineffective. Then inequalities that use this PropertyTerm would be marked as ineffective. But if I can only mark a whole inequality as ineffective, how do I do that?
+) How should this feature interact with the DeltaConstraintSolver? It should also be useful here.
+) What is affected for Beth/Charles if the current stuff is deleted? (For Beth/Charles to figure out).</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>736</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2011-02-26 22:38:24 -0800</bug_when>
<thetext>ptolemy.data.properties was removed</thetext>
</long_desc>
</bug>
<bug>
<bug_id>514</bug_id>
<creation_ts>2012-07-11 16:26:22 -0700</creation_ts>
<short_desc>Opening a model from File-&gt;Recent Files occasionally results in an error.</short_desc>
<delta_ts>2013-04-24 17:49:42 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>9.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Linux</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>WORKSFORME</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Marten Lohstroh">marten@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-aVmqXHgiTBq5qgEDnmTzarbSmRKCde4-J3JvNoRQ32k</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>975</commentid>
<comment_count>0</comment_count>
<who name="Marten Lohstroh">marten@eecs.berkeley.edu</who>
<bug_when>2012-07-11 16:26:22 -0700</bug_when>
<thetext>Not sure of the precondition, the error is not always thrown.
Error message: &quot;Error reading &lt;file&gt; No associated Tableau! Can&apos;t open a file.&quot;
Stack trace:
java.lang.Exception: No associated Tableau! Can&apos;t open a file.
at ptolemy.actor.gui.TableauFrame._read(TableauFrame.java:1034)
at ptolemy.gui.Top$HistoryMenuListener.actionPerformed(Top.java:1973)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>1001</commentid>
<comment_count>1</comment_count>
<who name="Marten Lohstroh">marten@eecs.berkeley.edu</who>
<bug_when>2013-04-24 17:29:38 -0700</bug_when>
<thetext>Not able to reproduce anymore, assuming this is fixed.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>1002</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2013-04-24 17:49:42 -0700</bug_when>
<thetext>I agree that this is not reproducible, so I&apos;m changing it to &quot;Resolved&quot; -&gt; &quot;Worksforme&quot;.
I took a quick look at this and it looks like the error is thrown if the _tableau in TableauFrame is null. One way to set _tableau to null is from the TableauFrame constructor. Another way is that TableauFrame.setTableau() could be called with a null argument. TableauFrame.dispose() calls setTableau(null).
The only way I can see this happening is if there is a TableauFrame that somehow has a null _tableau, either by construction or by calling dispose().
Anyway, this seems unlikely, and as we have not had other reports of this problem, closing it is the correct thing to do.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>237</bug_id>
<creation_ts>2009-02-12 17:42:13 -0800</creation_ts>
<short_desc>ArrowKeySensor does not work well in combination with Continuous domain</short_desc>
<delta_ts>2009-02-12 17:42:13 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164--pZTwGv94RNxWOpBnDTeE_fGCdxrM6WMLwSXOZZd3_s</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>404</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-02-12 17:42:13 -0800</bug_when>
<thetext>Next to this bug https://chess.eecs.berkeley.edu/bugzilla/show_bug.cgi?id=236
the output is not determinate.
Normally on key pressed a one will be send and on key release a zero will be send, but in Continuous you often only see one of the two and most the time only zero.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>171</bug_id>
<creation_ts>2008-09-17 10:18:30 -0700</creation_ts>
<short_desc>Create hierarchy loses information if you don&apos;t select a wire</short_desc>
<delta_ts>2008-09-24 18:08:45 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-f8Pfh5daFP1L7qx4soJpbwFzDqTfolQs1UfKkoV19SU</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>282</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-17 10:18:30 -0700</bug_when>
<thetext>You loose the connection
(from Edward&apos;s bug list)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>188</bug_id>
<creation_ts>2008-09-17 10:51:10 -0700</creation_ts>
<short_desc>IterateOverArray: problem when dropping new actor</short_desc>
<delta_ts>2008-09-17 10:51:10 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-V5Y_DtxHehsM0igqwtpbVCnGZh4F0A-IsjiSTJxFd6U</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>299</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-17 10:51:10 -0700</bug_when>
<thetext>IterateOverArray: If you drop a new actor onto an IterateOverArray
in a subclass, it will simply acquire the new contents, but not
actually do anything with them. It should somehow refuse to accept
the new object in the subclass, since to do so, it would have to
delete the original object defined in the base class, and this would
violate the derived invariant.
(From Edward&apos;s bug list)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>172</bug_id>
<creation_ts>2008-09-17 10:24:17 -0700</creation_ts>
<short_desc>Remove DelayCausalityInterface and clean up TimedDelay</short_desc>
<delta_ts>2008-09-17 11:21:20 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-iUXWZuPj0j8C5bX6aR6iFW5nGORyBRvL41CN_jyKmyc</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>283</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-17 10:24:17 -0700</bug_when>
<thetext>(From Edward&apos;s bug list)
For Patricia Derler (I can&apos;t assign bugs apparently...)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>302</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-17 10:57:46 -0700</bug_when>
<thetext>Hi Bert, I hopefully set up your permissions so that you can assign bugs.
However, to assign a bug to Patricia, she would have to go to
http://chess.eecs.berkeley.edu/bugzilla so that her login is in the Bugzilla
system.
</thetext>
</long_desc>
</bug>
<bug>
<bug_id>189</bug_id>
<creation_ts>2008-09-17 10:53:11 -0700</creation_ts>
<short_desc>IterateOverArray: problem with undo after changes in base class</short_desc>
<delta_ts>2008-09-17 10:53:11 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340164-8FXFoEf_Sr3pSduYMbqVqePWUuhd1Q4z5KQtEq6uFmI</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>300</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-17 10:53:11 -0700</bug_when>
<thetext>IterateOverArray: If an instance of IterateOverArray in a derived
class has overridden values of parameters, those are lost if
contained entity of the instance in the base class is replaced and
then an undo is requested.
(From Edward&apos;s bug list)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>173</bug_id>
<creation_ts>2008-09-17 10:26:46 -0700</creation_ts>
<short_desc>Creating text effigies for displays increments the workspace version</short_desc>
<delta_ts>2008-09-17 10:26:46 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Gui</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-k0sY2wjZHs7IIBWzZSjwCbF94tKzxmPXqHWsKw0drpQ</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>284</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-17 10:26:46 -0700</bug_when>
<thetext>This is probably not necessary, and it causes static analysis to be redone on the next execution.
(From Edward&apos;s bug list)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>190</bug_id>
<creation_ts>2008-09-17 10:54:06 -0700</creation_ts>
<short_desc>IterateOverArray: Icon not correctly copied</short_desc>
<delta_ts>2008-09-17 10:54:06 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>actors</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-qFNq9O4uzJ9s64hjWYWr74khUOdUlcBP8UdteyitRYM</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>301</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-17 10:54:06 -0700</bug_when>
<thetext>IterateOverArray: When an actor with a display icon like Const, Expression,
or MathFunction is put into IterateOverArray, the CopyCatIcon
doesn&apos;t reflect the text display.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>206</bug_id>
<creation_ts>2008-09-30 10:51:29 -0700</creation_ts>
<short_desc>Width interface does not work after a ArrayToElements</short_desc>
<delta_ts>2008-09-30 10:51:29 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-6vI3khJPJOSNY6Y2WYCDRmo67-RMkaPodq4WQAib7a4</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>338</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-30 10:51:29 -0700</bug_when>
<thetext>See model in attachment. If the width of the relation between ArrayToElements and AddSubtract is set to 8, all channels are taken into account and the display , displays 8, if you use 0 as width only the first channel is taken into account.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>191</bug_id>
<creation_ts>2008-09-17 11:05:40 -0700</creation_ts>
<short_desc>modal models can&apos;t have PortParameter</short_desc>
<delta_ts>2008-09-17 11:05:40 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>ModalModel</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-jEoKGOYg9oqeRY-ajogsU5qnZKEBdBZcKHP_VKF7a8o</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>303</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-17 11:05:40 -0700</bug_when>
<thetext>looks like modal models can&apos;t have PortParameter (replication
doesn&apos;t work). Try to create a variant of the HDF Fibonnacci with
explicit feedback.
(From Edward&apos;s bug list)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>502</bug_id>
<creation_ts>2012-05-09 15:04:20 -0700</creation_ts>
<short_desc>Expression language has problems with String.format()</short_desc>
<delta_ts>2012-05-09 15:04:20 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>tokens</component>
<version>9.0.beta</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-I5yshA1xcdSmRQFramRvNLAmwYhliX3lI3mKL4nEgig</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>935</commentid>
<comment_count>0</comment_count>
<attachid>43</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-05-09 15:04:20 -0700</bug_when>
<thetext>Created attachment 43
Ptolemy model that calls String.format()
Guy Durrieu wrote:
--start--
I read in the &quot;Expressions&quot; chapter of the doc (p. 25) that the static
methods of java.lang.String are available as functions in the expression
language. I would like to use the format method, which is a static one,
within an expression actor, in order to produce textual messages during
simulation, but I can&apos;t find how to do that (e.g. in order to output
double values with a specified number of digits).
Is it possible ?
--end--
This looks like a limitation in the expression language.
The executive summary is that tokens seem to be getting converted to strings.
The expression language has a hard time creating an array of Objects, where
elements of the array are expected to be types like java.lang.Double.
The short answer is that if you really want to use String.format(), I suggest writing an actor that does job. :-)
Here are the details:
There are two String.format() methods:
static String format(Locale l, String format, Object... args)
static String format(String format, Object... args)
I can use the second one in an Expression actor.
The formatString.xml model that is attached has a StringConstant connected
to an Expression with the value:
format(&quot;MyString: %s&quot;, {input})
The model works as expected.
Unfortunately, trying to format Integers does not work.
The attached formatInteger.xml model has
format(&quot;MyString: %d&quot;, {input})
This fails with
&gt; ptolemy.kernel.util.IllegalActionException: Expression invalid.
&gt; in .formatInteger.Expression
&gt; Because:
&gt; Error invoking function public static java.lang.String java.lang.String.format(java.lang.String,java.lang.Object[])
&gt;
&gt; Because:
&gt; d != ptolemy.data.IntToken
&gt;
...
&gt; Caused by: java.util.IllegalFormatConversionException: d != ptolemy.data.IntToken
&gt; at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:3999)
&gt; at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2709)
&gt; at java.util.Formatter$FormatSpecifier.print(Formatter.java:2661)
&gt; at java.util.Formatter.format(Formatter.java:2433)
&gt; at java.util.Formatter.format(Formatter.java:2367)
&gt; at java.lang.String.format(String.java:2769)
&gt; at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
&gt; at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
&gt; at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
&gt; at java.lang.reflect.Method.invoke(Method.java:597)
&gt; at ptolemy.data.expr.CachedMethod.invoke(CachedMethod.java:569)
&gt; at ptolemy.data.expr.ParseTreeEvaluator._functionCall(ParseTreeEvaluator.java:1425)
&gt; at ptolemy.data.expr.ParseTreeEvaluator.visitFunctionApplicationNode(ParseTreeEvaluator.java:553)
&gt; at ptolemy.data.expr.ASTPtFunctionApplicationNode.visit(ASTPtFunctionApplicationNode.java:96)
&gt; at ptolemy.data.expr.ParseTreeEvaluator.evaluateParseTree(ParseTreeEvaluator.java:105)
&gt; at ptolemy.actor.lib.Expression.fire(Expression.java:233)
&gt; at ptolemy.actor.AtomicActor.iterate(AtomicActor.java:461)
&gt; at ptolemy.actor.sched.StaticSchedulingDirector.fire(StaticSchedulingDirector.java:192)
&gt; at ptolemy.actor.CompositeActor.fire(CompositeActor.java:458)
&gt; at ptolemy.actor.Manager.iterate(Manager.java:747)
&gt; at ptolemy.actor.Manager.execute(Manager.java:351)
&gt; at ptolemy.actor.Manager.run(Manager.java:1159)
&gt; at ptolemy.actor.Manager$PtolemyRunThread.run(Manager.java:1689)
What&apos;s happening here is that the String format() method is saying
that %d is not a ptolemy.data.IntToken. format is expecting a java.lang.Integer,
not a ptolemy.data.IntToken.
I tried various manipulations to create java.lang.Integer.
1) Use
format(&quot;MyString: %d&quot;, {valueOf(input.intValue())})
The idea here is that the java.lang.Integer.valueOf(int) method will be called which will
create a java.lang.Integer
Unfortunately, I get a stack trace:
&gt; ptolemy.kernel.util.IllegalActionException: Expression invalid.
&gt; in .formatInteger.Expression
&gt; Because:
&gt; type not found: char
&gt; at ptolemy.actor.lib.Expression.fire(Expression.java:238)
&gt; at ptolemy.actor.AtomicActor.iterate(AtomicActor.java:461)
&gt; at ptolemy.actor.sched.StaticSchedulingDirector.fire(StaticSchedulingDirector.java:192)
&gt; at ptolemy.actor.CompositeActor.fire(CompositeActor.java:458)
&gt; at ptolemy.actor.Manager.iterate(Manager.java:747)
&gt; at ptolemy.actor.Manager.execute(Manager.java:351)
&gt; at ptolemy.actor.Manager.run(Manager.java:1159)
&gt; at ptolemy.actor.Manager$PtolemyRunThread.run(Manager.java:1689)
&gt; Caused by: ptolemy.kernel.util.InternalErrorException: type not found: char
&gt; at ptolemy.data.expr.ConversionUtilities.convertJavaTypeToTokenType(ConversionUtilities.java:337)
&gt; at ptolemy.data.expr.CachedMethod._getConversion(CachedMethod.java:813)
&gt; at ptolemy.data.expr.CachedMethod._polymorphicGetMethod(CachedMethod.java:902)
&gt; at ptolemy.data.expr.CachedMethod._findFUNCTION(CachedMethod.java:977)
&gt; at ptolemy.data.expr.CachedMethod.findMethod(CachedMethod.java:336)
&gt; at ptolemy.data.expr.ParseTreeEvaluator._functionCall(ParseTreeEvaluator.java:1416)
&gt; at ptolemy.data.expr.ParseTreeEvaluator.visitFunctionApplicationNode(ParseTreeEvaluator.java:553)
&gt; at ptolemy.data.expr.ASTPtFunctionApplicationNode.visit(ASTPtFunctionApplicationNode.java:96)
&gt; at ptolemy.data.expr.ParseTreeEvaluator._evaluateChild(ParseTreeEvaluator.java:1360)
&gt; at ptolemy.data.expr.ParseTreeEvaluator._evaluateAllChildren(ParseTreeEvaluator.java:1314)
&gt; at ptolemy.data.expr.ParseTreeEvaluator.visitArrayConstructNode(ParseTreeEvaluator.java:158)
&gt; at ptolemy.data.expr.ASTPtArrayConstructNode.visit(ASTPtArrayConstructNode.java:64)
&gt; at ptolemy.data.expr.ParseTreeEvaluator._evaluateChild(ParseTreeEvaluator.java:1360)
&gt; at ptolemy.data.expr.ParseTreeEvaluator.visitFunctionApplicationNode(ParseTreeEvaluator.java:309)
&gt; at ptolemy.data.expr.ASTPtFunctionApplicationNode.visit(ASTPtFunctionApplicationNode.java:96)
&gt; at ptolemy.data.expr.ParseTreeEvaluator.evaluateParseTree(ParseTreeEvaluator.java:105)
&gt; at ptolemy.actor.lib.Expression.fire(Expression.java:233)
&gt; ... 7 more
&gt; Caused by: ptolemy.kernel.util.InternalErrorException: type not found: char
&gt; at ptolemy.data.expr.ConversionUtilities.convertJavaTypeToTokenType(ConversionUtilities.java:337)
&gt; at ptolemy.data.expr.CachedMethod._getConversion(CachedMethod.java:813)
&gt; at ptolemy.data.expr.CachedMethod._polymorphicGetMethod(CachedMethod.java:902)
&gt; at ptolemy.data.expr.CachedMethod._findFUNCTION(CachedMethod.java:977)
&gt; at ptolemy.data.expr.CachedMethod.findMethod(CachedMethod.java:336)
&gt; at ptolemy.data.expr.ParseTreeEvaluator._functionCall(ParseTreeEvaluator.java:1416)
&gt; at ptolemy.data.expr.ParseTreeEvaluator.visitFunctionApplicationNode(ParseTreeEvaluator.java:553)
&gt; at ptolemy.data.expr.ASTPtFunctionApplicationNode.visit(ASTPtFunctionApplicationNode.java:96)
&gt; at ptolemy.data.expr.ParseTreeEvaluator._evaluateChild(ParseTreeEvaluator.java:1360)
&gt; at ptolemy.data.expr.ParseTreeEvaluator._evaluateAllChildren(ParseTreeEvaluator.java:1314)
&gt; at ptolemy.data.expr.ParseTreeEvaluator.visitArrayConstructNode(ParseTreeEvaluator.java:158)
&gt; at ptolemy.data.expr.ASTPtArrayConstructNode.visit(ASTPtArrayConstructNode.java:64)
&gt; at ptolemy.data.expr.ParseTreeEvaluator._evaluateChild(ParseTreeEvaluator.java:1360)
&gt; at ptolemy.data.expr.ParseTreeEvaluator.visitFunctionApplicationNode(ParseTreeEvaluator.java:309)
&gt; at ptolemy.data.expr.ASTPtFunctionApplicationNode.visit(ASTPtFunctionApplicationNode.java:96)
&gt; at ptolemy.data.expr.ParseTreeEvaluator.evaluateParseTree(ParseTreeEvaluator.java:105)
&gt; at ptolemy.actor.lib.Expression.fire(Expression.java:233)
&gt; at ptolemy.actor.AtomicActor.iterate(AtomicActor.java:461)
&gt; at ptolemy.actor.sched.StaticSchedulingDirector.fire(StaticSchedulingDirector.java:192)
&gt; at ptolemy.actor.CompositeActor.fire(CompositeActor.java:458)
&gt; at ptolemy.actor.Manager.iterate(Manager.java:747)
&gt; at ptolemy.actor.Manager.execute(Manager.java:351)
&gt; at ptolemy.actor.Manager.run(Manager.java:1159)
&gt; at ptolemy.actor.Manager$PtolemyRunThread.run(Manager.java:1689)
The offending code is in ptolemy.data.expr.ConversionUtilities:
&gt; /** Convert a java class, representing a Java type, to a
&gt; * corresponding instance of a ptolemy type object, as consistent
&gt; * with the convertJavaTypeToToken method.
&gt; * @exception IllegalActionException If the token class is not
&gt; * recognized, or creating the type fails.
&gt; */
&gt; public static Type convertJavaTypeToTokenType(Class tokenClass)
&gt; throws ptolemy.kernel.util.IllegalActionException {
&gt; try {
&gt; if (tokenClass.equals(ptolemy.data.Token.class)) {
&gt; return BaseType.GENERAL;
&gt; }
...
&gt; } else {
&gt; // This should really never happen, since every class
&gt; // should be caught by the isAssignable test above,
&gt; // but I don&apos;t like the dangling else if.
&gt; throw new InternalErrorException(&quot;type not found: &quot;
&gt; + tokenClass);
&gt; }
It appears that this method is getting a char passed to it and because
we don&apos;t have a char type, it fails.
I tried modifying the caller so that it catches the InternalErrorException,
ignores it and moves on, but that does not help. The caller is in
data.expr.CachedMethod:
try {
// We have to do this because Java is stupid and doesn&apos;t
// give us a way to tell if primitive arguments are
// acceptable
if (formal.isPrimitive() || formal.isArray()) {
try {
Type type = ConversionUtilities
.convertJavaTypeToTokenType(formal);
if (ptolemy.graph.CPO.LOWER == TypeLattice
.compare(actual, type)) {
return new TypeArgumentConversion(type, NATIVE_CONVERSION);
}
} catch (InternalErrorException ex) {
// if formal is a char, then convertJavaTypeToTokenType(formal)
// will throw an InternalErrorException
// Ignore.
}
}
} catch (IllegalActionException ex) {
// Ignore..
// ex.printStackTrace();
}
With the above change, and the expression:
format(&quot;MyString: %d&quot;, {valueOf(input.intValue())})
formatInteger.xml fails with:
&gt; ptolemy.kernel.util.IllegalActionException: Expression invalid.
&gt; in .formatInteger.Expression
&gt; Because:
&gt; Error invoking function public static java.lang.String java.lang.String.format(java.lang.String,java.lang.Object[])
&gt;
&gt; Because:
&gt; d != ptolemy.data.StringToken
So here, the problem is that the Ptolemy IntToken is getting converted to a
StringToken.
It looks like this method is being selected:
public static java.lang.String java.lang.String.valueOf(java.lang.Object)
instead of
public static java.lang.Integer java.lang.Integer.valueOf(int)
I started looking in to why this occurs, but have run out of time for now.
I tried using the &quot;cast&quot; expression language function, but that did not help.
I&apos;ll see if I can take a further look into the expression language issues, it would be nice if this worked.
_Christopher</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>43</attachid>
<date>2012-05-09 15:04:20 -0700</date>
<delta_ts>2012-05-09 15:04:20 -0700</delta_ts>
<desc>Ptolemy model that calls String.format()</desc>
<filename>format.xml</filename>
<type>text/xml</type>
<size>4115</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340165-NRBBCZCNIQjeT4g-LczEaz1ZugzJXrmEQH262c9ipTQ</token>
</attachment>
</bug>
<bug>
<bug_id>518</bug_id>
<creation_ts>2012-07-21 21:25:06 -0700</creation_ts>
<short_desc>Removal of a port type declaration does not propagate to the model</short_desc>
<delta_ts>2013-04-24 17:02:13 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>MoML</component>
<version>9.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Marten Lohstroh">marten@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.25</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-X_ZLZsg0FZxvjYwz-LDzVG7RAxk5xqYIp2xoSncsFgI</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>980</commentid>
<comment_count>0</comment_count>
<who name="Marten Lohstroh">marten@eecs.berkeley.edu</who>
<bug_when>2012-07-21 21:25:06 -0700</bug_when>
<thetext>Thanks to Hogan, D. (GE Energy) for pointing this out:
After setting the input field &apos;Type&apos; in the &apos;Configure Ports&apos;-panel to &quot;&quot; (empty) and hitting the &apos;Commit&apos; button, a MoML change request is issued that looks like this: &apos;&lt;group&gt;&lt;port name=&quot;foo&quot;&gt;&lt;deleteProperty name=&quot;_type&quot;/&gt;&lt;/port&gt;&apos;.
This request is parsed by the MoMLParser and accordingly, the attribute is removed from the MoML representation. However, unlike a regular type change where elementName.equals(&quot;property&quot;) (see MoMLParser:3099) rather than a removal where elementName.equals(&quot;deleteProperty&quot;) (see MoMLParser:2490), the running model doesn&apos;t get notified that the previous type is now invalid.
Note that upon a regular property change MoMLParser.startElement() calls _handlePropertyElement(), which then adds the parameter to _paramsToParse after which it is retrieved in handler.endDocument() which then calls param.validate().
If the input field is set to &quot;&quot;, the attribute only gets removed from the MoML representation, but the model is unaware of this. Currently, the old type persists. The only way to overcome this problem is to (save and) re-open the model, which forces Virgel to entirely parse the MoML description and build up the model from scratch, which will set the type in question to UNKNOWN.
The desired behavior would be that the requested type changes immediately to UNKNOWN.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>981</commentid>
<comment_count>1</comment_count>
<who name="Marten Lohstroh">marten@eecs.berkeley.edu</who>
<bug_when>2012-07-21 21:36:34 -0700</bug_when>
<thetext>As a quick fix I added on PortConfigurerDialog.java:582
if (tableValue.equals(&quot;&quot;)) {
tiop.setTypeEquals(BaseType.UNKNOWN);
}
This bypasses the MoMLParser and sets the type directly. The behavior is now as desired, but in the end it might be better to adapt the parser itself.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>982</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-07-22 08:15:19 -0700</bug_when>
<thetext>Here&apos;s my post to ptolemy-hackers.
I think there is a bug in that Manager.resolveTypes() is failing to redo
type resolution
--start--
I took a look at the ptolemy/actor/gui/PortConfigurerDialog.java and it looks
like when I use the dialog to change the type from double to nothing, then
the following moml request is issued:
&lt;group&gt;&lt;port name=&quot;foo&quot;&gt;&lt;deleteProperty name=&quot;_type&quot;/&gt;&lt;/port&gt;
Looking at the MoML for the RecordDisassembler, I see that the _type
property is not present:
&lt;entity name=&quot;RecordDisassembler&quot; class=&quot;ptolemy.actor.lib.RecordDisassembler&quot;&gt;
&lt;property name=&quot;_location&quot; class=&quot;ptolemy.kernel.util.Location&quot; value=&quot;{200.0, 105.0}&quot;&gt;
&lt;/property&gt;
&lt;port name=&quot;foo&quot; class=&quot;ptolemy.actor.TypedIOPort&quot;&gt;
&lt;property name=&quot;output&quot;/&gt;
&lt;/port&gt;
&lt;/entity&gt;
The problem is that when we delete the _type property, we need to tell the
type system that any cached type data is invalid. One way to do this is to find the
Director and call invalidateResolvedTypes. I hacked in some code to do this, but then
realized that problem is that Manager.resolveTypes() was being called even without my hacks.
So, it seems like the problem is that Manager.resolveTypes() is incorrectly holding on to
some data. The way to replicate the problem is to put a breakpoint at Manager.resolveTypes(),
follow the steps below and note that after setting the type to blank, resolveTypes() is still called.
Marten, could you take a look?
BTW - Edward added an attribute called ShowTypes that when dragged into a model shows
the types. In the left hand actor pane, see Utilities -&gt; Analysis -&gt; ShowTypes.
_Christopher
On 7/18/12 2:39 PM, Hogan, D. (GE Energy) wrote:
&gt; Attached is a model file demonstrating this issue. I&apos;m trying to
&gt; understand why this happens and if it should happen. This is the setup
&gt; of the moml file in case the attachment gets stripped:
&gt;
&gt; * SDF director
&gt; * Const actor with { foo = 5, bar = &quot;nil&quot; } as the value and
&gt; firing count set to 1.
&gt; * RecordDisassembler actor with input port connected to the const
&gt; actor.
&gt; o Added a new output parameter called &quot;foo&quot; and leave the type
&gt; undeclared
&gt; * AddSubtract actor with the add port connected to
&gt; RecordDisassembler&apos;s &quot;foo&quot; output port.
&gt; * Display actor connected to the AddSubtract output
&gt;
&gt; If I change AddSubtract.plus&apos; type to double, run it and change the type
&gt; back to an empty string, it is still resolved to double. All of the
&gt; associated input and output ports are resolved to double even if foo is
&gt; an int. No actor has a port type of double so why is it still resolved
&gt; to double? The setup of the actors in the GUI is identical to when it
&gt; was first opened, but the result is different (5.0 vs. 5 when foo=5).
&gt;
&gt; If I save the file at this point, it reverts back to the old behavior
&gt; where the types are resolved properly. AddSubtract.plus&apos; type is still
&gt; empty but setting foo=5 displays 5. This is strange when I get
&gt; different answers before and after the save.
&gt;
&gt; Why does changing the type back to an empty string keep the double type
&gt; resolution until I reload the file? Shouldn&apos;t setting the type to an
&gt; empty string be equivalent to the default undeclared? Or shouldn&apos;t it
&gt; reject my change to an empty string since it&apos;s effectively still double
&gt; until I reload the file?
&gt;
&gt; I think I should be able to open that file, run it (get 5 as output),
&gt; change AddSubtract.plus&apos; type to double, run it (get 5.0 as output),
&gt; change AddSubtract.plus&apos; type back to an empty string, run it and get 5
&gt; as the output.
--end--</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>983</commentid>
<comment_count>3</comment_count>
<attachid>48</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-07-22 08:16:35 -0700</bug_when>
<thetext>Created attachment 48
ModelThatFailsToTypeCheckAfterChangingPortType</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>997</commentid>
<comment_count>4</comment_count>
<who name="Marten Lohstroh">marten@eecs.berkeley.edu</who>
<bug_when>2013-04-24 17:00:41 -0700</bug_when>
<thetext>Could not reproduce; changing the type of RecordDisassembler.foo into double and then running the model results in a double output, then removing the type annotation and running the model again results in the original integer output. This looks like something that I ran into and fixed earlier, not being aware of this ticket. Considering this problem fixed.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>998</commentid>
<comment_count>5</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2013-04-24 17:02:13 -0700</bug_when>
<work_time>0.25</work_time>
<thetext>I can&apos;t reproduce this, I believe it was fixed.</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>48</attachid>
<date>2012-07-22 08:16:35 -0700</date>
<delta_ts>2012-07-22 08:16:35 -0700</delta_ts>
<desc>ModelThatFailsToTypeCheckAfterChangingPortType</desc>
<filename>foo_test.moml</filename>
<type>application/xml</type>
<size>4269</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340165-mHCzYQAXoZEdfX-rkALv8WVHecAtKeWmdZGddTaaCKI</token>
</attachment>
</bug>
<bug>
<bug_id>159</bug_id>
<creation_ts>2008-04-28 10:17:57 -0700</creation_ts>
<short_desc>Copernicus includes many type system classes in jarClassList</short_desc>
<delta_ts>2008-04-28 11:43:00 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Copernicus</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>20.00</estimated_time>
<remaining_time>20.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-VF4aAGeZpUPi7tP9gQacCekKJoggYo9Zw2vq0KlGbD8</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>257</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-04-28 10:17:57 -0700</bug_when>
<thetext>How to reproduce
cd $PTII
$PTII/bin/copernicus ptolemy/actor/lib/test/auto/ComplexDivide.xml
cd $PTII/ptolemy/copernicus/java/cg/ComplexDivide/
make treeShake
&quot;make treeShake&quot; fails with:
Create the minimal jar file from the final codegen version
using the jarClassList.txt file
Exception in thread &quot;main&quot; java.lang.NoClassDefFoundError: ptolemy/data/type/ObjectType$BottomClass
at ptolemy.data.type.ObjectType.&lt;clinit&gt;(ObjectType.java:344)
at ptolemy.data.type.BaseType.&lt;clinit&gt;(BaseType.java:554)
at ComplexDivide.ComplexDivide_Test1.&lt;init&gt;(Jasmin)
at ComplexDivide.ComplexDivide.&lt;init&gt;(Jasmin)
at ComplexDivide.Main.&lt;init&gt;(Jasmin)
at ComplexDivide.Main.main(Jasmin)
Caused by: java.lang.ClassNotFoundException: ptolemy.data.type.ObjectType$BottomClass
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
The reason is that ptolemy/copernicus/java/cg/ComplexDivide/jarClassList.txt
does not contain ObjectType$BottomClass.
However, this is a symptom of the problem, not the cause. The real issue
is that Copernicus is no longer fully removing the type system classes
from the output. The the codesize is quite large.
This bug is not critical in that Copernicus still works. However, Copernicus
is not as small as it should be</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>258</commentid>
<comment_count>1</comment_count>
<attachid>14</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-04-28 10:20:16 -0700</bug_when>
<thetext>Created attachment 14
ComplexDivide jarClassList - note that it contains type classes
$PTII/ptolemy/copernicus/java/cg/ComplexDivide/jarClassList.txt
Note that it contains classes from the Ptolemy type system
that should be removed.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>259</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-04-28 11:43:00 -0700</bug_when>
<thetext>I checked in a workaround for this bug that fixes the treeshaker,
However, the bug remains open because the code size is very large
because of all the Ptolemy type system classes in jarFileList.txt</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>14</attachid>
<date>2008-04-28 10:20:16 -0700</date>
<delta_ts>2008-04-28 10:20:16 -0700</delta_ts>
<desc>ComplexDivide jarClassList - note that it contains type classes</desc>
<filename>jarClassList.txt</filename>
<type>text/plain</type>
<size>14685</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340165-UG2xn_4yshSa1SekWwAK-JsfNBvrLHf_q_MZToiVg64</token>
</attachment>
</bug>
<bug>
<bug_id>175</bug_id>
<creation_ts>2008-09-17 10:28:26 -0700</creation_ts>
<short_desc>document -run and -runThenExit options to vergil</short_desc>
<delta_ts>2008-09-18 23:36:30 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Documentation</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-EeQu2B3y5q0cqMaEDFh14cHEayF3guRI-vAZdsNkxJE</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>286</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-17 10:28:26 -0700</bug_when>
<thetext>(From Edward&apos;s bug list)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>311</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-17 19:23:38 -0700</bug_when>
<thetext>I&apos;ve updated MoMLApplication so that it prints the following:
--start--
bash-3.2$ $PTII/bin/vergil -help
Usage: vergil [commonOptions] [commandSpecificOptions] [modelOrClass]
Invoke the Ptolemy II User Interface, for example:
vergil
vergil /Users/cxh/Documents/workspace/ptII/ptolemy/moml/demo/modulation.xml
vergil -single
where the latter brings up a singleWindow interface.
NOTE: properties are read from $CLASSPATH/lib/ptII.properties
The [commonOptions] can be one or more of:
-debug Enable debugging with jdb, see $PTII/doc/coding/debugging.htm
-help Print this help message
-helpall List the Ptolemy II commands that can be invoked
-jdb Run jdb instead of java, see $PTII/doc/coding/debugging.htm
-profiler Run under cpu sample profiling
-q Do not echo the command being run
-sandbox Run model under tight security, see $PTII/bin/sandbox.policy
-policyfile policyfile Run model with a specified policyfile
-v Echo the command being run
Note that not all combinations above the above arguments make sense.
Note that [commonOptions] are usually appear early in the command
Now invoking vergil -help for command-specific options:
Usage: vergil [ options ] [file ...]
Options that take values:
-class &lt;classname&gt;
-&lt;parameter name&gt; &lt;parameter value&gt;
-configuration &lt;configuration URL, defaults to ptolemy/configs/full/configuration.xml&gt;
Flags (do not take values):
-help Print this help message
-run Run the models
-runThenExit Run the model, then exit after the models finish
-test Exit after two seconds
-version Print version information
The following (mutually exclusive) flags specify alternative configurations:
-codegen Configuration to use codegen.
-dsp Configuration to use for DSP-only applications.
-full uses /Users/cxh/Documents/workspace/ptII/ptolemy/configs/full/configuration.xml
-hyvisual Configuration for Hybrid Systems
-jni Configuration for use with JNI.
-jxta uses /Users/cxh/Documents/workspace/ptII/ptolemy/configs/jxta/configuration.xml
-ptiny Configuration including only mature domains.
-ptinyKepler Configuration including only mature domains.
-vhdl Configuration to use vhdl.
-viptos Configuration for Viptos
-visualsense Configuration for VisualSense
--end--
I&apos;ll add some documentation to the usingVergil chapter sometime soon.
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>318</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-18 23:36:30 -0700</bug_when>
<thetext>I updated the Framemaker document ptIIdoc/doc/design/src/usingVergil.fm
to document the vergil command line arguments.
I&apos;m closing this bug.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>192</bug_id>
<creation_ts>2008-09-17 11:06:41 -0700</creation_ts>
<short_desc>State machine controller should function as a ScopeExtendingAttribute</short_desc>
<delta_ts>2008-09-29 12:58:25 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>ModalModel</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>REOPENED</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>cxh@eecs.berkeley.edu</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-yCNYSJX2Fzh5y9mw180Uyw5rNDnpW0F_QWo8YGAqh2o</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>304</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-17 11:06:41 -0700</bug_when>
<thetext>The state machine controller should function as a ScopeExtendingAttribute,
with its attributes visible one level up. This way, they will be
in scope for refinements.
Did Thomas fix this?
(From Edward&apos;s bug list)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>309</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-17 18:31:59 -0700</bug_when>
<thetext>Edward says:
&gt; This one may have been solved by Thomas...
&gt; I recall seeing email about this...
Ok, I&apos;m closing this one.
http://chess.eecs.berkeley.edu/ptolemy/listinfo/ptolemy/2008-May/010672.html
from Thomas says:
&gt; Hi Christopher,
&gt;
&gt; This is fixed.
Christopher Brooks wrote:
&gt; Hi Thomas,
&gt;
&gt; Your April 8, 2008 changes mean that ptolemy.data.expr now
&gt; requires the FSM domain.
&gt;
&gt; Your comment for this change was:
&gt; Miscellaneous bugfixes on the scoping of ERG and FSM actors.
&gt;
&gt;
&gt; data/expr/ModelScope.java imports these classes:
&gt; import ptolemy.domains.fsm.kernel.State;
&gt; import ptolemy.domains.fsm.modal.ModalController;
&gt;
&gt; ParseTreeEvaluator.java imports:
&gt; import ptolemy.domains.fsm.kernel.State;
&gt;
&gt; ParseTreeTypeInference.java imports:
&gt; import ptolemy.domains.fsm.kernel.State;
&gt;
&gt; Can you make it a priority to refactor this code so that it does not
&gt; import these domain specific classes?
&gt;
&gt; Perhaps the right thing would be to create an interface at that
&gt; appropriate place and have State implement that interface.
&gt; It would be best to not use reflection, instead design something
&gt; using class system instead of working around it.
&gt;
&gt; Kepler/Core is interested in having clean extension points in
&gt; the Ptolemy code. Having data/expr depend on fsm breaks our
&gt; modularity system. I&apos;m working on possible refactorings of
&gt; our code to make it easier for Kepler to use our packages.
&gt;
&gt; _Christopher
&gt;
&gt; Edwdard writes:
&gt; --------
&gt;
&gt;
&gt; One possibility is that the FSM controller could function like
&gt; a ScopeExtendingAttribute. This will require, probably, extending
&gt; the mechanism of ScopeExtendingAttribute so that an Entity can be
&gt; one rather than just an Attribute.... But the extension should be
&gt; small...
&gt;
&gt; Edward
&gt;
&gt;
&gt; At 11:03 PM 4/14/2008, Thomas Huining Feng wrote:
&gt; &gt;Hi Christopher,
&gt; &gt;
&gt; &gt;Sorry that I forgot to remove unused imports from ERG.
&gt; &gt;
&gt; &gt;For FSM, I don&apos;t know what&apos;s the best way to allow an expression in a &gt; &gt;refinement to refer to a parameter in the FSM controller.
&gt; &gt;In the model structure the refinement is another FSMActor in the modal model,
&gt; &gt;so structurally it is a sibling of the FSM controller. However, from the
&gt; &gt;user point of view, there is a containment relationship between them. So I
&gt; &gt;had to do something special to handle refinements in the expression language.
&gt; &gt; The same change affects ERG as well, because ERG subclasses FSM.
&gt; &gt;
&gt; &gt;I wondered why we decided to have refinements as siblings of the FSM
&gt; &gt; controller. It may be more convenient for the FSMDirector, but we
&gt; &gt; are paying the price of more complication in other parts.
&gt; &gt;
&gt; &gt;Christopher Brooks wrote:
&gt; &gt;&gt;Hi Thomas,
&gt; &gt;&gt;Thanks, that fixed that problem.
&gt; &gt;&gt;Now the problem is that Kepler fails to build because
&gt; &gt;&gt;ptolemy.data.expr depends on ptolemy.domains.erg and domains.fsm
&gt; &gt;&gt;I removed the dependendency on domains.erg.
&gt; &gt;&gt;Nothing in data should depend on the domains, this really breaks
&gt; &gt;&gt;modularity and means that Kepler would require those domains.
&gt; &gt;&gt;_Christopher
The ChangeLog says:
2008-05-21 tfeng
Add interface ContainmentExtender to data/expr, and make State, ModalController and Refinement in the FSM domain to implement it, so that ptolemy.data.expr package no longer depends on FSM.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>310</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-17 18:33:59 -0700</bug_when>
<thetext>I&apos;m reopening this.
Thomas wrote:
&gt; I fixed this partially.
&gt;
&gt; In an expression in the refinement, we can refer to parameters outside. Namely, &gt; those belonging to the FSM controller that contains the state that the
&gt; refinement refines. From the FSM controller, we can also refer to the
&gt; parameters in the refinement (by using state_name + &quot;.&quot; + parameter_name).
&gt;
&gt; However, we can&apos;t refer to those names on the left-hand side of an assignment
&gt; in the set actions. The reason is that FSM actor searches for those names in a
&gt; way different from the name resolution in an expression. I fixed this problem
&gt; in ERG and I will fix it in FSM as well.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>326</commentid>
<comment_count>3</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-24 21:14:28 -0700</bug_when>
<thetext>Thomas wrote:
&gt; I fixed this partially.
&gt;
&gt; In an expression in the refinement, we can refer to parameters outside. Namely, &gt; those belonging to the FSM controller that contains the state that the
&gt; refinement refines. From the FSM controller, we can also refer to the
&gt; parameters in the refinement (by using state_name + &quot;.&quot; + parameter_name).
&gt;
&gt; However, we can&apos;t refer to those names on the left-hand side of an assignment
&gt; in the set actions. The reason is that FSM actor searches for those names in a
&gt; way different from the name resolution in an expression.
Maybe something similar: You can also add parameters to the state directly (so not to the refinement), however I can&apos;t use these parameters. Both when I use them in the guard as in the set-actions of a transition I get the error message that the ID can not be resolved.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>328</commentid>
<comment_count>4</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-25 10:24:32 -0700</bug_when>
<thetext>I wrote
&lt;quote&gt;
Maybe something similar: You can also add parameters to the state directly (so
not to the refinement), however I can&apos;t use these parameters. Both when I use
them in the guard as in the set-actions of a transition I get the error message
that the ID can not be resolved.
&lt;/quote&gt;
This will give problems with the name scopes of the parameters since the refinement is directly accessible from within the scope of the modal model.
An example: Suppose we have a modal model with one state, called &lt;i&gt;State&lt;/i&gt;. &lt;i&gt;State&lt;/i&gt; has a refinement called &lt;i&gt;State&lt;/i&gt; and this one has a parameter called &lt;i&gt;test&lt;/i&gt;.
The current implementation allows to access the parameter &lt;i&gt;test&lt;/i&gt; in the refinement &lt;i&gt;State&lt;/i&gt; in a transition as State.test. We can also add the same parameter &lt;i&gt;test&lt;/i&gt; to the state &lt;i&gt;State&lt;/i&gt;, but how in earth can you make the difference between both. Will State.test be the one in the refinement or the one in the state?
I was wondering why the refinement is directly assessable from within the modal model. If you would only define them with the scope of a state you would not end up with this ambiguity and this would allow to reuse the same name for refinements in different states. In this case State.State.test would be the parameter within the refinement and State.test the one within the state.
In this case however it&apos;s better to not allow to have parameters in a state and refinements of that same state to have the same name, since this also leads to name clashes...
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>331</commentid>
<comment_count>5</comment_count>
<who name="Thomas Huining Feng">huining.feng@gmail.com</who>
<bug_when>2008-09-26 15:39:41 -0700</bug_when>
<thetext>I fixed this one in FSMActor.PortScope. It now uses ModelScope.getScopedObject() to resolve a name if it is not recognized by the previous name resolution method. ModelScope.getScopedObject() (a static method) looks up the name given a container (which is the FSMActor in this case). It searches conceptual containers of the FSMActor (i.e., the FSMActor that contains it), as well as refinements of states contained in the FSMActor.
For example, if we have this model hierarchy:
A : FSMActor
s1 : State
B : FSMActor
s2 : State
C : FSMActor
p : Parameter
s3 : State
then within B, expression &quot;s1&quot; evaulates to the state s1 (in an ObjectToken), and &quot;s2.p&quot; refers to p in the refinement (C) of s2.
This is done with the ptolemy.domains.fsm.kernel.ContainmentExtender attribute, not ScopeExtendingAttribute.
Note: I think we decided to make all refinements (regardless of their levels) children of the modal model because that saves us work in the model execution process. For example, the initialize() method invoked on the modal model automatically invokes initialize() of all the refinements. Furthermore, because a state is not a CompositeEntity, technically it is impossible to define any children for it that is ComponentEntity. As a workaround, we make the refinements children of the modal model.
I also think that we are paying a high price for this workaround.
1) Expression evaluation doesn&apos;t work immediately because the scoping isn&apos;t right. I make it work now, with an extra mechanism called ContainmentExtender.
2) Copying and pasting a state with refinement lead to dangerous result. (If the state is pasted to a different FSMActor, then it won&apos;t have refinement any more. If it is pasted to the same FSMActor, then it has the SAME refinement as the copied state&apos;s, so changes on the refinement is visible in both states.)
3) The order in which the preinitialize(), initialize(), fire(), postfire(), wrapup() methods of the refinements are called is arbitrary. That order is usually the same as the order in which those refinements are created (regardless of their depth), but if copy and paste are done, then they may not be the same any more.
I may be able to name some other disadvantages. They aren&apos;t easy to fix unless we change the refinement structure.
I&apos;m closing the bug for expression evaluation in state machines.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>332</commentid>
<comment_count>6</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2008-09-27 11:04:19 -0700</bug_when>
<thetext>Is there a test case that illustrates this bug? There probably should be, it
is fairly complex.
Also, this test in fsm/kernel fails:
==== Transition-3.1 test scope of guard and trigger expressions
==== Contents of test case:
set e0 [java::new ptolemy.actor.TypedCompositeActor]
set dir [java::new ptolemy.actor.Director $e0 dir]
set fsm [java::new ptolemy.domains.fsm.kernel.FSMActor $e0 fsm]
set s0 [java::new ptolemy.domains.fsm.kernel.State $fsm s0]
set s1 [java::new ptolemy.domains.fsm.kernel.State $fsm s1]
set t0 [java::new ptolemy.domains.fsm.kernel.Transition $fsm t0]
[java::field $s0 outgoingPort] link $t0
[java::field $s1 incomingPort] link $t0
[java::field $fsm initialStateName] setExpression s0
set p0 [java::new ptolemy.actor.TypedIOPort $fsm p0]
$p0 setInput true
set p1 [java::new ptolemy.actor.TypedIOPort $fsm p1]
$p1 setInput true
$p1 setMultiport true
set e2 [java::new ptolemy.actor.TypedAtomicActor $e0 e2]
set p2 [java::new ptolemy.actor.TypedIOPort $e2 p2]
$p2 setMultiport true
set r0 [java::new ptolemy.actor.TypedIORelation $e0 r0]
set r1 [java::new ptolemy.actor.TypedIORelation $e0 r1]
$r1 setWidth 2
$p0 link $r0
$p1 link $r1
$p2 link $r0
$p2 link $r1
$dir preinitialize
set scope1 [[$fsm getPortScope] identifierSet]
list [lsort [listToStrings $scope1]]
==== Result was:
{_iconDescription dir e2 finalStateNames fsm initialStateName p0 p0Array p0_0 p0_0Array p0_0_i\
sPresent p0_isPresent p1 p1Array p1_0 p1_0Array p1_0_isPresent p1_1 p1_1Array p1_1_isPresent p\
1_isPresent r0 r1 s0 s1 stateDependentCausality t0 this}
---- Result should have been:
{p0 p0Array p0_0 p0_0Array p0_0_isPresent p0_isPresent p1 p1Array p1_0 p1_0Array p1_0_isPresen\
t p1_1 p1_1Array p1_1_isPresent p1_isPresent stateDependentCausality}
</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>335</commentid>
<comment_count>7</comment_count>
<who name="Thomas Huining Feng">huining.feng@gmail.com</who>
<bug_when>2008-09-29 12:58:25 -0700</bug_when>
<thetext>I fixed the test case. identifierSet() of the PortScope now returns more identifiers, including the names of NamedObj&apos;s in the model that can be evaluated to ObjectTokens. I will add some test cases soon.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>178</bug_id>
<creation_ts>2008-09-17 10:33:36 -0700</creation_ts>
<short_desc>In FSM, select initial state for a state, then hit cancel. No initial state.</short_desc>
<delta_ts>2008-09-17 10:33:36 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165--v13Rw1fKC_DJBSiMkpfC_oWv3vjXhgpQOD-ndb_Rxk</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>289</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-17 10:33:36 -0700</bug_when>
<thetext>Apparently the action is not completely canceled when hitting cancel, and the information which si the initial state is already lost.
(From Edward&apos;s bug list)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>195</bug_id>
<creation_ts>2008-09-17 11:12:23 -0700</creation_ts>
<short_desc>refer to parameters of refinements</short_desc>
<delta_ts>2008-09-17 11:12:23 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>ModalModel</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-tISursbgvIq1H67kJdq3ZIRhqAdJzvbwWu213nalUlg</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>307</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-17 11:12:23 -0700</bug_when>
<thetext>It seems that guard expressions and expressions in set Actions cannot refer to the parameters of refinements... This seems wrong.
(From Edward&apos;s bug list)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>326</bug_id>
<creation_ts>2010-02-26 12:05:42 -0800</creation_ts>
<short_desc>DDF scheduler problem with SequenceToArray</short_desc>
<delta_ts>2010-02-26 12:05:42 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>DDF</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>200.00</estimated_time>
<remaining_time>200.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-u4HUHeW6QoTuvOs8m71JTJxECSn26pOu3EFzzrKIzzU</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>658</commentid>
<comment_count>0</comment_count>
<attachid>33</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2010-02-26 12:05:42 -0800</bug_when>
<thetext>Created attachment 33
Sequence To Array DDF Bug
There is a bug with the DDF Scheduler.
Details may be found at
http://mercury.nceas.ucsb.edu/kepler/pipermail/kepler-users/2010-January/001897.html
A test case is at ptolemy/domains/ddf/test/SequenceToArrayDDF.xml.
There is also a tcl test that corresponds with the model.
The fix would be complex, it would require updating the DDF Scheduler.
Edward Lee writes:
--start--
Sorry about the delay responding... Email avalanche...
I think that DDFDirector must have a rather subtle bug.
First, it defines a notion of an iteration that is questionable
because it relies on the idea that a firing may be &quot;deferrable.&quot;
Your first example (and this one) shows that it could decide
that a firing is deferrable, but it would be wrong because if
it were to fire the actor, it would no longer be deferrable.
This introduces nondeterminism in the sense that you can ask
a model to run for N iterations and get different results on
successive runs.
Second, for some reason, it stops executing if any actor that it
thinks should be able to fire doesn&apos;t. This is what is happening,
I think, when the firingCountLimit is reached for the Const actor.
The director chooses to stop executing altogether... I&apos;m not sure
why...
Edward
On 1/25/10 2:40 AM, Tomasz ?ok wrote:
&gt; Dear Edward and Christopher,
&gt;
&gt; Thank you for such deep analysis. I thought about it and it is true, that
&gt; data-dependent workflows will not always work with
&gt; &quot;requiredFiringsPerIteration&quot; parameter set.
&gt;
&gt; Please take a look at another example I am sending. It is a modification of
&gt; &quot;sta-3.xml&quot; you have sent before. My changes:
&gt; - I added some processing of the array output by Sequence to Array actor
&gt; - it checks if the length of this array is odd or even, and displays it in a
&gt; different window accordingly
&gt;
&gt; If I leave firingCountLimit as NONE in the Constant actor, then the workflow
&gt; never finishes.
&gt;
&gt; If I change firingCountLimit to 1, then interesting things happen. The workflow
&gt; works alright as long as I leave Constant value unchanged OR I add new
&gt; elements to the array in Constant. However, if I remove anything from the
&gt; Constant, then it fails to show any output again.
&gt;
&gt; It seems that DDF director notices the change of Constant, but only if the
&gt; change makes an array longer.
&gt;
&gt; Best regards,
&gt; Tomek
&gt;
&gt;
&gt; On pi?tek 22 stycznia 2010 at 17:43:43 Edward A. Lee wrote:
&gt;&gt; To add to this:
&gt;&gt;
&gt;&gt; The issue is that what it means to run a DDF model for one iteration
&gt;&gt; is rather tricky. In the model provided, it just so happened that
&gt;&gt; model stopped executing before the sink actors were fired.
&gt;&gt; Hence the lack of output.
&gt;&gt;
&gt;&gt; When using the DDF director, it is best to control the iteration
&gt;&gt; explicitly by adding a parameter called requiredFiringsPerIteration
&gt;&gt; to your sink actors. If you set the value to 1, then one iteration
&gt;&gt; of the model should include one firing of the sink actor.
&gt;&gt;
&gt;&gt; There are, I believe, two bugs in the DDF director.
&gt;&gt;
&gt;&gt; 1) It appears that even with requiredFiringsPerIteration set
&gt;&gt; to 1 in a sink actor, the iteration may stop before the sink
&gt;&gt; actor is fired. This seems to be caused in Tomasz&apos; example
&gt;&gt; by the firingCountLimit parameter of the Const actor.
&gt;&gt;
&gt;&gt; 2) Without requiredFiringsPerIteration being set, it seems
&gt;&gt; that what constitutes an iteration is nondeterminate when there
&gt;&gt; are actors whose consumption pattern is data dependent.
&gt;&gt;
&gt;&gt; These are both probably quite difficult to fix. The theory
&gt;&gt; tells us that any definition an iteration (a finite, determinate
&gt;&gt; computation) in DDF will be undecidable. Our DDF director
&gt;&gt; implementation is rather clever in defining an iteration that
&gt;&gt; is guaranteed to be finite, but not guaranteed to be determinate.
&gt;&gt; I conjecture that no strategy can guarantee both...
&gt;&gt;
&gt;&gt; So the problem may be a fundamental one, rather than a software bug.
&gt;&gt; PhD thesis topic anyone?
&gt;&gt;
&gt;&gt; Edward
&gt;&gt;
&gt;&gt; On 1/22/10 8:19 AM, Christopher Brooks wrote:
&gt;&gt;&gt; Hi Tomasz,
&gt;&gt;&gt; Edward Lee took a look at this problem yesterday and it appears
&gt;&gt;&gt; to be an bug in the DDFDirector.
&gt;&gt;&gt;
&gt;&gt;&gt; We did fix one bug in SequenceToArray where the arrayLength
&gt;&gt;&gt; PortParameter now has arrayLength.update() called in prefire()
&gt;&gt;&gt; instead of fire(). The way PortParameters work is that
&gt;&gt;&gt; update() should be called once during an iteration.
&gt;&gt;&gt;
&gt;&gt;&gt; Getting back to DDFDirector, it looks like what is happening
&gt;&gt;&gt; is that when the Const actor is analyzed to determine if it
&gt;&gt;&gt; is ready to fire, the downstream actors are also analyzed
&gt;&gt;&gt; to see if they are enabled. Unfortunately, it seems like
&gt;&gt;&gt; if the enabled state of the downstream actors is changing,
&gt;&gt;&gt; then the DDFDirector is not noticing?
&gt;&gt;&gt;
&gt;&gt;&gt; It also appears that in this context the notion of an iteration
&gt;&gt;&gt; in DDFDirector is not deterministic in this implementation.
&gt;&gt;&gt; We think that the issue has to do with firingCountLimit in the Const
&gt;&gt;&gt; being set to 1.
&gt;&gt;&gt;
&gt;&gt;&gt; The attached model is similar to your sta-1.xml except with
&gt;&gt;&gt; the following changes:
&gt;&gt;&gt; * Const.firingCountLimit was changed from 1 to NONE
&gt;&gt;&gt; * In the Display actor, a parameter named requiredFiringsPerIteration
&gt;&gt;&gt; was added and set to 1
&gt;&gt;&gt; * I set the number of iterations in the DDFDirector to 1.
&gt;&gt;&gt; The model now behaves properly when the Const is changed from
&gt;&gt;&gt; three elements to two.
&gt;&gt;&gt;
&gt;&gt;&gt; I have a test case checked in to the nightly build that illustrates
&gt;&gt;&gt; the problem, so eventually it should be fixed.
&gt;&gt;&gt;
&gt;&gt;&gt; _Christopher
&gt;&gt;&gt;
&gt;&gt;&gt; On 1/20/10 12:36 PM, Christopher Brooks wrote:
&gt;&gt;&gt;&gt; Hi Tomasz,
&gt;&gt;&gt;&gt; The problem is that in sta-1.xml, after running with
&gt;&gt;&gt;&gt; an array of three elements, and then changing the Const
&gt;&gt;&gt;&gt; to an array of two elements, the SequenceToArray actor
&gt;&gt;&gt;&gt; is not being enabled.
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; The issue seems to be with the arrayLength PortParameter
&gt;&gt;&gt;&gt; of SequenceToArray.
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; If I animate execution, then I can see that the ArrayToSequence
&gt;&gt;&gt;&gt; is firing before the ArrayLength actor. It appears that
&gt;&gt;&gt;&gt; the SequenceToArray actor is not being enabled after the arrayLength
&gt;&gt;&gt;&gt; gets updated.
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; I tried to create a regular model that illustrated this bug
&gt;&gt;&gt;&gt; by using a Sequence actor instead of a Const but could not replicate
&gt;&gt;&gt;&gt; the bug.
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; However, I was able to create a Tcl test that reads in the model, runs
&gt;&gt;&gt;&gt; it, checks the output, changes the Const and then runs the model again.
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; I&apos;ve included the Ptolemy model that is used in the test. Note that
&gt;&gt;&gt;&gt; the model writes to stdout for testing purposes.
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; I&apos;ll see if I can take a look at this with Edward.
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; _Christopher
&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt; On 1/20/10 2:17 AM, Tomasz ?ok wrote:
&gt;&gt;&gt;&gt;&gt; Hi,
&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt; I&apos;d also like to post the simplest example workflows showing exactly
&gt;&gt;&gt;&gt;&gt; when this
&gt;&gt;&gt;&gt;&gt; bug occurs.
&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt; In the attachment you can find sta-1.xml and sta-2.xml. Both workflows
&gt;&gt;&gt;&gt;&gt; produce
&gt;&gt;&gt;&gt;&gt; an array out of set of tokens.
&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt; Please load sta-1.xml and run it. You will see {&quot;aaa&quot;, &quot;bbb&quot;, &quot;ccc&quot;}
&gt;&gt;&gt;&gt;&gt; in the
&gt;&gt;&gt;&gt;&gt; display. Right next after this execution, delete the token &quot;ccc&quot; from
&gt;&gt;&gt;&gt;&gt; the
&gt;&gt;&gt;&gt;&gt; input data and run the workflow. You will get no output at all.
&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt; In the sta-2.xml do just the same steps. But in this case, you will
&gt;&gt;&gt;&gt;&gt; correctly
&gt;&gt;&gt;&gt;&gt; see {&quot;aaa&quot;, &quot;bbb&quot;, &quot;ccc&quot;} and later {&quot;aaa&quot;, &quot;bbb&quot;}
&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt; Both workflows should act the same, but only the second one works
&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt; Regards,
&gt;&gt;&gt;&gt;&gt; Tomek
&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt;</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>33</attachid>
<date>2010-02-26 12:05:42 -0800</date>
<delta_ts>2010-02-26 12:05:42 -0800</delta_ts>
<desc>Sequence To Array DDF Bug</desc>
<filename>SequenceToArrayDDF.xml</filename>
<type>text/xml</type>
<size>5987</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340165--0RYfrH6VJNB_wF8n2fO_-d5ld1ZCLuv_oiuJ4P0NM0</token>
</attachment>
</bug>
<bug>
<bug_id>525</bug_id>
<creation_ts>2013-02-27 22:54:38 -0800</creation_ts>
<short_desc>Order of parameter ports relative to other ports is not controllable.</short_desc>
<delta_ts>2013-02-27 22:54:38 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>MoML</component>
<version>9.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>Mac OS X 10.7</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Edward A. Lee">eal@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-vNGf4Q1OJCBsdAsAUmwkUy-7i8VcDBxsw1PKtV3fNng</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>994</commentid>
<comment_count>0</comment_count>
<who name="Edward A. Lee">eal@eecs.berkeley.edu</who>
<bug_when>2013-02-27 22:54:38 -0800</bug_when>
<thetext>Parameter ports always appear as the top ports in an actor. This is because when MoML is exported, parameters are exported before ports. The parameter ports are not exported to the MoML. Only the port parameters are. Since they are parameters, they are parsed first, and when the parameters are instantiated, then the corresponding ports are also instantiated.
Within a Vergil session, you can change the order by selecting a parameter port and choosing Appearance-&gt;Move to Front. This will then place it below other ports in the actor. However, this change is not persistent. If you save the model and re-open, then the parameter port is no longer below other ports.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>360</bug_id>
<creation_ts>2011-09-12 11:16:27 -0700</creation_ts>
<short_desc>input source MoML directive is not preserved.</short_desc>
<delta_ts>2011-09-12 12:21:47 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>MoML</component>
<version>8.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>INVALID</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-0XOIYp1kaqupbjfFa8QLEQiKUNH4vqwvjqvSdwWSIc4</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>750</commentid>
<comment_count>0</comment_count>
<attachid>38</attachid>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2011-09-12 11:16:27 -0700</bug_when>
<thetext>Created attachment 38
A model that imports an actor oriented class definition via the MoML input directive.
If I have a model AOCInput.xml that contains:
&lt;input source=&quot;AOCInputDefinition.xml&quot;/&gt;
and AOCInputDefinition.xml contains an actor oriented class definition, then when
I save the model, the &quot;&lt;input source&quot; directive is not used, instead the actor oriented
class definition itself is reproduced.
Attached is a test case, AOCInput.tar
1. tar -xf AOCInput.tar
2. Note that AOCInput.xml contains
&lt;input source=&quot;AOCInputDefinition.xml&quot;/&gt;
3. Open the model$PTII/bin/vergil AOCInput.tar
4. Save the model.
5. Note that AOCInput.xml contains:
&lt;class name=&quot;CompositeClassDefinition&quot; extends=&quot;ptolemy.actor.TypedCompositeActor&quot;&gt;
In the ideal world, the &lt;input source would be written out instead of the class definition.
A workaround might be to use the user library.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>752</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2011-09-12 12:21:47 -0700</bug_when>
<thetext>Actually, the MoML input directive works as expected.
The MoML docs say:
Note that when an input directive is used, the resulting model will
not retain a reference to the original input file. Thus, when the
model is exported, the contents of the input file will be exported.
See section \ref{pgfId-178064} for information about how to use actor
oriented classes, which will be updated as the underlying file changes.
One possibility might be to use the &quot;source&quot; directive.</thetext>
</long_desc>
<attachment
isobsolete="0"
ispatch="0"
isprivate="0"
>
<attachid>38</attachid>
<date>2011-09-12 11:16:27 -0700</date>
<delta_ts>2011-09-12 11:16:27 -0700</delta_ts>
<desc>A model that imports an actor oriented class definition via the MoML input directive.</desc>
<filename>AOCInput.tar</filename>
<type>application/x-tar</type>
<size>9216</size>
<attacher name="Christopher Brooks">cxh@eecs.berkeley.edu</attacher>
<token>1526340165-ovLjY0RpTqhNPHvFOy5z68f2GCzl-6zq_Zhah0NU6e8</token>
</attachment>
</bug>
<bug>
<bug_id>179</bug_id>
<creation_ts>2008-09-17 10:41:16 -0700</creation_ts>
<short_desc>After resizing an image element, drag in a new object and the image reverts to its original size</short_desc>
<delta_ts>2008-09-17 10:41:16 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-gt-jIrzMzGha4geVjzrOLMt87KV8XzOTOfD4LQCLjXs</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>290</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-17 10:41:16 -0700</bug_when>
<thetext>(From Edward&apos;s bug list)</thetext>
</long_desc>
</bug>
<bug>
<bug_id>311</bug_id>
<creation_ts>2009-11-25 13:28:18 -0800</creation_ts>
<short_desc>selecting and deleting a PortParameter gives error</short_desc>
<delta_ts>2010-01-25 16:18:15 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Parameters</component>
<version>8.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Linux</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Derik Barseghian">barseghian@nceas.ucsb.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-OOQ9Z4f_hRCAk6ida0U5LGGMrMP7MKASp3KURp4gPNA</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>629</commentid>
<comment_count>0</comment_count>
<who name="Derik Barseghian">barseghian@nceas.ucsb.edu</who>
<bug_when>2009-11-25 13:28:18 -0800</bug_when>
<thetext>This happens in Vergil and Kepler. If you click and select an area around a PortParameter to select it (and in Vergil also a FilePortParameter) and then click your backspace/delete key, you&apos;ll get an error like the below (the below is the Kepler version). However if you just click directly on the PortParameter to select it and then delete it, this doesn&apos;t happen.
om.microstar.xml.XmlException: No such property: PortParameter in .Unnamed1 in [external stream] at line 4 and column 4
at ptolemy.moml.MoMLParser._searchForAttribute(MoMLParser.java:6703)
at ptolemy.moml.MoMLParser._deleteProperty(MoMLParser.java:4546)
at ptolemy.moml.MoMLParser.access$5(MoMLParser.java:4545)
at ptolemy.moml.MoMLParser$DeleteRequest.execute(MoMLParser.java:7182)
at ptolemy.moml.MoMLParser._processPendingRequests(MoMLParser.java:6339)
at ptolemy.moml.MoMLParser.endElement(MoMLParser.java:893)
at com.microstar.xml.XmlParser.parseETag(XmlParser.java:1026)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1098)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseDocument(XmlParser.java:481)
at com.microstar.xml.XmlParser.doParse(XmlParser.java:159)
at com.microstar.xml.XmlParser.parse(XmlParser.java:132)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1403)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1375)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1531)
at ptolemy.moml.MoMLChangeRequest._execute(MoMLChangeRequest.java:270)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:171)
at ptolemy.kernel.util.NamedObj.executeChangeRequests(NamedObj.java:727)
at ptolemy.kernel.util.NamedObj.requestChange(NamedObj.java:1751)
at ptolemy.actor.CompositeActor.requestChange(CompositeActor.java:1503)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>630</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-11-30 13:49:31 -0800</bug_when>
<thetext>Fixed. Maybe.
The issue is that if I drag a region around a PortParameter,
the MoMLChangeRequest that it executed is:
&lt;group&gt;
&lt;deletePort name=&quot;PortParameter&quot;/&gt;
&lt;deleteProperty name=&quot;PortParameter&quot;/&gt;
&lt;/group&gt;
The error occurs when we do the &lt;deleteProperty...
because the property has already been deleted by the &lt;deletePort ...
The reason this occurs is because both the ParameterPort and the
PortParameter are in selection when I drag a region
around a PortParameter. The way to see this is to do the drag,
do a copy and then paste the contents into a text buffer. I get:
&lt;property name=&quot;PortParameter&quot; class=&quot;ptolemy.actor.parameters.PortParameter&quot;&gt;
&lt;property name=&quot;_hideName&quot; class=&quot;ptolemy.kernel.util.SingletonAttribute&quot;&gt;
&lt;/property&gt;
&lt;property name=&quot;_icon&quot; class=&quot;ptolemy.vergil.icon.ValueIcon&quot;&gt;
&lt;/property&gt;
&lt;property name=&quot;_iconDescription&quot; class=&quot;ptolemy.kernel.util.SingletonConfigurableAttribute&quot;&gt;
&lt;configure&gt;
&lt;svg&gt;
&lt;polyline points=&quot;-15,-15, -3,-5, -16,5&quot; style=&quot;stroke:black&quot;&gt;&lt;/polyline&gt;
&lt;polygon points=&quot;-22,-1, -22,4, -10,-5, -22,-14, -22,-9, -30,-9, -30, -1&quot; style=&quot;fill:lightGray&quot;&gt;&lt;/polygon&gt;
&lt;/svg&gt;
&lt;/configure&gt;
&lt;/property&gt;
&lt;property name=&quot;_smallIconDescription&quot; class=&quot;ptolemy.kernel.util.SingletonConfigurableAttribute&quot;&gt;
&lt;configure&gt;
&lt;svg&gt;
&lt;text x=&quot;20&quot; style=&quot;font-size:14; font-family:SansSerif; fill:black&quot; y=&quot;20&quot;&gt;-P-&lt;/text&gt;
&lt;/svg&gt;
&lt;/configure&gt;
&lt;/property&gt;
&lt;property name=&quot;_editorFactory&quot; class=&quot;ptolemy.vergil.toolbox.VisibleParameterEditorFactory&quot;&gt;
&lt;/property&gt;
&lt;property name=&quot;_location&quot; class=&quot;ptolemy.kernel.util.Location&quot; value=&quot;{190, 160}&quot;&gt;
&lt;/property&gt;
&lt;/property&gt;
&lt;port name=&quot;PortParameter&quot; class=&quot;ptolemy.actor.parameters.ParameterPort&quot;&gt;
&lt;property name=&quot;input&quot;/&gt;
&lt;property name=&quot;_location&quot; class=&quot;ptolemy.kernel.util.Location&quot; value=&quot;{170.0, 155.0}&quot;&gt;
&lt;/property&gt;
&lt;/port&gt;
If I just click on the PortParameter, copy, then paste, I get:
&lt;property name=&quot;PortParameter&quot; class=&quot;ptolemy.actor.parameters.PortParameter&quot;&gt;
&lt;property name=&quot;_hideName&quot; class=&quot;ptolemy.kernel.util.SingletonAttribute&quot;&gt;
&lt;/property&gt;
&lt;property name=&quot;_icon&quot; class=&quot;ptolemy.vergil.icon.ValueIcon&quot;&gt;
&lt;/property&gt;
&lt;property name=&quot;_iconDescription&quot; class=&quot;ptolemy.kernel.util.SingletonConfigurableAttribute&quot;&gt;
&lt;configure&gt;
&lt;svg&gt;
&lt;polyline points=&quot;-15,-15, -3,-5, -16,5&quot; style=&quot;stroke:black&quot;&gt;&lt;/polyline&gt;
&lt;polygon points=&quot;-22,-1, -22,4, -10,-5, -22,-14, -22,-9, -30,-9, -30, -1&quot; style=&quot;fill:lightGray&quot;&gt;&lt;/polygon&gt;
&lt;/svg&gt;
&lt;/configure&gt;
&lt;/property&gt;
&lt;property name=&quot;_smallIconDescription&quot; class=&quot;ptolemy.kernel.util.SingletonConfigurableAttribute&quot;&gt;
&lt;configure&gt;
&lt;svg&gt;
&lt;text x=&quot;20&quot; style=&quot;font-size:14; font-family:SansSerif; fill:black&quot; y=&quot;20&quot;&gt;-P-&lt;/text&gt;
&lt;/svg&gt;
&lt;/configure&gt;
&lt;/property&gt;
&lt;property name=&quot;_editorFactory&quot; class=&quot;ptolemy.vergil.toolbox.VisibleParameterEditorFactory&quot;&gt;
&lt;/property&gt;
&lt;property name=&quot;_location&quot; class=&quot;ptolemy.kernel.util.Location&quot; value=&quot;{190, 160}&quot;&gt;
&lt;/property&gt;
&lt;/property&gt;
My fix was to modify BasicGraphFrame._deleteMoML() so that
if the actual object is a ParameterPort, then we don&apos;t generate
the &lt;deletePort ...
This seems very funky.
One minor bug is that if I click on a PortParameter, copy, move the
original and then paste, then I get an extraneous Port arrow, which then
disappears if I move the PortParameter.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>641</commentid>
<comment_count>2</comment_count>
<who name="Derik Barseghian">barseghian@nceas.ucsb.edu</who>
<bug_when>2010-01-25 12:56:21 -0800</bug_when>
<thetext>This is happening to me again in the kepler and wrp suite.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>642</commentid>
<comment_count>3</comment_count>
<who name="Derik Barseghian">barseghian@nceas.ucsb.edu</who>
<bug_when>2010-01-25 13:04:15 -0800</bug_when>
<thetext>The stacktrace is:
com.microstar.xml.XmlException: No such property: PortParameter in .Unnamed1 in [external stream] at line 4 and column 4
at ptolemy.moml.MoMLParser._searchForAttribute(MoMLParser.java:6703)
at ptolemy.moml.MoMLParser._deleteProperty(MoMLParser.java:4546)
at ptolemy.moml.MoMLParser.access$5(MoMLParser.java:4545)
at ptolemy.moml.MoMLParser$DeleteRequest.execute(MoMLParser.java:7182)
at ptolemy.moml.MoMLParser._processPendingRequests(MoMLParser.java:6339)
at ptolemy.moml.MoMLParser.endElement(MoMLParser.java:893)
at com.microstar.xml.XmlParser.parseETag(XmlParser.java:1026)
at com.microstar.xml.XmlParser.parseContent(XmlParser.java:1098)
at com.microstar.xml.XmlParser.parseElement(XmlParser.java:924)
at com.microstar.xml.XmlParser.parseDocument(XmlParser.java:481)
at com.microstar.xml.XmlParser.doParse(XmlParser.java:159)
at com.microstar.xml.XmlParser.parse(XmlParser.java:132)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1403)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1375)
at ptolemy.moml.MoMLParser.parse(MoMLParser.java:1531)
at ptolemy.moml.MoMLChangeRequest._execute(MoMLChangeRequest.java:270)
at ptolemy.kernel.util.ChangeRequest.execute(ChangeRequest.java:171)
at ptolemy.kernel.util.NamedObj.executeChangeRequests(NamedObj.java:732)
at ptolemy.kernel.util.NamedObj.requestChange(NamedObj.java:1756)
at ptolemy.actor.CompositeActor.requestChange(CompositeActor.java:1521)
at org.kepler.gui.KeplerGraphFrame.delete(KeplerGraphFrame.java:1015)
at org.kepler.gui.KeplerGraphFrame$1.actionPerformed(KeplerGraphFrame.java:224)
at javax.swing.JComponent$ActionStandin.actionPerformed(JComponent.java:3230)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1573)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2766)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2812)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2729)
at java.awt.Component.processEvent(Component.java:5379)
at java.awt.Container.processEvent(Container.java:2010)
at java.awt.Component.dispatchEventImpl(Component.java:4068)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1828)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:681)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:940)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:810)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:645)
at java.awt.Component.dispatchEventImpl(Component.java:3941)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Window.dispatchEventImpl(Window.java:1801)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>643</commentid>
<comment_count>4</comment_count>
<who name="Derik Barseghian">barseghian@nceas.ucsb.edu</who>
<bug_when>2010-01-25 13:22:53 -0800</bug_when>
<thetext>I&apos;ll take a look since it looks like a Kepler issue. I wonder if KeplerGraphFrame&apos;s delete() override just needs to be updated to use BasicGraphFrame&apos;s _delete, or something along those lines.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>644</commentid>
<comment_count>5</comment_count>
<who name="Derik Barseghian">barseghian@nceas.ucsb.edu</who>
<bug_when>2010-01-25 16:18:15 -0800</bug_when>
<thetext>fixed in kepler r22595.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>229</bug_id>
<creation_ts>2009-01-27 11:07:04 -0800</creation_ts>
<short_desc>SDF HTVQ Demo throws a NullPointerException</short_desc>
<delta_ts>2009-01-27 11:11:55 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>SDF</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Hiren D. Patel">hiren@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>bert.rodiers@gmail.com</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-ub2sfiDSUQnNIwjkbEJ8pcwtAWpbCq2ug5-aNwqmrAg</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>388</commentid>
<comment_count>0</comment_count>
<who name="Hiren D. Patel">hiren@eecs.berkeley.edu</who>
<bug_when>2009-01-27 11:07:04 -0800</bug_when>
<thetext>1. Open the demo example ptolemy/domains/sdf/demo/HTVQ/HTVQ.xml
2. Run it.
3. Stack trace
ptolemy.kernel.util.IllegalActionException: Problem reading codebook
in .HTVQ.Encoder
Because:
java.lang.NullPointerException
at ptolemy.domains.sdf.lib.vq.HTVQEncode.initialize(HTVQEncode.java:287)
at ptolemy.actor.Director.initialize(Director.java:722)
at ptolemy.actor.Director.initialize(Director.java:695)
at ptolemy.domains.sdf.kernel.SDFDirector.initialize(SDFDirector.java:421)
at ptolemy.actor.CompositeActor.initialize(CompositeActor.java:666)
at ptolemy.actor.Manager.initialize(Manager.java:619)
at ptolemy.actor.Manager.execute(Manager.java:338)
at ptolemy.actor.Manager.run(Manager.java:1138)
at ptolemy.actor.Manager$3.run(Manager.java:1179)
Caused by: java.lang.NullPointerException
at ptolemy.domains.sdf.lib.vq.HTVQEncode._fullRead(HTVQEncode.java:476)
at ptolemy.domains.sdf.lib.vq.HTVQEncode.initialize(HTVQEncode.java:264)
... 8 more
Caused by: java.lang.NullPointerException
at ptolemy.domains.sdf.lib.vq.HTVQEncode._fullRead(HTVQEncode.java:476)
at ptolemy.domains.sdf.lib.vq.HTVQEncode.initialize(HTVQEncode.java:264)
at ptolemy.actor.Director.initialize(Director.java:722)
at ptolemy.actor.Director.initialize(Director.java:695)
at ptolemy.domains.sdf.kernel.SDFDirector.initialize(SDFDirector.java:421)
at ptolemy.actor.CompositeActor.initialize(CompositeActor.java:666)
at ptolemy.actor.Manager.initialize(Manager.java:619)
at ptolemy.actor.Manager.execute(Manager.java:338)
at ptolemy.actor.Manager.run(Manager.java:1138)
at ptolemy.actor.Manager$3.run(Manager.java:1179)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>389</commentid>
<comment_count>1</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-01-27 11:11:55 -0800</bug_when>
<thetext>Fixed by using $CLASSPATH in the path for the code book.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>16</bug_id>
<creation_ts>2006-07-19 07:41:02 -0700</creation_ts>
<short_desc>JNI does not work with long[]</short_desc>
<delta_ts>2009-03-23 14:36:29 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>jni</component>
<version>6.0-devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Christopher Brooks">cxh@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>8.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-C9eOz8oV4-VUMJ3MkMwofM7sLpZ-iCmk1RkyB3Sd-vw</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>28</commentid>
<comment_count>0</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-19 07:41:02 -0700</bug_when>
<thetext>The JNI interface does not work with long [].
See $PTII/jni/test/Streaming.xml
cd $PTII/jni/test
$PTII/bin/vergil -jni Streaming.xml
Double Click on the JNI icon:
java.lang.ClassCastException: ptolemy.data.LongToken
at jni.GenericJNIActor.fire(GenericJNIActor.java:421)
at ptolemy.actor.AtomicActor.iterate(AtomicActor.java:327)
at
ptolemy.actor.sched.StaticSchedulingDirector.fire(StaticSchedulingDirector.java:170)
at ptolemy.actor.CompositeActor.fire(CompositeActor.java:330)
at ptolemy.actor.Manager.iterate(Manager.java:663)
at ptolemy.actor.Manager.execute(Manager.java:327)
at ptolemy.actor.Manager.run(Manager.java:1037)
at ptolemy.actor.Manager$3.run(Manager.java:1078)</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>53</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2006-07-27 16:21:53 -0700</bug_when>
<thetext>JNI is not a top priority, so I&apos;m changing this from P2 to P5.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>413</commentid>
<comment_count>2</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-03-23 14:36:29 -0700</bug_when>
<work_time>8.0</work_time>
<thetext>The old ptII/jni package now handles longs.
It turns out that we need ptII/jni/launcher to run Viptos because launcher
is what is used to invoke java under Cygwin in a way that is safe for JNI.
Instead of using ptII/jni, people should use actor.lib.jni.EmbeddedCActor.
When I moved the nightly tests from Solaris to Linux, tests in the ptII/jni
package started failing. It seemed like removing the tests would mean
that launcher would no longer be tested and thus thrown into the bit bucket,
which would mean problems if anyone wanted to try to run Viptos from
the devel tree.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>230</bug_id>
<creation_ts>2009-01-27 14:53:52 -0800</creation_ts>
<short_desc>F2 to rename actors does not work correctly</short_desc>
<delta_ts>2009-01-27 17:57:25 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>7.1.devel</version>
<rep_platform>All</rep_platform>
<op_sys>All</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Hiren D. Patel">hiren@eecs.berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>bert.rodiers@gmail.com</cc>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-pJY06LMiZE66Slg8W1hBtMeEBt5G8ZIrHO2Xm4jNtpc</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>390</commentid>
<comment_count>0</comment_count>
<who name="Hiren D. Patel">hiren@eecs.berkeley.edu</who>
<bug_when>2009-01-27 14:53:52 -0800</bug_when>
<thetext>1. Select an actor.
2. Click on F2 to rename the actor.
3. Nothing happens.
Alternatively, it works when:
1. Select an actor.
2. Right click on the actor and hover over Customize
3. F2.
4. Rename dialog box pops up.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>391</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2009-01-27 15:35:26 -0800</bug_when>
<thetext>In this context, F2 is the Function 2 key at the top of the keyboard.
I have a similar issue on the Mac.
The code that defines the F2 shortcut that appears in the actor context
menu is at
ptolemy/vergil/kernel/RenameDialogAction.java
Interestingly, other shortcut keys do work, for example Apple-L works
when an actor is hightlighted.
For information about keybindings, see
http://java.sun.com/docs/books/tutorial/uiswing/misc/keybinding.html</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>392</commentid>
<comment_count>2</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2009-01-27 17:57:25 -0800</bug_when>
<thetext>Added hot key for RenameAction.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>181</bug_id>
<creation_ts>2008-09-17 10:43:08 -0700</creation_ts>
<short_desc>When copying and pasting items, the pasted items are placed directly on top of the copied items and are not selected</short_desc>
<delta_ts>2012-06-29 08:50:37 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>FIXED</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-G9sbnFs3MSD5ELkK_jQvtONiiJozh1oowuIz2T4_-E0</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>292</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-17 10:43:08 -0700</bug_when>
<thetext>Empty </thetext>
</long_desc><long_desc isprivate="0" >
<commentid>971</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2012-06-29 08:50:37 -0700</bug_when>
<thetext>Now when we copy and paste the paste occurs under the mouse and the
pasted objects are selected.</thetext>
</long_desc>
</bug>
<bug>
<bug_id>313</bug_id>
<creation_ts>2009-12-07 08:21:26 -0800</creation_ts>
<short_desc>Properties for unconnected ports?</short_desc>
<delta_ts>2011-02-26 22:38:12 -0800</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Properties</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>RESOLVED</bug_status>
<resolution>WONTFIX</resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Elizabeth Latronico">beth@berkeley.edu</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-oTV7Vfs9wzfrzNO4tgO4iWSvG8VQPfVyyC0XNITUdZc</token>
<group id="19">pthomas</group>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>632</commentid>
<comment_count>0</comment_count>
<who name="Elizabeth Latronico">beth@berkeley.edu</who>
<bug_when>2009-12-07 08:21:26 -0800</bug_when>
<thetext>Should unconnected ports have properties? If so, what should the property be?
Problem: Currently, the properties on unconnected ports usually resolve to null, nil, or &quot;Unknown&quot;. Different actors are different so this is confusing. Many solvers currently throw an exception for &quot;unacceptable&quot; properties such as &quot;Unknown&quot; (this behavior could be changed). Also, the regression tests remember the specific value, so e.g. null and nil are not the same - if there are any changes then the user has to re-train the tests.
Steps for solution:
1) Possible choices are 1) no property (same as null?), 2) nil (e.g. Token.NIL), 3) the bottom of the lattice (typically &quot;Unknown&quot;), or 4) a default value which could be lattice-specific (e.g. &quot;Const&quot; for the constant / non-constant lattice). Note that subclasses can override for special cases.
+) The solution should ideally be implemented in the appropriate base class, such as ptolemy.data.properties.lattice.PropertyConstraintHelper
+) Should the regression testing ignore these?
+) The getPropertyables() function in PropertyConstraintHelper looks like a good place to make the change
++) If unconnected ports should not have properties, then they should not be added to the getPropertyables() list. Note that a subclass can always override getPropertyables() to add a port back to the list, if there is a special case.</thetext>
</long_desc><long_desc isprivate="0" >
<commentid>726</commentid>
<comment_count>1</comment_count>
<who name="Christopher Brooks">cxh@eecs.berkeley.edu</who>
<bug_when>2011-02-26 22:38:12 -0800</bug_when>
<thetext>ptolemy.data.properties was removed</thetext>
</long_desc>
</bug>
<bug>
<bug_id>198</bug_id>
<creation_ts>2008-09-20 11:28:59 -0700</creation_ts>
<short_desc>Creating Hierarchy: problems when relations directly linked to each other</short_desc>
<delta_ts>2008-09-20 11:36:19 -0700</delta_ts>
<reporter_accessible>1</reporter_accessible>
<cclist_accessible>1</cclist_accessible>
<classification_id>1</classification_id>
<classification>Unclassified</classification>
<product>Ptolemy II</product>
<component>Vergil</component>
<version>7.1.devel</version>
<rep_platform>PC</rep_platform>
<op_sys>Windows XP</op_sys>
<bug_status>NEW</bug_status>
<resolution></resolution>
<bug_file_loc></bug_file_loc>
<status_whiteboard></status_whiteboard>
<keywords></keywords>
<priority>P5</priority>
<bug_severity>normal</bug_severity>
<target_milestone>---</target_milestone>
<everconfirmed>1</everconfirmed>
<reporter name="Bert Rodiers">bert.rodiers@gmail.com</reporter>
<assigned_to name="Christopher Brooks">cxh@eecs.berkeley.edu</assigned_to>
<cc>pt-dev@chess.eecs.berkeley.edu</cc>
<estimated_time>0.00</estimated_time>
<remaining_time>0.00</remaining_time>
<actual_time>0.00</actual_time>
<cf_agiletype>---</cf_agiletype>
<cf_agilecost>---</cf_agilecost>
<cf_agilesprint></cf_agilesprint>
<token>1526340165-OCletYT73eEMErxIdaiTEBVa4LmKEZXbJGm95kx9E4U</token>
<comment_sort_order>oldest_to_newest</comment_sort_order>
<long_desc isprivate="0" >
<commentid>321</commentid>
<comment_count>0</comment_count>
<who name="Bert Rodiers">bert.rodiers@gmail.com</who>
<bug_when>2008-09-20 11:28:59 -0700</bug_when>
<thetext>In a link is the border of a selection, the current code expects that on one side the link is connector with an actor-port. If this is not the case the link is removed and the newly created composite actor has no ports.
An example:
&lt;?xml version=&quot;1.0&quot; standalone=&quot;no&quot;?&gt;
&lt;!DOCTYPE entity PUBLIC &quot;-//UC Berkeley//DTD MoML 1//EN&quot;
&quot;http://ptolemy.eecs.berkeley.edu/xml/dtd/MoML_1.dtd&quot;&gt;
&lt;entity name=&quot;Bug167&quot; class=&quot;ptolemy.actor.TypedCompositeActor&quot;&gt;
&lt;property name=&quot;_createdBy&quot; class=&quot;ptolemy.kernel.attributes.VersionAttribute&quot; value=&quot;7.0.1&quot;&gt;
&lt;/property&gt;
&lt;property name=&quot;SDF Director&quot; class=&quot;ptolemy.domains.sdf.kernel.SDFDirector&quot;&gt;
&lt;property name=&quot;_location&quot; class=&quot;ptolemy.kernel.util.Location&quot; value=&quot;{60, 55}&quot;&gt;
&lt;/property&gt;
&lt;/property&gt;
&lt;property name=&quot;_windowProperties&quot; class=&quot;ptolemy.actor.gui.WindowPropertiesAttribute&quot; value=&quot;{bounds={0, 0, 1024, 732}, maximized=false}&quot;&gt;
&lt;/property&gt;
&lt;property name=&quot;_vergilSize&quot; class=&quot;ptolemy.actor.gui.SizeAttribute&quot; value=&quot;[809, 625]&quot;&gt;
&lt;/property&gt;
&lt;property name=&quot;_vergilZoomFactor&quot; class=&quot;ptolemy.data.expr.ExpertParameter&quot; value=&quot;1.0&quot;&gt;
&lt;/property&gt;
&lt;property name=&quot;_vergilCenter&quot; class=&quot;ptolemy.data.expr.ExpertParameter&quot; value=&quot;{404.5, 312.5}&quot;&gt;
&lt;/property&gt;
&lt;entity name=&quot;Ramp2&quot; class=&quot;ptolemy.actor.lib.Ramp&quot;&gt;
&lt;doc&gt;Create a sequence of tokens with increasing value&lt;/doc&gt;
&lt;property name=&quot;_location&quot; class=&quot;ptolemy.kernel.util.Location&quot; value=&quot;[425.0, 220.0]&quot;&gt;
&lt;/property&gt;
&lt;/entity&gt;
&lt;entity name=&quot;Ramp&quot; class=&quot;ptolemy.actor.lib.Ramp&quot;&gt;
&lt;doc&gt;Create a sequence of tokens with increasing value&lt;/doc&gt;
&lt;property name=&quot;_location&quot; class=&quot;ptolemy.kernel.util.Location&quot; value=&quot;{110, 215}&quot;&gt;
&lt;/property&gt;
&lt;/entity&gt;
&lt;relation name=&quot;relation2&quot; class=&quot;ptolemy.actor.TypedIORelation&quot;&gt;
&lt;property name=&quot;width&quot; class=&quot;ptolemy.data.expr.Parameter&quot; value=&quot;1&quot;&gt;
&lt;/property&gt;
&lt;vertex name=&quot;vertex1&quot; value=&quot;[305.0, 210.0]&quot;&gt;
&lt;/vertex&gt;
&lt;/relation&gt;
&lt;relation name=&quot;relation&quot; class=&quot;ptolemy.actor.TypedIORelation&quot;&gt;
&lt;property name=&quot;width&quot; class=&quot;ptolemy.data.expr.Parameter&quot; value=&quot;1&quot;&gt;
&lt;/property&gt;
&lt;vertex name=&quot;vertex1&quot; value=&quot;[255.0, 210.0]&quot;&gt;
&lt;/vertex&gt;
&lt;/relation&gt;
&lt;link port=&quot;Ramp2.trigger&quot; relation=&quot;relation2&quot;/&gt;
&lt;link port=&quot;Ramp.output&quot; relation=&quot;relation&quot;/&gt;
&lt;link relation1=&quot;relation2&quot; relation2=&quot;relation&quot;/&gt;
&lt;/entity&gt;
relation1 is linked with relation. If create a hierarchy with the border of your selection on the edge between both relations, you have a port
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment