You can subscribe to this list here.
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(28) |
Nov
(60) |
Dec
(1) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
(7) |
Feb
(23) |
Mar
(1) |
Apr
(12) |
May
|
Jun
(12) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <jhs...@us...> - 2009-02-02 15:34:56
|
Revision: 122 http://flexotask.svn.sourceforge.net/flexotask/?rev=122&view=rev Author: jhspring Date: 2009-02-02 15:34:46 +0000 (Mon, 02 Feb 2009) Log Message: ----------- made setParent() protected to allow subclasses to override Modified Paths: -------------- trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/ModelElement.java Modified: trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/ModelElement.java =================================================================== --- trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/ModelElement.java 2009-01-28 10:02:01 UTC (rev 121) +++ trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/ModelElement.java 2009-02-02 15:34:46 UTC (rev 122) @@ -283,7 +283,7 @@ * Set the parent TaskDiagram * @param parent the parent TaskDiagram to set */ - void setParent(TaskDiagram parent) + protected void setParent(TaskDiagram parent) { this.parent = parent; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jhs...@us...> - 2009-01-28 10:02:05
|
Revision: 121 http://flexotask.svn.sourceforge.net/flexotask/?rev=121&view=rev Author: jhspring Date: 2009-01-28 10:02:01 +0000 (Wed, 28 Jan 2009) Log Message: ----------- added List<Task> getTasks() methods to global timing and task diagram Modified Paths: -------------- trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/GlobalTiming.java trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/TaskDiagram.java Modified: trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/GlobalTiming.java =================================================================== --- trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/GlobalTiming.java 2009-01-28 09:33:37 UTC (rev 120) +++ trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/GlobalTiming.java 2009-01-28 10:02:01 UTC (rev 121) @@ -226,4 +226,13 @@ public static void resetProviders() { libraries = null; } + + /** + * Returns a list of tasks added to the task diagram to which the global + * timing belongs. + * @return a list of tasks + */ + protected List<Task> getTasks() { + return getParent().getTasks(); + } } Modified: trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/TaskDiagram.java =================================================================== --- trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/TaskDiagram.java 2009-01-28 09:33:37 UTC (rev 120) +++ trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/TaskDiagram.java 2009-01-28 10:02:01 UTC (rev 121) @@ -136,6 +136,14 @@ } /** + * Returns a list of tasks added to this task diagram. + * @return a list of tasks + */ + protected List<Task> getTasks() { + return tasks; + } + + /** * Create a TaskDiagram from a saved FlexotaskEditSession document * @param xmlForm the XML form FlexotaskEditSession * @throws FlexotaskValidationException if any error occurs in parsing This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jhs...@us...> - 2009-01-28 09:33:40
|
Revision: 120 http://flexotask.svn.sourceforge.net/flexotask/?rev=120&view=rev Author: jhspring Date: 2009-01-28 09:33:37 +0000 (Wed, 28 Jan 2009) Log Message: ----------- added support for peek() and peek(index) Modified Paths: -------------- trunk/flexotask/src/com/ibm/realtime/flexotask/FlexotaskInputPort.java trunk/flexotask/src/com/ibm/realtime/flexotask/system/FlexotaskInputPortImpl.java Modified: trunk/flexotask/src/com/ibm/realtime/flexotask/FlexotaskInputPort.java =================================================================== --- trunk/flexotask/src/com/ibm/realtime/flexotask/FlexotaskInputPort.java 2009-01-28 09:32:50 UTC (rev 119) +++ trunk/flexotask/src/com/ibm/realtime/flexotask/FlexotaskInputPort.java 2009-01-28 09:33:37 UTC (rev 120) @@ -27,4 +27,19 @@ * @return the most recent value on the port */ public Object getValue(); + + /** + * Retrieves the most recent value of the InputPort or the buffer, if the + * buffer is present. The value is not removed. + * @return the value. + */ + public Object peek(); + + /** + * Retrieves the most recent value of the InputPort or the n'th value of the + * buffer, if the buffer is present, without removing it. + * @param index the n'th value to be retrieved + * @return the value. + */ + public Object peek(int index); } Modified: trunk/flexotask/src/com/ibm/realtime/flexotask/system/FlexotaskInputPortImpl.java =================================================================== --- trunk/flexotask/src/com/ibm/realtime/flexotask/system/FlexotaskInputPortImpl.java 2009-01-28 09:32:50 UTC (rev 119) +++ trunk/flexotask/src/com/ibm/realtime/flexotask/system/FlexotaskInputPortImpl.java 2009-01-28 09:33:37 UTC (rev 120) @@ -59,10 +59,11 @@ } /** - * Non-public method used by ConnectionDrivers to retrieve the value + * Retrieves the most recent value of the InputPort or the buffer, if the + * buffer is present. The value is not removed. * @return the value. */ - Object peek() { + public Object peek() { if (buffer != null) return buffer.peekFirst(); else @@ -70,10 +71,12 @@ } /** - * Non-public method used by ConnectionDrivers to retrieve the value + * Retrieves the most recent value of the InputPort or the n'th value of the + * buffer, if the buffer is present, without removing it. + * @param index the n'th value to be retrieved * @return the value. */ - Object peek(int index) { + public Object peek(int index) { if (buffer != null) return buffer.peekIndex(index); else if (index != 0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jhs...@us...> - 2009-01-28 09:32:53
|
Revision: 119 http://flexotask.svn.sourceforge.net/flexotask/?rev=119&view=rev Author: jhspring Date: 2009-01-28 09:32:50 +0000 (Wed, 28 Jan 2009) Log Message: ----------- added support for peek() and peek(index) Modified Paths: -------------- trunk/flexotask-generic/src/com/ibm/realtime/flexotask/FlexotaskInputPort.java Modified: trunk/flexotask-generic/src/com/ibm/realtime/flexotask/FlexotaskInputPort.java =================================================================== --- trunk/flexotask-generic/src/com/ibm/realtime/flexotask/FlexotaskInputPort.java 2009-01-23 15:38:10 UTC (rev 118) +++ trunk/flexotask-generic/src/com/ibm/realtime/flexotask/FlexotaskInputPort.java 2009-01-28 09:32:50 UTC (rev 119) @@ -27,4 +27,19 @@ * @return the most recent value on the port */ public T getValue(); + + /** + * Retrieves the most recent value of the InputPort or the buffer, if the + * buffer is present. The value is not removed. + * @return the value. + */ + public T peek(); + + /** + * Retrieves the most recent value of the InputPort or the n'th value of the + * buffer, if the buffer is present, without removing it. + * @param index the n'th value to be retrieved + * @return the value. + */ + public T peek(int index); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jhs...@us...> - 2009-01-23 15:38:19
|
Revision: 118 http://flexotask.svn.sourceforge.net/flexotask/?rev=118&view=rev Author: jhspring Date: 2009-01-23 15:38:10 +0000 (Fri, 23 Jan 2009) Log Message: ----------- Changed resource visitors to report errors if classes could not be loaded during inspection. Builder will stop hereafter and report an error in the IDE. Modified Paths: -------------- trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/builder/FlexotaskBuilder.java Modified: trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/builder/FlexotaskBuilder.java =================================================================== --- trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/builder/FlexotaskBuilder.java 2009-01-19 19:18:54 UTC (rev 117) +++ trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/builder/FlexotaskBuilder.java 2009-01-23 15:38:10 UTC (rev 118) @@ -212,13 +212,18 @@ throw new CoreException(new Status(IStatus.ERROR, BUILDER_ID, IResourceStatus.INTERNAL_ERROR, ee.getMessage(), ee)); } - } else { + } else if (entry instanceof FieldViolation) { FieldViolation fv = (FieldViolation) entry; IType type = jproj.findType(Utils.convertInnerclass(fv .getDefiningClass().getName())); IField ifield = type.getField(fv.getFieldName()); reportTypeRuleViolation(fv.getDefiningClass(), entry, Utils .getLineNumber(ifield)); + } else { + IResource res = jproj.getResource(); + addMarkerToResource((entry.getSeverity() == Severity.ERROR) ? + IMarker.SEVERITY_ERROR : IMarker.SEVERITY_WARNING, res, -1, entry + .getMessage()); } } } @@ -244,13 +249,15 @@ protected Set flexotaskClasses = new HashSet(); /** The complete list of graph files found in the entire project */ protected Set templateIFiles = new HashSet(); + /** The set of problems following visitor traversal */ + protected Set visitorProblems = new HashSet(); /** * Returns the binary class name of the file represented by the provided file * object * @param file the file from which to return the binary class name * @return the binary class name of the provided file - * @throws JavaModelException if the output location cannot be read + * @throws CoreException if the binary name could not be returned */ protected String getBinaryClassName(IFile file) throws CoreException { IPath outputLocation = getOutputLocation(file); @@ -331,11 +338,12 @@ * @param f the file to be inspected. */ protected void collectClassFile(IFile f) { + String clazzName = null; try { if ("class".equals(f.getFileExtension()) && isInOutputLocation(f)) { // get the binary class name of file to investigate - String clazzName = getBinaryClassName(f); + clazzName = getBinaryClassName(f); // load the class and check if it is a Flexotask trace("loading class: " + clazzName); Class clazz = Class.forName(clazzName, false, cl); @@ -345,9 +353,13 @@ flexotaskClasses.add(clazz); } } - } catch (Exception e) { - e.printStackTrace(); - // TODO: handle exception + } catch (Throwable e) { + if (e instanceof CoreException) + visitorProblems.add(new TypeRuleViolation(Severity.ERROR, "Could not extract class name for file '" + f.getName() + "'!")); + else if ((e instanceof ClassNotFoundException) || (e instanceof NoClassDefFoundError)) + visitorProblems.add(new TypeRuleViolation(Severity.ERROR, "Error loading class '" + clazzName + "'. Missing class: " + e.getMessage())); + else + visitorProblems.add(new TypeRuleViolation(Severity.ERROR, "Exception occured during incremental build. Error: " + e.getMessage())); } } @@ -417,6 +429,7 @@ * </ul> */ private class ResourceDeltaVisitor extends ResourceVisitor implements IResourceDeltaVisitor { + /** * Loops through all the code analysis results of the previous run(s) and * marks any found templates or orphan flexotasks affected by the @@ -427,9 +440,10 @@ protected void collectClassFile(IFile f) { if ("class".equals(f.getFileExtension()) && isInOutputLocation(f)) { + String clazzName = null; try { // get the binary class name of file to investigate - String clazzName = getBinaryClassName(f); + clazzName = getBinaryClassName(f); // load the class and check if it is a Flexotask trace("loading class: " + clazzName); Class clazz = Class.forName(clazzName, false, cl); @@ -463,9 +477,13 @@ flexotaskClasses.add(clazz); } } - } catch (Exception e) { - e.printStackTrace(); - // TODO: handle exception + } catch (Throwable e) { + if (e instanceof CoreException) + visitorProblems.add(new TypeRuleViolation(Severity.ERROR, "Could not extract class name for file '" + f.getName() + "'!")); + else if ((e instanceof ClassNotFoundException) || (e instanceof NoClassDefFoundError)) + visitorProblems.add(new TypeRuleViolation(Severity.ERROR, "Error loading class '" + clazzName + "'. Missing class: " + e.getMessage())); + else + visitorProblems.add(new TypeRuleViolation(Severity.ERROR, "Exception occured during incremental build. Error: " + e.getMessage())); } } } @@ -685,6 +703,11 @@ ResourceVisitor visitor = new ResourceVisitor(); getProject().accept(visitor); + if (visitor.visitorProblems.size() > 0) { + reportTypeRuleViolationsInView(visitor.visitorProblems); + return; + } + if (checkCancel(monitor)) return; doBuild(args, monitor, visitor); @@ -706,6 +729,11 @@ ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); getDelta(getProject()).accept(visitor); + if (visitor.visitorProblems.size() > 0) { + reportTypeRuleViolationsInView(visitor.visitorProblems); + return; + } + if (visitor.getFlexotaskClasses().isEmpty() && visitor.getTemplateIFileSet().isEmpty()) return; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2009-01-19 19:18:56
|
Revision: 117 http://flexotask.svn.sourceforge.net/flexotask/?rev=117&view=rev Author: jsauerbach Date: 2009-01-19 19:18:54 +0000 (Mon, 19 Jan 2009) Log Message: ----------- Fix bad cut-and-paste typo that resulted in the TF Native Bridge library being an erroneous exact copy of the util library when exporting a runtime. Modified Paths: -------------- trunk/flexotask-editor/openRuntime-build.xml Modified: trunk/flexotask-editor/openRuntime-build.xml =================================================================== --- trunk/flexotask-editor/openRuntime-build.xml 2009-01-11 19:08:55 UTC (rev 116) +++ trunk/flexotask-editor/openRuntime-build.xml 2009-01-19 19:18:54 UTC (rev 117) @@ -14,7 +14,7 @@ <property name="full-tf-std" value="${open-runtime-directory}/JavaTraceGenerationLibrary/native/${tf-std}"/> <property name="tf-native" value="libTuningForkNativeBridge.so"/> <property name="full-tf-native" value="${open-runtime-directory}/JavaTraceGenerationViaNative/native/${tf-native}"/> - <fail message="${flexotask-util} so not found"> + <fail message="${flexotask-util} not found"> <condition><not><available file="${full-flexotask-util}"/></not></condition> </fail> <fail message="${tf-std} not found"> @@ -27,7 +27,7 @@ <zip destfile="openRuntimeProvider.zip"> <zipfileset filemode="775" file="${full-flexotask-util}" fullpath="bin/common/${flexotask-util}"/> <zipfileset filemode="775" file="${full-tf-std}" fullpath="bin/common/${tf-std}"/> - <zipfileset filemode="775" file="${full-flexotask-util}" fullpath="bin/common/${tf-native}"/> + <zipfileset filemode="775" file="${full-tf-native}" fullpath="bin/common/${tf-native}"/> </zip> </target> </project> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2009-01-11 19:08:59
|
Revision: 116 http://flexotask.svn.sourceforge.net/flexotask/?rev=116&view=rev Author: jsauerbach Date: 2009-01-11 19:08:55 +0000 (Sun, 11 Jan 2009) Log Message: ----------- Give the GlobalTiming model element an explicit parent (the TaskDiagram) to aid in navigating the model. Modified Paths: -------------- trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/TaskDiagram.java Modified: trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/TaskDiagram.java =================================================================== --- trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/TaskDiagram.java 2009-01-11 12:13:09 UTC (rev 115) +++ trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/TaskDiagram.java 2009-01-11 19:08:55 UTC (rev 116) @@ -408,6 +408,7 @@ } // Set the new value setTiming(timing); + timing.setParent(this); // Ensure the controller knows of the new value (which may be null) if (timing != null && children.add(timing)) { firePropertyChange(CHILD_ADDED_PROP, null, timing); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2009-01-11 12:40:10
|
Revision: 115 http://flexotask.svn.sourceforge.net/flexotask/?rev=115&view=rev Author: jsauerbach Date: 2009-01-11 12:13:09 +0000 (Sun, 11 Jan 2009) Log Message: ----------- Some little wordsmithing changes to the contributor docs. Modified Paths: -------------- trunk/flexotask-htdocs/info/batch-contrib.txt trunk/flexotask-htdocs/info/multi-contrib.txt trunk/flexotask-htdocs/info/single-contrib.txt Modified: trunk/flexotask-htdocs/info/batch-contrib.txt =================================================================== --- trunk/flexotask-htdocs/info/batch-contrib.txt 2008-12-18 19:18:28 UTC (rev 114) +++ trunk/flexotask-htdocs/info/batch-contrib.txt 2009-01-11 12:13:09 UTC (rev 115) @@ -1,8 +1,9 @@ CONTRIBUTOR LICENSE AGREEMENT FOR MULTIPLE CONTRIBUTIONS -I represent that for any software I contribute to the +I represent that any software I contribute to the Flexible Task Graphs Project will be in accordance with -the terms of the Project's CLA. Namely, +the terms of the Project's Contributor License Agreement. +Namely, I will be the only author of the contributed software code or otherwise have the right to contribute the software code, @@ -16,5 +17,5 @@ Contributor Name & Contact Information N.B.: If the Contributor is a student or employee of a college/university, -a member of the university’s intellectual property licensing department +a member of the university's intellectual property licensing department must also approve this MCLA, as by supplying a note confirming such approval. Modified: trunk/flexotask-htdocs/info/multi-contrib.txt =================================================================== --- trunk/flexotask-htdocs/info/multi-contrib.txt 2008-12-18 19:18:28 UTC (rev 114) +++ trunk/flexotask-htdocs/info/multi-contrib.txt 2009-01-11 12:13:09 UTC (rev 115) @@ -20,5 +20,5 @@ ....(add more contributors as necessary) N.B.: If the Contributor is a student or employee of a college/university, -a member of the university’s intellectual property licensing department +a member of the university's intellectual property licensing department must also approve this CLA, as by supplying a note confirming such approval. Modified: trunk/flexotask-htdocs/info/single-contrib.txt =================================================================== --- trunk/flexotask-htdocs/info/single-contrib.txt 2008-12-18 19:18:28 UTC (rev 114) +++ trunk/flexotask-htdocs/info/single-contrib.txt 2009-01-11 12:13:09 UTC (rev 115) @@ -12,5 +12,5 @@ Contributor Name & Contact Information N.B.: If the Contributor is a student or employee of a college/university, -a member of the university’s intellectual property licensing department +a member of the university's intellectual property licensing department must also approve this CLA, as by supplying a note confirming such approval. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-12-18 19:18:33
|
Revision: 114 http://flexotask.svn.sourceforge.net/flexotask/?rev=114&view=rev Author: jsauerbach Date: 2008-12-18 19:18:28 +0000 (Thu, 18 Dec 2008) Log Message: ----------- Fix bug, due to typo, in generating the name of a connection. Modified Paths: -------------- trunk/flexotask/src/com/ibm/realtime/flexotask/system/ConnectionDriverImpl.java Modified: trunk/flexotask/src/com/ibm/realtime/flexotask/system/ConnectionDriverImpl.java =================================================================== --- trunk/flexotask/src/com/ibm/realtime/flexotask/system/ConnectionDriverImpl.java 2008-11-21 11:56:10 UTC (rev 113) +++ trunk/flexotask/src/com/ibm/realtime/flexotask/system/ConnectionDriverImpl.java 2008-12-18 19:18:28 UTC (rev 114) @@ -176,7 +176,7 @@ break; } } - FlexotaskInputPort[] inputPorts = inputTask.root.getInputPorts(); + FlexotaskInputPort[] inputPorts = outputTask.root.getInputPorts(); for (int i = 0; i < inputPorts.length; i++) { if (inputPorts[i] == output) { outIndex = i; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-21 11:56:14
|
Revision: 113 http://flexotask.svn.sourceforge.net/flexotask/?rev=113&view=rev Author: jsauerbach Date: 2008-11-21 11:56:10 +0000 (Fri, 21 Nov 2008) Log Message: ----------- Let the classpath container contain at least a simple project entry for projects that extend flexotask extension points even if those projects were never installed as plugins. To support this along with all the corner cases of projects being created and destroyed, add a "Recompute Classpaths" action and group it (along with the existing "Convert to Flexotask Project" action into a Flexotask Tooks submenu. Modified Paths: -------------- trunk/flexotask-development/plugin.xml trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/wizards/ConvertToFlexotaskProject.java trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/FlexotaskClasspathInitializer.java trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/GlobalTiming.java Added Paths: ----------- trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/wizards/CommonProjectAction.java trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/wizards/RecomputeClasspaths.java trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/BasicLibraryProvider.java Modified: trunk/flexotask-development/plugin.xml =================================================================== --- trunk/flexotask-development/plugin.xml 2008-11-18 20:29:20 UTC (rev 112) +++ trunk/flexotask-development/plugin.xml 2008-11-21 11:56:10 UTC (rev 113) @@ -56,14 +56,26 @@ adaptable="true" objectClass="org.eclipse.core.resources.IProject" nameFilter="*" - id="FlexotaskBuilder.contribution1"> + id="com.ibm.realtime.flexotask.development.menuContribution"> <action label="Convert to Flexotask Project" class="com.ibm.realtime.flexotask.development.wizards.ConvertToFlexotaskProject" - menubarPath="additions" + menubarPath="com.ibm.realtime.flexotask.development.menu/additions" enablesFor="+" id="FlexotaskBuilder.convertProjectAction"> </action> + <menu + id="com.ibm.realtime.flexotask.development.menu" + label="Fle&xotask Tools" + path="additions"> + </menu> + <action + class="com.ibm.realtime.flexotask.development.wizards.RecomputeClasspaths" + enablesFor="+" + id="com.ibm.realtime.flexotask.development.classpath" + label="Recompute Classpaths" + menubarPath="com.ibm.realtime.flexotask.development.menu/additions"> + </action> </objectContribution> </extension> <extension Added: trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/wizards/CommonProjectAction.java =================================================================== --- trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/wizards/CommonProjectAction.java (rev 0) +++ trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/wizards/CommonProjectAction.java 2008-11-21 11:56:10 UTC (rev 113) @@ -0,0 +1,100 @@ +/* + * This file is part of Flexible Task Graphs + * (http://sourceforge.net/projects/flexotasks) + * + * Copyright (c) 2006 - 2008 IBM Corporation. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + */ +package com.ibm.realtime.flexotask.development.wizards; + +import java.util.Iterator; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IPath; +import org.eclipse.jdt.core.IClasspathEntry; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.IObjectActionDelegate; +import org.eclipse.ui.IWorkbenchPart; + +import com.ibm.realtime.flexotask.editor.FlexotaskClasspathInitializer; + +/** + * Common superclass of Flexotask Tools actions that are capable of operating on multiple + * projects + */ +abstract class CommonProjectAction implements IObjectActionDelegate { + /** The selection, from which the set of projects is to be determined */ + private ISelection selection; + + /* (non-Javadoc) + * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) + */ + public void run(IAction action) { + if (selection instanceof IStructuredSelection) { + for (Iterator it = ((IStructuredSelection) selection).iterator(); it.hasNext();) { + Object element = it.next(); + IProject project = null; + if (element instanceof IProject) { + project = (IProject) element; + } + else if (element instanceof IAdaptable) { + project = (IProject) ((IAdaptable) element) + .getAdapter(IProject.class); + } + if (project != null) { + processProject(project); + } + } + } + } + + /* (non-Javadoc) + * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + this.selection = selection; + } + + /* (non-Javadoc) + * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction, org.eclipse.ui.IWorkbenchPart) + */ + public void setActivePart(IAction action, IWorkbenchPart targetPart) { + } + + /** + * Method to test whether a project already has a Flexotask classpath container + * @param project the IJavaProject to test + * @return true iff the Flexotask classpath container is configured + * @throws JavaModelException + */ + protected boolean hasFlexotaskClasspath(IJavaProject project) throws JavaModelException { + IClasspathEntry[] entries = project.getRawClasspath(); + for (int i = 0; i < entries.length; i++) { + IClasspathEntry entry = entries[i]; + if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER) { + IPath containerPath = entry.getPath(); + if (containerPath.segmentCount() == 2 && FlexotaskClasspathInitializer.CONTAINER_ID.equals(containerPath.segment(0))) { + return true; + } + } + } + return false; + } + + /** + * Action to take on individual projects + * @param project the project on which the action is currently being taken + */ + abstract void processProject(IProject project); +} Property changes on: trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/wizards/CommonProjectAction.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/wizards/ConvertToFlexotaskProject.java =================================================================== --- trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/wizards/ConvertToFlexotaskProject.java 2008-11-18 20:29:20 UTC (rev 112) +++ trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/wizards/ConvertToFlexotaskProject.java 2008-11-21 11:56:10 UTC (rev 113) @@ -13,83 +13,33 @@ */ package com.ibm.realtime.flexotask.development.wizards; -import java.util.Iterator; - import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.SubProgressMonitor; -import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.IObjectActionDelegate; -import org.eclipse.ui.IWorkbenchPart; import com.ibm.realtime.flexotask.development.builder.FlexotaskNature; -import com.ibm.realtime.flexotask.editor.FlexotaskClasspathInitializer; /** * Action to convert a project (even one that has some Flexotask facilities already) to a full-fledged * Flexotask project including all the supporting facilities */ -public class ConvertToFlexotaskProject implements IObjectActionDelegate { - /** The selection, from which the project is to be determined */ - private ISelection selection; - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) - */ - public void run(IAction action) { - if (selection instanceof IStructuredSelection) { - for (Iterator it = ((IStructuredSelection) selection).iterator(); it.hasNext();) { - Object element = it.next(); - IProject project = null; - if (element instanceof IProject) { - project = (IProject) element; - } - else if (element instanceof IAdaptable) { - project = (IProject) ((IAdaptable) element) - .getAdapter(IProject.class); - } - if (project != null) { - convert(project); - } - } - } - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection) - */ - public void selectionChanged(IAction action, ISelection selection) { - this.selection = selection; - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction, org.eclipse.ui.IWorkbenchPart) - */ - public void setActivePart(IAction action, IWorkbenchPart targetPart) { - } - +public class ConvertToFlexotaskProject extends CommonProjectAction { /** * Perform the conversion operation on a project * @param project the project to convert */ - private void convert(IProject project) { + void processProject(IProject project) { IProjectDescription description; try { description = project.getDescription(); @@ -110,7 +60,7 @@ /* Present information to the user if some or all of the actions are unnecessary and get permission * to proceed. */ - if (!shouldProceed(haveNature, haveLibraries, generated.exists())) { + if (!shouldProceed(haveNature, haveLibraries, generated.exists(), project.getName())) { return; } @@ -135,43 +85,24 @@ } /** - * Method to test whether a project already has a Flexotask classpath container - * @param project the IJavaProject to test - * @return true iff the Flexotask classpath container is configured - * @throws JavaModelException - */ - private boolean hasFlexotaskClasspath(IJavaProject project) throws JavaModelException { - IClasspathEntry[] entries = project.getRawClasspath(); - for (int i = 0; i < entries.length; i++) { - IClasspathEntry entry = entries[i]; - if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER) { - IPath containerPath = entry.getPath(); - if (containerPath.segmentCount() == 2 && FlexotaskClasspathInitializer.CONTAINER_ID.equals(containerPath.segment(0))) { - return true; - } - } - } - return false; - } - - /** * Interact with the user depending on the current state of the project. If the project is already fully converted, just inform the user * of that fact and do nothing. * @param haveNature true iff the project already has the FlexotaskNature * @param haveLibraries true iff the project already has the Flexotask libraries * @param generatedExists true iff the 'generated' folder already exists + * @param projectName * @return true if conversion should proceed with those facilities that are missing, false if conversion should not proceed */ - private boolean shouldProceed(boolean haveNature, boolean haveLibraries, boolean generatedExists) { + private boolean shouldProceed(boolean haveNature, boolean haveLibraries, boolean generatedExists, String projectName) { if (haveNature && haveLibraries && generatedExists) { - MessageDialog.openWarning(Display.getCurrent().getActiveShell(), "Nothing to do", "This project is already a Flexotask project, nothing will be done"); + MessageDialog.openWarning(Display.getCurrent().getActiveShell(), "Skipping project", projectName + " is already a Flexotask project, nothing will be done"); return false; } if (!haveNature && !haveLibraries && !generatedExists) { return true; } /* Mixed cases: let the user decide */ - StringBuilder message = new StringBuilder("Project has some Flexotask facilities already: "); + StringBuilder message = new StringBuilder(projectName + " has some Flexotask facilities already: "); message.append("\n").append(haveNature ? "has" : "does not have").append(" development support"); message.append("\n").append(haveLibraries ? "has" : "does not have").append(" Flexotask libraries"); message.append("\n").append(generatedExists ? "has" : "does not have").append(" generated code directory"); Added: trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/wizards/RecomputeClasspaths.java =================================================================== --- trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/wizards/RecomputeClasspaths.java (rev 0) +++ trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/wizards/RecomputeClasspaths.java 2008-11-21 11:56:10 UTC (rev 113) @@ -0,0 +1,46 @@ +/* + * This file is part of Flexible Task Graphs + * (http://sourceforge.net/projects/flexotasks) + * + * Copyright (c) 2006 - 2008 IBM Corporation. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + */ +package com.ibm.realtime.flexotask.development.wizards; + +import org.eclipse.core.resources.IProject; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.core.JavaModelException; + +import com.ibm.realtime.flexotask.editor.FlexotaskClasspathInitializer; +import com.ibm.realtime.flexotask.editor.model.GlobalTiming; + +/** + * Action to recompute the classpaths of projects that use the Flexotask Classpath container (if called on other projects + * nothing is done). Used by the user to correct for various anomalies that arise when projects are added and deleted + * etc. + */ +public class RecomputeClasspaths extends CommonProjectAction { + /* (non-Javadoc) + * @see com.ibm.realtime.flexotask.development.wizards.CommonProjectAction#processProject(org.eclipse.core.resources.IProject) + */ + void processProject(IProject project) { + IJavaProject javaProject = JavaCore.create(project); + boolean hasClasspath; + try { + hasClasspath = hasFlexotaskClasspath(javaProject); + } catch (JavaModelException e) { + hasClasspath = false; + } + if (hasClasspath) { + GlobalTiming.resetProviders(); + FlexotaskClasspathInitializer.recomputeClasspath(javaProject); + } + } +} Property changes on: trunk/flexotask-development/src/com/ibm/realtime/flexotask/development/wizards/RecomputeClasspaths.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/FlexotaskClasspathInitializer.java =================================================================== --- trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/FlexotaskClasspathInitializer.java 2008-11-18 20:29:20 UTC (rev 112) +++ trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/FlexotaskClasspathInitializer.java 2008-11-21 11:56:10 UTC (rev 113) @@ -99,18 +99,17 @@ !CONTAINER_ID.equals(containerPath.segment(0))) { return; } - reInitialize(containerPath, project); + reInitialize(project); IEclipsePreferences preferences = new ProjectScope(project.getProject()).getNode(JavaCore.PLUGIN_ID); - preferences.addPreferenceChangeListener(new ComplianceChangeListener(containerPath, project)); + preferences.addPreferenceChangeListener(new ComplianceChangeListener(project)); } /** - * Working subroutine of initialize(), also called when the compliance preference of the project changes - * @param containerPath the container path to use - * @param project the JavaProject to use + * Working subroutine of initialize(), also called from recomputeClasspath + * @param project the IJavaProject whose Flexotask Libraries Container is being (re) initialized * @throws CoreException if anything goes wrong */ - private void reInitialize(IPath containerPath, IJavaProject project) throws CoreException + private static void reInitialize(IJavaProject project) throws CoreException { List<IClasspathEntry> entryList = new ArrayList<IClasspathEntry>(); String compliance = project.getOption(COMPLIANCE_KEY, true); @@ -121,10 +120,35 @@ addPluginClasspath(entryList, ANALYSIS_PLUGIN); GlobalTiming.addToClasspath(entryList); IClasspathEntry[] entries = entryList.toArray(new IClasspathEntry[0]); - IClasspathContainer container = new FlexotaskClasspath(entries, containerPath); - JavaCore.setClasspathContainer(containerPath, new IJavaProject[]{project}, + IClasspathContainer container = new FlexotaskClasspath(entries, CONTAINER_PATH); + JavaCore.setClasspathContainer(CONTAINER_PATH, new IJavaProject[]{project}, new IClasspathContainer[]{container}, null); } + + /** + * Reinitialize the classpath of a project, displaying any errors that may occur. Callable from the project + * preference change listener and from the external UI (Flexotask Tools pupup menu) + * @param project the IJavaProject whose Flexotask Libraries Container is being recomputed + */ + public static void recomputeClasspath(IJavaProject project) { + try { + reInitialize(project); + } catch (CoreException e) { + IStatus status = e.getStatus(); + if (status == null) { + status = new Status(Status.ERROR, EEditPlugin.ID, e.getMessage(), e); + } + ResourcesPlugin.getPlugin().getLog().log(status); + final IStatus istatus = status; + Display display = PlatformUI.getWorkbench().getDisplay(); + final Shell shell = display.getActiveShell(); + display.syncExec(new Runnable() { + public void run() { + ErrorDialog.openError(shell, "Error updating classpath", istatus.getMessage(), istatus); + } + }); + } + } /** * Utility to add a plugin's contribution to an accumulating classpath @@ -286,22 +310,17 @@ /** * A PreferenceChangeListener to notice when the compliance level of a project changes */ - private final class ComplianceChangeListener implements IPreferenceChangeListener + private final static class ComplianceChangeListener implements IPreferenceChangeListener { - /** The container path to use for reinitialization */ - private IPath containerPath; - /** The project whose changes are being listened for */ private IJavaProject project; /** * Make a new ComplianceChangeListener - * @param containerPath container path to use for reinitialization * @param project project whose changes are being listened for */ - ComplianceChangeListener(IPath containerPath, IJavaProject project) + ComplianceChangeListener(IJavaProject project) { - this.containerPath = containerPath; this.project = project; } @@ -312,23 +331,7 @@ { String key = event.getKey(); if (COMPLIANCE_KEY.equals(key)) { - try { - reInitialize(containerPath, project); - } catch (CoreException e) { - IStatus status = e.getStatus(); - if (status == null) { - status = new Status(Status.ERROR, EEditPlugin.ID, e.getMessage(), e); - } - ResourcesPlugin.getPlugin().getLog().log(status); - final IStatus istatus = status; - Display display = PlatformUI.getWorkbench().getDisplay(); - final Shell shell = display.getActiveShell(); - display.syncExec(new Runnable() { - public void run() { - ErrorDialog.openError(shell, "Error updating classpath", istatus.getMessage(), istatus); - } - }); - } + recomputeClasspath(project); } } } Added: trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/BasicLibraryProvider.java =================================================================== --- trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/BasicLibraryProvider.java (rev 0) +++ trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/BasicLibraryProvider.java 2008-11-21 11:56:10 UTC (rev 113) @@ -0,0 +1,52 @@ +/* + * This file is part of Flexible Task Graphs + * (http://sourceforge.net/projects/flexotasks) + * + * Copyright (c) 2006 - 2008 IBM Corporation. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + */ +package com.ibm.realtime.flexotask.editor.model; + +/** + * A LibraryProvider that can be instantiated by the system from a known plugin id and description. + * Typically used to attach plugin projects that are library providers before such projects have ever + * been installed as plugins. + */ +final class BasicLibraryProvider extends AbstractLibraryProvider +{ + private String pluginID; + private String description; + + /** + * Create a BasicLibraryProvider + * @param pluginID the plugin ID + * @param description the description + */ + BasicLibraryProvider(String pluginID, String description) + { + this.pluginID = pluginID; + this.description = description; + } + + /* (non-Javadoc) + * @see com.ibm.realtime.flexotask.editor.model.AbstractLibraryProvider#getPluginID() + */ + public String getPluginID() + { + return pluginID; + } + + /* (non-Javadoc) + * @see com.ibm.realtime.flexotask.editor.model.LibraryProvider#getDescription() + */ + public String getDescription() + { + return description; + } +} Property changes on: trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/BasicLibraryProvider.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/GlobalTiming.java =================================================================== --- trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/GlobalTiming.java 2008-11-18 20:29:20 UTC (rev 112) +++ trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/GlobalTiming.java 2008-11-21 11:56:10 UTC (rev 113) @@ -14,7 +14,9 @@ package com.ibm.realtime.flexotask.editor.model; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; @@ -22,6 +24,10 @@ import org.eclipse.core.runtime.IExtensionRegistry; import org.eclipse.core.runtime.Platform; import org.eclipse.jdt.core.IClasspathEntry; +import org.eclipse.pde.core.plugin.IPluginBase; +import org.eclipse.pde.core.plugin.IPluginExtension; +import org.eclipse.pde.core.plugin.IPluginModelBase; +import org.eclipse.pde.core.plugin.PluginRegistry; import com.ibm.realtime.flexotask.timing.FlexotaskGlobalTimingData; import com.ibm.realtime.flexotask.timing.FlexotaskTimingDataParser; @@ -102,13 +108,18 @@ } /** - * Collect all the library providers in the system, including grammar providers + * Collect all the library providers in the system, including grammar providers and projects that propose to be library providers but + * are not yet installed * @return all library providers as an array */ public static LibraryProvider[] getAllProviders() { if (libraries == null) { + /* First get library providers that are installed as plugins. These can provide their own + * tailored LibraryProvider implementations + */ List<LibraryProvider> providers = new ArrayList<LibraryProvider>(); + Set<String> providingPlugins = new HashSet<String>(); IExtensionRegistry registry = Platform.getExtensionRegistry(); IExtensionPoint extensionPoint = registry.getExtensionPoint(LIBRARY_EXTENSION); if (extensionPoint != null) { @@ -119,14 +130,39 @@ try { lp = (LibraryProvider) point.createExecutableExtension("class"); providers.add(lp); + providingPlugins.add(point.getContributor().getName()); } catch (CoreException e) { } } } - TimingGrammarProvider[] timingProviders = getGrammars(); - for (int i = 0; i < timingProviders.length; i++) { - providers.add(timingProviders[i]); - } + /* Add the grammar providers. We assume these must be installed as plugins because there is no way they can do their job + * them if they don't provide tailored TimingGrammarProvider implementations + */ + getGrammars(providers, providingPlugins); + /* Now add open PDE projects that extend LIBRARY_EXTENSION or GRAMMAR_EXTENSION + * but don't overlap with any plugin so far identified. These get BasicLibraryProvider implementations + * based on their plugin id and description, which just adds the project to the classpath. Note that this + * degrades projects that intended to be grammar providers to be only library providers. This is the best + * we can do since grammar providers really have to be installed. + */ + IPluginModelBase[] models = PluginRegistry.getWorkspaceModels(); + for (int i = 0; i < models.length; i++) { + if (models[i].isEnabled()) { + IPluginBase base = models[i].getPluginBase(); + String id = base.getId(); + if (providingPlugins.contains(id)) { + continue; + } + IPluginExtension[] extensions = base.getExtensions(); + for (int j = 0; j < extensions.length; j++) { + String point = extensions[j].getPoint(); + if (LIBRARY_EXTENSION.equals(point) || GRAMMAR_EXTENSION.equals(point)) { + String desc = "Contents of project " + base.getModel().getUnderlyingResource().getProject().getName(); + providers.add(new BasicLibraryProvider(id, desc)); + } + } + } + } libraries = providers.toArray(new LibraryProvider[0]); } return libraries; @@ -136,30 +172,38 @@ * Get the set of grammars in the workspace, initializing from the extension registry the * first time around. */ - public static TimingGrammarProvider[] getGrammars() - { + public static TimingGrammarProvider[] getGrammars() { if (grammars == null) { - IExtensionRegistry registry = Platform.getExtensionRegistry(); - IExtensionPoint extensionPoint = registry.getExtensionPoint(GRAMMAR_EXTENSION); - if (extensionPoint == null) { - grammars = new TimingGrammarProvider[0]; - } else { - IConfigurationElement points[] = extensionPoint.getConfigurationElements(); - List<TimingGrammarProvider> grammarList = new ArrayList<TimingGrammarProvider>(); - for (int i = 0; i < points.length; i++) { - IConfigurationElement point = points[i]; - TimingGrammarProvider tgp; - try { - tgp = (TimingGrammarProvider) point.createExecutableExtension("class"); - grammarList.add(tgp); - } catch (CoreException e) { - } - } - grammars = (TimingGrammarProvider[]) grammarList.toArray(new TimingGrammarProvider[0]); - } + List<LibraryProvider> grammarList = new ArrayList<LibraryProvider>(); + getGrammars(grammarList, new HashSet<String>()); + grammars = grammarList.toArray(new TimingGrammarProvider[grammarList.size()]); } return grammars; } + + /** + * Get the set of grammars in the workspace from the extension registry and computing the set of + * contributing plugins + * @param grammarList the list to which instantiated grammar providers should be added + * @param contributers the Set to which contributing plugins should be added + */ + private static void getGrammars(List<LibraryProvider> grammarList, Set<String> contributers) { + IExtensionRegistry registry = Platform.getExtensionRegistry(); + IExtensionPoint extensionPoint = registry.getExtensionPoint(GRAMMAR_EXTENSION); + if (extensionPoint != null) { + IConfigurationElement points[] = extensionPoint.getConfigurationElements(); + for (int i = 0; i < points.length; i++) { + IConfigurationElement point = points[i]; + TimingGrammarProvider tgp; + try { + tgp = (TimingGrammarProvider) point.createExecutableExtension("class"); + grammarList.add(tgp); + contributers.add(point.getContributor().getName()); + } catch (CoreException e) { + } + } + } + } /** * Get the FlexotaskTimingDataParsers of all the supported timing grammars @@ -174,4 +218,12 @@ } return ans; } + + /** + * Force recalculation of the set of library providers to include a possibly changed repertoire of + * projects. + */ + public static void resetProviders() { + libraries = null; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-18 20:29:23
|
Revision: 112 http://flexotask.svn.sourceforge.net/flexotask/?rev=112&view=rev Author: jsauerbach Date: 2008-11-18 20:29:20 +0000 (Tue, 18 Nov 2008) Log Message: ----------- New front page pointing to both installation sequences Modified Paths: -------------- trunk/flexotask-htdocs/index.html Modified: trunk/flexotask-htdocs/index.html =================================================================== --- trunk/flexotask-htdocs/index.html 2008-11-18 16:30:03 UTC (rev 111) +++ trunk/flexotask-htdocs/index.html 2008-11-18 20:29:20 UTC (rev 112) @@ -10,30 +10,33 @@ <h1 style="text-align: center; color: #ff0000">Flexible Task Graphs</h1> </center> -<p>This site provides the source to the non-JVM-dependent parts of the -<b>Flexible Task Graphs</b> system as described in the following -paper, which provides an introduction to this work. +<p>Welcome to the <b>Flexible Task Graphs</b> web site. All +installations are via the Eclipse Update mechanism. + <ul> +<li><a href="http://flexotask.wiki.sourceforge.net/installing">How to +install just the open source components</a>. These include the +development environment, runtime APIs, documentation, and support for +simulated execution and testing. You can later install the additional +software to support real-time execution. + +<li><a href="http://flexotask.wiki.sourceforge.net/jointInstall">How +to install a complete system</a>. Includes the open source components +from this site plus additional non-open-source software from IBM +DeveloperWorks and IBM AlphaWorks to support real-time execution in +the IBM WebSphere Real Time VM. +</ul> + +<p>The <b>Flexible Task Graphs</b> system is described in the following +paper, which provides an introduction to our work. +<ul> <li><a href="http://domino.research.ibm.com/comm/research_people.nsf/pages/bacon.refereed-pubs.html/$FILE/Auerbach08Flexible-final.pdf">Flexible task graphs: a unified restricted thread programming model for java</a> by Joshua Auerbach, David F. Bacon, Rachid Guerraoui, Jesper Honig Spring, and Jan Vitek, published in LCTES 2008. </ul> -<p>The JVM-dependent parts of the system (for IBM's WebSphere Real -Time VM) will be made available separately on <a -href="http://www.alphaworks.ibm.com">IBM AlphaWorks</a> in the near -future. The expected date is November 18 but the details are beyond -our personal control. -<p>Once the IBM AlphaWorks release occurs, you will be able to go to -that web site to receive integrated instructions allowing you to -install both portions of the support. Meanwhile, you are welcome to -install just the open source portions from this site. Installation is -via the Eclipse Update Mechanism as explained <a -href="http://flexotask.wiki.sourceforge.net/installing">in our -installation instructions wiki page</a>. - <p>The Flexible Task Graphs open source project, far from reflecting "completed" work, is an active project with much left to accomplish. We expect to accept contributions from new authors. Our goal is to @@ -41,23 +44,27 @@ model to incorporate into the next generation of standards for Real Time Java. Contributions can take the form of new plugins (timing grammars, schedulers, distributers, or tracing packages), new -front-end tools, or improvements to the framework itself. Please -contact <a href="mailto:jsa...@us...">Joshua -Auerbach</a>. You may also visit our <a +front-end tools, or improvements to the framework itself. + +<ul> +<li>Please contact <a href="mailto:jsa...@us...">Joshua +Auerbach</a> if you are interested in contributing to this project. +<li>You may also visit our <a href="http://sourceforge.net/projects/flexotask">our sourceforge project page</a> for more information and subscribe to one or more of our mailing lists. The mailing lists are structured so that all subscribers (but only subscribers) may send to them. +</ul> <p>The Flexible Task Graphs open source codebase was developed at IBM -(or under research agreements with IBM) from the older Exotask code -base and is being made available by IBM under the Eclipse Public -License. Primary developers were Joshua Auerbach and Jesper Honig -Spring, with substantial design input from David Bacon and Jan Vitek. -However, Flexible Task Graphs are a unification of four previous -programming models, and the contributers to those models are therefore -indirect contributers to the present work. Here are pointers to the -older background papers. +(or under research agreements with IBM) starting from the older +Exotasks code base. It is being made available by IBM under the +Eclipse Public License. Code was written by Joshua Auerbach and +Jesper Honig Spring, with design guidance from David Bacon and Jan +Vitek. Flexible Task Graphs are a unification of four previous +programming models, so the authors of those models can all be counted +as having influenced the present model. Here are pointers to the +papers describing the original models that influenced this work. <ul> <li><a This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-18 16:30:19
|
Revision: 111 http://flexotask.svn.sourceforge.net/flexotask/?rev=111&view=rev Author: jsauerbach Date: 2008-11-18 16:30:03 +0000 (Tue, 18 Nov 2008) Log Message: ----------- Put more detail in the top-level TOC for the help. Modified Paths: -------------- trunk/flexotask-editor/flexotask-toc.xml Modified: trunk/flexotask-editor/flexotask-toc.xml =================================================================== --- trunk/flexotask-editor/flexotask-toc.xml 2008-11-18 16:28:59 UTC (rev 110) +++ trunk/flexotask-editor/flexotask-toc.xml 2008-11-18 16:30:03 UTC (rev 111) @@ -1,32 +1,62 @@ <?xml version="1.0" encoding="UTF-8"?> <toc label="Flexible Task Graphs"> - <topic label="Programmer's Guide" href="doc/flexotaskProgramming.html"/> - <topic label="Reference"> + <topic label="Programmer's Guide" href="doc/flexotaskProgramming.html"> + <topic href="doc/flexotaskProgramming.html#post-install" label="Post-Install Testing"/> + <topic href="doc/flexotaskProgramming.html#papers" label="Relevant Papers"/> + <topic href="doc/flexotaskProgramming.html#application" label="Notes for Application Programmers"> + <topic href="doc/flexotaskProgramming.html#samples" label="The Samples"> + <topic href="doc/flexotaskProgramming.html#pendulum" label="The Inverted Pendulum Example from the LCTES 2007 Exotasks Paper"/> + <topic href="doc/flexotaskProgramming.html#modes" label="A Multiple Mode Example also illustrating Simple Parameters"/> +<topic href="doc/flexotaskProgramming.html#communicating" label="A Weakly Isolated Task Graph (Communicating Parameters)"/> + <topic href="doc/flexotaskProgramming.html#types" label="An Example for Experimenting with allowed Data Types"/> + <topic href="doc/flexotaskProgramming.html#highfreq" label="The High Frequency Reader Example from the LCTES 2008 Paper"/> + </topic> + <topic href="doc/flexotaskProgramming.html#creating" label="Creating and Converting Flexotask Projects"/> + <topic href="doc/flexotaskProgramming.html#simReal" label="Simulated and real-time execution modes"> + <topic href="doc/flexotaskProgramming.html#obtainingJ9Bridge" label="Obtaining the Runtime to use with IBM WebSphere Real Time"/> + <topic href="doc/flexotaskProgramming.html#obtainingWRT" label="Obtaining the IBM WebSphere Real Time VM Itself"/> + <topic href="doc/flexotaskProgramming.html#testingRuntime" label="Testing and Using the Real-Time Runtime"/> + </topic> + <topic href="doc/flexotaskProgramming.html#templates" label="Constructing Templates"> + <topic href="doc/flexotaskProgramming.html#templateAPI" label="The Template API"/> + <topic href="doc/flexotaskProgramming.html#editor" label="The Flexotask Editor"/> + </topic> + <topic href="doc/flexotaskProgramming.html#tasks" label="Writing Flexotasks"/> + <topic href="doc/flexotaskProgramming.html#validation" label="Validating and Instantiating Flexible Task Graphs"/> + <topic href="doc/flexotaskProgramming.html#wcet" label="Specifying WCET and WCA information"/> + <topic href="doc/flexotaskProgramming.html#cloning" label="Deep cloning at test time"/> + <topic href="doc/flexotaskProgramming.html#tracing" label="Using the Tracing Support"/> + </topic> + <topic href="doc/flexotaskProgramming.html#extender" label="Notes for Flexotask System Extenders"/> + <topic href="doc/flexotaskProgramming.html#developer" label="Notes for Flexotask Core Developers"/> + <topic href="doc/flexotaskProgramming.html#toolWriter" label="Notes for Flexotask Tool Developers"/> + </topic> + <topic label="Reference"> <topic label="com.ibm.realtime.flexotask" href="doc/com/ibm/realtime/flexotask/package-summary.html"/> <topic label="com.ibm.realtime.flexotask.template" - href="doc/com/ibm/realtime/flexotask/template/package-summary.html"/> + href="doc/com/ibm/realtime/flexotask/template/package-summary.html"/> <topic label="com.ibm.realtime.flexotask.timing" - href="doc/com/ibm/realtime/flexotask/timing/package-summary.html"/> + href="doc/com/ibm/realtime/flexotask/timing/package-summary.html"/> <topic label="com.ibm.realtime.flexotask.scheduling" - href="doc/com/ibm/realtime/flexotask/scheduling/package-summary.html"/> + href="doc/com/ibm/realtime/flexotask/scheduling/package-summary.html"/> <topic label="com.ibm.realtime.flexotask.tools" - href="doc/com/ibm/realtime/flexotask/tools/package-summary.html"/> + href="doc/com/ibm/realtime/flexotask/tools/package-summary.html"/> <topic label="com.ibm.realtime.flexotask.distribution" - href="doc/com/ibm/realtime/flexotask/distribution/package-summary.html"/> - <topic label="com.ibm.realtime.flexotask.util" - href="doc/com/ibm/realtime/flexotask/util/package-summary.html"/> + href="doc/com/ibm/realtime/flexotask/distribution/package-summary.html"/> + <topic label="com.ibm.realtime.flexotask.util" + href="doc/com/ibm/realtime/flexotask/util/package-summary.html"/> <topic label="com.ibm.realtime.flexotask.validation" - href="doc/com/ibm/realtime/flexotask/validation/package-summary.html"/> + href="doc/com/ibm/realtime/flexotask/validation/package-summary.html"/> <topic label="com.ibm.realtime.flexotask.cloning" - href="doc/com/ibm/realtime/flexotask/cloning/package-summary.html"/> + href="doc/com/ibm/realtime/flexotask/cloning/package-summary.html"/> <topic label="com.ibm.realtime.flexotask.tracing" - href="doc/com/ibm/realtime/flexotask/tracing/package-summary.html"/> + href="doc/com/ibm/realtime/flexotask/tracing/package-summary.html"/> <topic label="com.ibm.realtime.xrts" - href="doc/com/ibm/realtime/xrts/package-summary.html"/> + href="doc/com/ibm/realtime/xrts/package-summary.html"/> <topic label="com.ibm.realtime.flexotask.timing.simple" - href="doc/com/ibm/realtime/flexotask/timing/simple/package-summary.html"/> + href="doc/com/ibm/realtime/flexotask/timing/simple/package-summary.html"/> <topic label="com.ibm.realtime.flexotask.scheduling.simple" - href="doc/com/ibm/realtime/flexotask/scheduling/simple/package-summary.html"/> - </topic> + href="doc/com/ibm/realtime/flexotask/scheduling/simple/package-summary.html"/> + </topic> </toc> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-18 16:29:32
|
Revision: 110 http://flexotask.svn.sourceforge.net/flexotask/?rev=110&view=rev Author: jsauerbach Date: 2008-11-18 16:28:59 +0000 (Tue, 18 Nov 2008) Log Message: ----------- Further automate the documentation build. Modified Paths: -------------- trunk/flexotask/.project trunk/flexotask/javadoc.xml Added Paths: ----------- trunk/flexotask/.externalToolBuilders/MakeDebugZip.launch trunk/flexotask/.externalToolBuilders/UpdateDocumentation.launch Removed Paths: ------------- trunk/flexotask/.externalToolBuilders/flexotask debug.xml [Builder].launch Added: trunk/flexotask/.externalToolBuilders/MakeDebugZip.launch =================================================================== --- trunk/flexotask/.externalToolBuilders/MakeDebugZip.launch (rev 0) +++ trunk/flexotask/.externalToolBuilders/MakeDebugZip.launch 2008-11-18 16:28:59 UTC (rev 110) @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType"> +<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/> +<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="true"/> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/flexotask/debug.xml"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="1"/> +</listAttribute> +<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> +<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/> +<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/> +<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/IBM-J9"/> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ant.internal.ui.antsupport.InternalAntRunner"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="flexotask"/> +<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/> +<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/flexotask/debug.xml}"/> +<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value=""/> +<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/> +<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/> +</launchConfiguration> Added: trunk/flexotask/.externalToolBuilders/UpdateDocumentation.launch =================================================================== --- trunk/flexotask/.externalToolBuilders/UpdateDocumentation.launch (rev 0) +++ trunk/flexotask/.externalToolBuilders/UpdateDocumentation.launch 2008-11-18 16:28:59 UTC (rev 110) @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType"> +<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/> +<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/flexotask/javadoc.xml"/> +</listAttribute> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> +<listEntry value="1"/> +</listAttribute> +<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> +<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/> +<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/> +<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="flexotask"/> +<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/flexotask/javadoc.xml}"/> +<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,auto,"/> +<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/> +</launchConfiguration> Deleted: trunk/flexotask/.externalToolBuilders/flexotask debug.xml [Builder].launch =================================================================== --- trunk/flexotask/.externalToolBuilders/flexotask debug.xml [Builder].launch 2008-11-17 21:15:51 UTC (rev 109) +++ trunk/flexotask/.externalToolBuilders/flexotask debug.xml [Builder].launch 2008-11-18 16:28:59 UTC (rev 110) @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType"> -<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/> -<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="true"/> -<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> -<listEntry value="/flexotask/debug.xml"/> -</listAttribute> -<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> -<listEntry value="1"/> -</listAttribute> -<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> -<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/> -<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/> -<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/IBM-J9"/> -<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ant.internal.ui.antsupport.InternalAntRunner"/> -<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="flexotask"/> -<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/> -<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/flexotask/debug.xml}"/> -<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,auto,"/> -<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/> -<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/> -</launchConfiguration> Modified: trunk/flexotask/.project =================================================================== --- trunk/flexotask/.project 2008-11-17 21:15:51 UTC (rev 109) +++ trunk/flexotask/.project 2008-11-18 16:28:59 UTC (rev 110) @@ -22,11 +22,21 @@ </buildCommand> <buildCommand> <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name> + <triggers>full,incremental,</triggers> + <arguments> + <dictionary> + <key>LaunchConfigHandle</key> + <value><project>/.externalToolBuilders/MakeDebugZip.launch</value> + </dictionary> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name> <triggers>auto,full,incremental,</triggers> <arguments> <dictionary> <key>LaunchConfigHandle</key> - <value><project>/.externalToolBuilders/flexotask debug.xml [Builder].launch</value> + <value><project>/.externalToolBuilders/UpdateDocumentation.launch</value> </dictionary> </arguments> </buildCommand> Modified: trunk/flexotask/javadoc.xml =================================================================== --- trunk/flexotask/javadoc.xml 2008-11-17 21:15:51 UTC (rev 109) +++ trunk/flexotask/javadoc.xml 2008-11-18 16:28:59 UTC (rev 110) @@ -1,17 +1,29 @@ <?xml version="1.0" encoding="UTF-8"?> <project default="zipdoc"> - <target name="javadoc"> - <javadoc access="public" author="false" useexternalfile="true" overview="doc/flexotaskOverview.html" - classpath="bin;..\realtime-analysis\bin;..\realtime-analysis\bcel-5.1.jar" - destdir="doc" nodeprecated="true" nodeprecatedlist="true" noindex="true" nonavbar="true" notree="true" - packagenames="com.ibm.realtime.flexotask.*" - source="1.3" sourcepath="src" splitindex="false" use="false" version="false"/> - </target> - <target name="zipdoc" depends="javadoc"> - <zip destfile="..\flexotask-editor\doc.zip"> - <fileset dir="."> - <patternset includes="doc/**"/> - </fileset> - </zip> - </target> + <target name="checkjavadoc"> + <uptodate property="nojavadoc" targetfile="doc/index.html"> + <srcfiles dir="src"/> + </uptodate> + </target> + <target name="javadoc" depends="checkjavadoc" unless="nojavadoc"> + <delete dir="com"/> + <javadoc access="public" author="false" useexternalfile="true" overview="doc/flexotaskOverview.html" + classpath="bin;../realtime-analysis/bin;../realtime-analysis/bcel-5.1.jar" + destdir="doc" nodeprecated="true" nodeprecatedlist="true" noindex="true" nonavbar="true" notree="true" + packagenames="com.ibm.realtime.flexotask.*" + source="1.3" sourcepath="src" splitindex="false" use="false" version="false"/> + </target> + <target name="checkzipdoc"> + <uptodate property="nozipdoc" targetfile="../flexotask-editor/doc.zip"> + <srcfiles dir="doc" includes="**/*.html"/> + </uptodate> + </target> + <target name="zipdoc" depends="javadoc,checkzipdoc" unless="nozipdoc"> + <delete file="../flexotask-editor/doc.zip"/> + <zip destfile="../flexotask-editor/doc.zip"> + <fileset dir="."> + <patternset includes="doc/**"/> + </fileset> + </zip> + </target> </project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-17 21:15:54
|
Revision: 109 http://flexotask.svn.sourceforge.net/flexotask/?rev=109&view=rev Author: jsauerbach Date: 2008-11-17 21:15:51 +0000 (Mon, 17 Nov 2008) Log Message: ----------- Minor fixes to build scripts and launch configs Modified Paths: -------------- trunk/flexotask-functiontest/launch/Export Flexotask Function Test for Runtime.launch trunk/flexotask-functiontest-plugin/build-zip.xml Modified: trunk/flexotask-functiontest/launch/Export Flexotask Function Test for Runtime.launch =================================================================== --- trunk/flexotask-functiontest/launch/Export Flexotask Function Test for Runtime.launch 2008-11-17 19:47:40 UTC (rev 108) +++ trunk/flexotask-functiontest/launch/Export Flexotask Function Test for Runtime.launch 2008-11-17 21:15:51 UTC (rev 109) @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType"> <stringAttribute key="bad_container_name" value="\flexotask-functiontest\launc"/> +<stringAttribute key="org.eclipse.ant.ui.ATTR_BUILD_SCOPE" value="${none}"/> <booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="true"/> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> <listEntry value="/flexotask-functiontest/export.xml"/> @@ -10,11 +11,10 @@ </listAttribute> <booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/> +<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/IBM-J9"/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ant.internal.ui.antsupport.InternalAntRunner"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="flexotask-functiontest"/> <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/> -<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_NAME" value="IBM-J9"/> -<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_TYPE_ID" value="org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType"/> <stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/flexotask-functiontest/export.xml}"/> <stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/> </launchConfiguration> Modified: trunk/flexotask-functiontest-plugin/build-zip.xml =================================================================== --- trunk/flexotask-functiontest-plugin/build-zip.xml 2008-11-17 19:47:40 UTC (rev 108) +++ trunk/flexotask-functiontest-plugin/build-zip.xml 2008-11-17 21:15:51 UTC (rev 109) @@ -1,9 +1,11 @@ <project default="zip"> <target name="zip"> + <delete file="flexotaskFunctionTest.zip"/> <zip basedir="../flexotask-functiontest" destfile="flexotaskFunctionTest.zip"> <exclude name="generated/**"/> <exclude name="bin/**"/> <exclude name="*.jar"/> + <exclude name="**/Generator.java"/> </zip> </target> </project> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-17 19:47:43
|
Revision: 108 http://flexotask.svn.sourceforge.net/flexotask/?rev=108&view=rev Author: jsauerbach Date: 2008-11-17 19:47:40 +0000 (Mon, 17 Nov 2008) Log Message: ----------- Add clarification about junit.jar. Modified Paths: -------------- trunk/flexotask/doc/flexotaskProgramming.html Modified: trunk/flexotask/doc/flexotaskProgramming.html =================================================================== --- trunk/flexotask/doc/flexotaskProgramming.html 2008-11-17 17:05:46 UTC (rev 107) +++ trunk/flexotask/doc/flexotaskProgramming.html 2008-11-17 19:47:40 UTC (rev 108) @@ -568,6 +568,18 @@ on which you have IBM WebSphere Real Time installed and to which you exported your Flexotask runtime. +<p>You must also copy <b>junit.jar</b> to the Linux machine and locate +it in the same directory as <b>flexotaskFunctionTest.jar</b>. The +most reliable way to find an appropriate <b>junit.jar</b> for this +purpose is to look in the <b>org.junit4_*</b> subdirectory of your +eclipse <b>plugins</b> directory. That is, if eclipse is installed as +directory <b>c:/eclipse</b>, then you would look in +<b>c:/eclipse/plugins/org.junit4_4.3.1</b>. If you do end up +downloading this jar file from <b>www.junit.org</b>, bear in mind that +you need version 4.3.1 (later versions have been known not to work) +and you must rename the jar file to <b>junit.jar</b> to match the +manifest in <b>flexotaskFunctionTest.jar</b>. + <p>The following instructions apply whenever you are running Flexotasks in real-time mode. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-17 17:05:52
|
Revision: 107 http://flexotask.svn.sourceforge.net/flexotask/?rev=107&view=rev Author: jsauerbach Date: 2008-11-17 17:05:46 +0000 (Mon, 17 Nov 2008) Log Message: ----------- Fill in some sections that are just fast-edits of stuff in the old Exotask document Modified Paths: -------------- trunk/flexotask/doc/flexotaskProgramming.html Modified: trunk/flexotask/doc/flexotaskProgramming.html =================================================================== --- trunk/flexotask/doc/flexotaskProgramming.html 2008-11-17 17:05:08 UTC (rev 106) +++ trunk/flexotask/doc/flexotaskProgramming.html 2008-11-17 17:05:46 UTC (rev 107) @@ -1343,19 +1343,110 @@ <br><hr><h3><a name="tasks"></a>Writing Flexotasks</h3> -<p>Under construction. +<p>This section is still being written. For the moment you are +referred to the <a href="#samples">sample programs</a> for ideas about what +the actual code of Flexotasks should look like. <br><hr><h3><a name="validation"/>Validating and Instantiating Flexible Task Graphs</h3> -<p>Under construction. +The <a +href="com/ibm/realtime/flexotask/template/FlexotaskTemplate.html">FlexotaskTemplate</a> +class provides five different validate methods providing convenient +combinations of four arguments, of which only one argument (the +<b>schedulerKind</b>) is always required. Here is a description of +what the arguments do. +<ul> +<li><b>schedulerKind--</b> String name of the kind of scheduler to use +in running the graph. The <b>TTScheduler</b> (time triggered +scheduler) is always available. Other schedulers are provided by +plugins (which then also contribute to the generated runtime). This +is the only "required" argument and is present in all five +<b>validate</b> methods. + +<li><b>schedulingData--</b> conveys platform-specific worst case +execution time (WCET) and worst case allocation (WCA) information for +use by the scheduler, as discussed in the next section. If this +argument is omitted, the scheduler assumes default heap sizes for +Flexotask private heaps and assumes that the worst case execution +times of tasks are short enough to make the schedule feasible without +further checking. This argument is optional. The <b>TTScheduler</b> +only looks at WCA information and ignores WCET information. The WCA +information is used to estimate heap sizes and garbage collection +strategies for the private memory areas. + +<li><b>initializationMap--</b> provides values to be passed as the +parameter arguments to one or more Flexotasks' <b>initialize</b> +methods. If those Flexotasks already have default parameter values +specified as part of the template, the defaults are overridden by the +contents of <b>initializationMap</b>. Weakly isolated Flexotasks +typically use dynamically specified parameters to communicate with the +rest of the Java application, as in the <b>communicating</b> sample +program. Strongly isolated Flexotasks receive deep copies of their +parameters. If this argument is missing it is assumed to be the empty +map. + +<li><b>distributionContext--</b> is present only in the most general +of the five <b>validate</b> methods. It provides information that can +be used to distribute the graph across multiple machines. If missing, +the graph is assumed not to be distributed. Distributed graphs +require the presence of a system extension called a +<em>distributer</em>. The present system does not contain any +distributers. +</ul> + <br><hr><h3><a name="wcet"/>Specifying WCET and WCA information</h3> -<p>Under construction. +<p>The <a +href="com/ibm/realtime/flexotask/scheduling/FlexotaskSchedulingData.html">FlexotaskSchedulingData</a> +data structure is used to pass platform-specific WCET and WCA +information to the scheduler. It provides a scheduler-independent +framework for specifying this information, but individual schedulers +may extend the class to provide scheduler-specific addenda or a more +convenient interface given the properties of the scheduler. The +scheduling data is expressed as a map from FlexotaskTemplate elements +(task or connection) to <a +href="com/ibm/realtime/flexotask/scheduling/FlexotaskTaskSchedulingElement.html">FlexotaskTaskSchedulingElement</a> +and <a +href="com/ibm/realtime/flexotask/scheduling/FlexotaskConnectionSchedulingElement.html">FlexotaskConnectionSchedulingElement</a> +structures, with the addition of an <a +href="com/ibm/realtime/flexotask/scheduling/FlexotaskGlobalSchedulingElement.html">FlexotaskGlobalSchedulingElement</a> +structure. Tasks have WCETs both for execution and for garbage +collection, and have WCAs, while connections have only WCETs for their +deep cloning operations. The global scheduling element provides an +initial and maximum total aggregate size for Flexotask private heaps +and also specifies the number of cores available on the target +platform. +<p>The TTScheduler only considers WCA and heap size information. It +makes no use of WCETs or information about the number of cores. Other +schedulers are being developed that will use some more of this +information. + <br><hr><h3><a name="cloning"/>Deep cloning at test time</h3> -<p>Under construction. +<p>When testing a Flexotask graph (not running on a real-time VM), the +Flexotask runtime must simulate the deep cloning operation that is +done specially in the real-time VM at the system level. It uses Java +level (including reflective) operations to do this, which is not +ideal, since Java reflection does not provide a consistent +side-effect-free way of constructing objects. The solution is to use +the various implementations of the <a +href="com/ibm/realtime/flexotask/cloning/DeepCloner.html">DeepCloner</a> +interface provided in the <a +href="com/ibm/realtime/flexotask/cloning/package-summary.html">com.ibm.realtime.flexotasks.cloning</a> +package, or create one of your own. By default, the system uses +either the <b>SerializableCloner</b> (for objects that implement +Serializable) or the <b>DefaultCloner</b> (otherwise). The latter +assumes that the object implements a <b>deepClone()</b> method, which +is fine when you are creating the data types anew for the application, +but not so good when you are using existing types. To create an +association between a <b>Class</b> and its <b>DeepCloner</b> use the +<a +href="com/ibm/realtime/flexotask/cloning/CloningSupport.html#setCloner(java.lang.Class,%20com.ibm.realtime.flexotask.cloning.DeepCloner)">CloningSupport.setCloner()</a> +method. Note that reflective cloning is not used when executing in +real-time mode, so the performance of your cloning solution is not an +issue in determining WCETs for connections. <br><hr><h3><a name="tracing">Using the Tracing Support</h3> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-17 17:05:14
|
Revision: 106 http://flexotask.svn.sourceforge.net/flexotask/?rev=106&view=rev Author: jsauerbach Date: 2008-11-17 17:05:08 +0000 (Mon, 17 Nov 2008) Log Message: ----------- Javadoc edits Modified Paths: -------------- trunk/flexotask/src/com/ibm/realtime/flexotask/scheduling/FlexotaskGlobalSchedulingElement.java trunk/flexotask/src/com/ibm/realtime/flexotask/scheduling/FlexotaskSchedulingData.java Modified: trunk/flexotask/src/com/ibm/realtime/flexotask/scheduling/FlexotaskGlobalSchedulingElement.java =================================================================== --- trunk/flexotask/src/com/ibm/realtime/flexotask/scheduling/FlexotaskGlobalSchedulingElement.java 2008-11-17 16:31:23 UTC (rev 105) +++ trunk/flexotask/src/com/ibm/realtime/flexotask/scheduling/FlexotaskGlobalSchedulingElement.java 2008-11-17 17:05:08 UTC (rev 106) @@ -32,14 +32,14 @@ * a stream graph. Defaults to 1. */ private int numCores; - /** Create an 'empty' (all zeros) FlexotaskGlobalSchedulingElement */ + /** Create an 'empty' FlexotaskGlobalSchedulingElement (zeros for heap size initial and maximum, and one core) */ public FlexotaskGlobalSchedulingElement() { this(0, 0, 1); } /** - * Create a new FlexotaskGlobalSchedulingElement + * Create a new FlexotaskGlobalSchedulingElement specifying the initial and maximum heap size but letting cores default to 1 * @param initialHeapSize the initial heap size * @param maxHeapSize the maximum heap size */ Modified: trunk/flexotask/src/com/ibm/realtime/flexotask/scheduling/FlexotaskSchedulingData.java =================================================================== --- trunk/flexotask/src/com/ibm/realtime/flexotask/scheduling/FlexotaskSchedulingData.java 2008-11-17 16:31:23 UTC (rev 105) +++ trunk/flexotask/src/com/ibm/realtime/flexotask/scheduling/FlexotaskSchedulingData.java 2008-11-17 17:05:08 UTC (rev 106) @@ -43,14 +43,17 @@ } /** - * Convenience constructor for use with the AbstractSchedulingData's implementation of getHeapSize(), - * and where all tasks are assumed to have the same WCA. This jump-starts working with - * scheduling data + * Create a complete FlexotaskSchedulingData on the simplified assumption that all tasks in the template have the same WCA and no + * WCET information is to be provided. This is often good enough for simple graphs. Also, this starting point can be modified + * by replacing individual task's information or adding connection information. + * @param template the FlexotaskTemplate whose tasks are to be assigned the common WCA + * @param WCA the common WCA to be assigned to all tasks + * @param globalData the FlexotaskGlobalSchedulingElement to use (this may be used to specify total heap space) */ - public FlexotaskSchedulingData(FlexotaskTemplate spec, long WCA, FlexotaskGlobalSchedulingElement globalData) + public FlexotaskSchedulingData(FlexotaskTemplate template, long WCA, FlexotaskGlobalSchedulingElement globalData) { setGlobalScheduling(globalData); - for (Iterator iter = spec.getTasks().iterator(); iter.hasNext();) { + for (Iterator iter = template.getTasks().iterator(); iter.hasNext();) { FlexotaskTaskTemplate task = (FlexotaskTaskTemplate) iter.next(); FlexotaskTaskSchedulingElement taskWCA = new FlexotaskTaskSchedulingElement(); taskWCA.setWCA(WCA); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-17 16:31:32
|
Revision: 105 http://flexotask.svn.sourceforge.net/flexotask/?rev=105&view=rev Author: jsauerbach Date: 2008-11-17 16:31:23 +0000 (Mon, 17 Nov 2008) Log Message: ----------- Fix validation bug: Array.newInstance methods should be illegal only if allocation is forbidden (while Class.newInstance methods remain illegal always since they reflectively invoke unknown constructors). Also, restore accidentally omitted check for allocating methods when allocation is forbidden. Also, add support for safe-method-declarations even though no such file is currently supplied. This is step one of a future change in which both immutability-declarations and safe-method-declarations can be provided outside the classpath. Modified Paths: -------------- trunk/flexotask/src/com/ibm/realtime/flexotask/validation/CommonCodeValidator.java Modified: trunk/flexotask/src/com/ibm/realtime/flexotask/validation/CommonCodeValidator.java =================================================================== --- trunk/flexotask/src/com/ibm/realtime/flexotask/validation/CommonCodeValidator.java 2008-11-17 16:28:37 UTC (rev 104) +++ trunk/flexotask/src/com/ibm/realtime/flexotask/validation/CommonCodeValidator.java 2008-11-17 16:31:23 UTC (rev 105) @@ -90,11 +90,15 @@ /** The set of classes that are exempt from checking because they are part of the system and have been * specially designed for safety - /** The set of classes that are exempt from checking because they are part of the system and have been - * specially designed for safety */ private static Set exemptClasses = new HashSet(); + /** The set of methods that are exempt from checking because they would cause validation failure on some + * systems, but what they do is actually safe. These can be augmented by user editing of a resource stored + * in the same package as this class (like immutability-declarations). This must be done with great care. + */ + private static Set exemptMethods = new HashSet(); + static { try { trace("Initializing exempt classes"); @@ -110,6 +114,8 @@ exemptClasses.add(SimulationSupport.class.getName()); trace("Reading immutability declarations"); immutabilityInit(); + trace("Reading safe method declarations"); + safeMethodInit(); trace("Adding illegal methods"); Set im = new HashSet(); im.add(MethodWrapper.create(Object.class, "wait", "()V", false)); @@ -117,6 +123,10 @@ im.add(MethodWrapper.create(Object.class, "wait", "(JI)V", false)); im.add(MethodWrapper.create(Object.class, "notify", "()V", false)); im.add(MethodWrapper.create(Object.class, "notifyAll", "()V", false)); + /* The non-array newInstance methods are always illegal because they invoke constructors; therefore, + * they are illegal for the same reason that invoke is illegal. However, the array newInstance + * methods are only illegal when allocation is forbidden. + */ im.add(MethodWrapper.create(Class.class, "newInstance", "()Ljava/lang/Object;", false)); im.add(MethodWrapper.create(Constructor.class, "newInstance", "([Ljava/lang/Object;)Ljava/lang/Object;", false)); @@ -124,10 +134,6 @@ "(Ljava/lang/Object;Ljava/lang/Object;)V", false)); im.add(MethodWrapper.create(Field.class, "get", "(Ljava/lang/Object;)Ljava/lang/Object;", false)); - im.add(MethodWrapper.create(Array.class, "newInstance", - "(Ljava/lang/Class;I)Ljava/lang/Object;", true)); - im.add(MethodWrapper.create(Array.class, "newInstance", - "(Ljava/lang/Class;[I)Ljava/lang/Object;", true)); im.add(MethodWrapper.create(Array.class, "set", "(Ljava/lang/Object;ILjava/lang/Object;)V", true)); im.add(MethodWrapper.create(Array.class, "get", @@ -205,7 +211,13 @@ illegalIfIsolated = Collections.unmodifiableSet(ii); trace("Illegal-when-isolated methods added"); trace("adding methods that are illegal if allocation is forbidden"); - allocationMethods = Collections.singleton(MethodWrapper.create(Object.class, "clone", "()Ljava/lang/Object;", false)); + Set ia = new HashSet(); + ia.add(MethodWrapper.create(Object.class, "clone", "()Ljava/lang/Object;", false)); + ia.add(MethodWrapper.create(Array.class, "newInstance", + "(Ljava/lang/Class;I)Ljava/lang/Object;", true)); + ia.add(MethodWrapper.create(Array.class, "newInstance", + "(Ljava/lang/Class;[I)Ljava/lang/Object;", true)); + allocationMethods = Collections.unmodifiableSet(ia); trace("done adding allocation-sensitive methods"); } catch (Exception e) { /* Serious error for these not to be found */ @@ -278,7 +290,7 @@ this.context = context; } - /** + /** * Constructor. * @param context the validation context. * @param template the flexotask template checked @@ -532,6 +544,12 @@ if (hasBeenOrWillBeAnalyzed(toConsider)) { return; } + if (exemptMethods.contains(toConsider)) { + /* Give methods declared as exempt by the user a free pass. The user is well-advised to use this facility cautiously + */ + exemptMethods.add(toConsider); + return; + } String methodClass = toConsider.getMethodClass().getName(); /* The following test is done with names because at development time the class loader used for * analysis is not the context classloader @@ -551,7 +569,8 @@ } } if (illegalMethods.contains(toConsider) || - ((defaultGetStaticChecking == CHECK_IMMUTABLE) && illegalIfIsolated.contains(toConsider))) { + ((defaultGetStaticChecking == CHECK_IMMUTABLE) && illegalIfIsolated.contains(toConsider)) || + mayNotAllocate && allocationMethods.contains(toConsider)) { StringBuilder builder = new StringBuilder("Illegal method: ").append(toConsider).append(" in ").append(caller); getCallChain(builder, caller); addMethodDeclarationViolation(Severity.ERROR, caller, builder.toString()); @@ -564,7 +583,7 @@ String sig = toConsider.getMethodSignature(); if (sig.endsWith(";")) { /* A native method that returns a class makes that class live. We rely on two things to ensure that native - * methods cannot introduce classes in any other way: (1) when executing on an flexotask scheduler thread, + * methods cannot introduce classes in any other way: (1) when executing on a Flexotask scheduler thread, * JNI is prohibited from introducing objects by modifying reference fields (2) we audit INL methods to * make sure they don't do anything bad. We also have to audit system-provided JNI methods to make sure * that the objects they return, even by "legal" means, are not objects that were cached somewhere and @@ -1210,6 +1229,49 @@ } /** + * Initialize exemptMethods set from user declarations + */ + private static void safeMethodInit() throws IOException { + InputStream safes = CommonCodeValidator.class.getResourceAsStream("safe-method-declarations"); + if (safes == null) { + /* resource is optional */ + return; + } + BufferedReader rdr = new BufferedReader(new InputStreamReader(safes)); + String line; + line = rdr.readLine(); + Set safeMethods = new HashSet(); + while (line != null) { + StringTokenizer tok = new StringTokenizer(line); + if (tok.countTokens() != 4) { + throw new IOException("Malformed line in safe-method-declarations: " + line); + } + Class clazz; + try { + clazz = Class.forName(tok.nextToken()); + } catch (ClassNotFoundException e) { + /* Perhaps this class doesn't exist in the current VM */ + trace("Class not found in immutability declaration: " + line); + clazz = null; + } + if (clazz != null) { + String methodName = tok.nextToken(); + String sig = tok.nextToken(); + boolean isStatic = Boolean.valueOf(tok.nextToken()).booleanValue(); + try { + MethodWrapper method = MethodWrapper.create(clazz, methodName, sig, isStatic); + safeMethods.add(method); + } catch (AnalysisException e) { + /* Perhaps this method doesn't exist in the current VM */ + trace("Class not found in immutability declaration: " + line); + } + } + line = rdr.readLine(); + } + CommonCodeValidator.exemptMethods = Collections.unmodifiableSet(safeMethods); + } + + /** * Returns true if provided class object is a <code>AtomicFlexotask</code> * subclass, otherwise false. * @param clazz the class object This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-17 16:28:42
|
Revision: 104 http://flexotask.svn.sourceforge.net/flexotask/?rev=104&view=rev Author: jsauerbach Date: 2008-11-17 16:28:37 +0000 (Mon, 17 Nov 2008) Log Message: ----------- Fix bugs in the code that identifies live classes for deep-cloned parameters. This consists of (1) ensuring that object identity is tracked (not relying on equals() methods). And, (2) ensuring that only reference instance fields are checked (ignoring primitive and static fields). Modified Paths: -------------- trunk/flexotask/src/com/ibm/realtime/flexotask/system/CodeValidator.java Modified: trunk/flexotask/src/com/ibm/realtime/flexotask/system/CodeValidator.java =================================================================== --- trunk/flexotask/src/com/ibm/realtime/flexotask/system/CodeValidator.java 2008-11-14 21:07:25 UTC (rev 103) +++ trunk/flexotask/src/com/ibm/realtime/flexotask/system/CodeValidator.java 2008-11-17 16:28:37 UTC (rev 104) @@ -14,6 +14,7 @@ package com.ibm.realtime.flexotask.system; import java.lang.reflect.Field; +import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; @@ -331,7 +332,7 @@ if (parameter == null) { return; } - if (!alreadyConsidered.add(parameter)) { + if (!alreadyConsidered.add(new IdentityWrapper(parameter))) { return; } Class cls = parameter.getClass(); @@ -356,6 +357,10 @@ for (int i = 0; i < fields.length; i++) { Field field = fields[i]; field.setAccessible(true); + if (field.getType().isPrimitive() || (field.getModifiers() & Modifier.STATIC) != 0) { + continue; + } + /* Examine only reference instance fields */ Object dependent; try { dependent = field.get(parameter); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-14 21:07:29
|
Revision: 103 http://flexotask.svn.sourceforge.net/flexotask/?rev=103&view=rev Author: jsauerbach Date: 2008-11-14 21:07:25 +0000 (Fri, 14 Nov 2008) Log Message: ----------- Provide full text links for paper. Modified Paths: -------------- trunk/flexotask/doc/flexotaskProgramming.html Modified: trunk/flexotask/doc/flexotaskProgramming.html =================================================================== --- trunk/flexotask/doc/flexotaskProgramming.html 2008-11-14 21:04:52 UTC (rev 102) +++ trunk/flexotask/doc/flexotaskProgramming.html 2008-11-14 21:07:25 UTC (rev 103) @@ -89,28 +89,47 @@ <p>The Flexible Task Graph systems is described in a paper in LCTES 2008, and the four programming models that it consolidates are each -described in an earlier paper. Here are links to all five papers. +described in an earlier paper. The Exotask work (which formed the +codebase that was extended to create the present codebase) also has a +longer paper that has been accepted but not yet published. Links to all six +papers are given here. <ul> -<li><a href="http://portal.acm.org/citation.cfm?id=1375659">Flexible +<li><a +href="http://domino.research.ibm.com/comm/research_people.nsf/pages/bacon.refereed-pubs.html/$FILE/Auerbach08Flexible-final.pdf">Flexible task graphs: a unified restricted thread programming model for java</a> by Joshua Auerbach, David F. Bacon, Rachid Guerraoui, Jesper -Honig Spring, and Jan Vitek, published in LCTES 2008. +Honig Spring, and Jan Vitek, published in LCTES 2008. Describes the present work. + <li><a -href="http://portal.acm.org/citation.cfm?id=1133255.1134015">Eventrons: +href="http://domino.research.ibm.com/comm/research_people.nsf/pages/bacon.refereed-pubs.html/$FILE/Spoonhower06Eventrons.pdf">Eventrons: a Safe Programming Construct for High-frequency Hard Real-time Applications</a> by D. Spoonhower, J. Auerbach, D. F. Bacon, P. -Cheng, and D. Grove, published in PLDI 2006. -<li><a href="http://portal.acm.org/citation.cfm?id=1254775">Java Takes -Flight: Time-portable Real-time Programming with Exotasks</a> by -J.Auerbach, D. F. Bacon, D. T. Iercan, C. M. Kirsch, V. T. Rajan, -H. R. Roeck, and R. Trummer, published in LCTES 2007 -<li><a href="http://portal.acm.org/citation.cfm?id=1254837">Reflexes: +Cheng, and D. Grove, published in PLDI 2006. + +<li><a +href="http://domino.research.ibm.com/comm/research_people.nsf/pages/bacon.refereed-pubs.html/$FILE/Auerbach07Java.pdf"> +Java Takes Flight: Time-portable Real-time Programming with Exotasks +</a> by J.Auerbach, D. F. Bacon, D. T. Iercan, C. M. Kirsch, +V. T. Rajan, H. R. Roeck, and R. Trummer, published in LCTES 2007 + +<li><a +href="http://domino.research.ibm.com/comm/research_people.nsf/pages/bacon.refereed-pubs.html/$FILE/Auerbach08LowLatency-submission.pdf">Low-Latency +Time-Portable Real-Time Programming with Exotasks</a> by J.Auerbach, +D. F. Bacon, D. T. Iercan, C. M. Kirsch, V. T. Rajan, H. R. Roeck, +and R. Trummer, accepted by TECS. A more detailed treatment of +Exotasks that also described the integration with Eventrons, a +precursor to this work. + +<li><a +href="http://www.cs.purdue.edu/homes/jv/pubs/VEE07.pdf">Reflexes: abstractions for highly responsive systems</a> by J. Spring, F. Pizlo, -R. Guerraoui, and J. Vitek, published in VEE 2007. -<li><a href="http://portal.acm.org/citation.cfm?id=1297043">Streamflex: -high-throughput stream programming in java</a> by J. Spring, J. Privat, -R. Guerraoui, J. Vitek, published in OOPSLA 2007 +R. Guerraoui, and J. Vitek, published in VEE 2007. + +<li><a +href="http://www.cs.purdue.edu/homes/jv/pubs/oopsla07.pdf">Streamflex: +high-throughput stream programming in java</a> by J. Spring, +J. Privat, R. Guerraoui, J. Vitek, published in OOPSLA 2007 </ul> <br><hr><h2><a name="application"></a>Notes for Application Programmers</h2> @@ -1022,7 +1041,7 @@ another area. <p>As mentioned in the Flexible Task Graphs paper and explained in -more detail in the LCTES 2007 Exotasks paper, the way that real-time +more detail in the two Exotasks papers, the way that real-time scheduling is expressed can vary according to the choice of a timing grammar. There are always at least two choices provided, but there will be more if additional timing grammar plugins have been installed. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-14 21:05:03
|
Revision: 102 http://flexotask.svn.sourceforge.net/flexotask/?rev=102&view=rev Author: jsauerbach Date: 2008-11-14 21:04:52 +0000 (Fri, 14 Nov 2008) Log Message: ----------- adjust builder parameters Modified Paths: -------------- trunk/flexotask-htdocs/index.html trunk/flexotask-tuningfork/.externalToolBuilders/flexotask-tuningfork debug.xml [Builder].launch Modified: trunk/flexotask-htdocs/index.html =================================================================== --- trunk/flexotask-htdocs/index.html 2008-11-14 17:12:16 UTC (rev 101) +++ trunk/flexotask-htdocs/index.html 2008-11-14 21:04:52 UTC (rev 102) @@ -10,31 +10,87 @@ <h1 style="text-align: center; color: #ff0000">Flexible Task Graphs</h1> </center> -<p>This site provides the source to the non-JVM-dependent -parts of the Flexible Task Graphs system as described in the paper <a -href="http://portal.acm.org/citation.cfm?id=1375659">Flexible task -graphs: a unified restricted thread programming model for java</a> by -Joshua Auerbach, David F. Bacon, Rachid Guerraoui, Jesper Honig -Spring, and Jan Vitek, published in LCTES 2008. +<p>This site provides the source to the non-JVM-dependent parts of the +<b>Flexible Task Graphs</b> system as described in the following +paper, which provides an introduction to this work. +<ul> +<li><a +href="http://domino.research.ibm.com/comm/research_people.nsf/pages/bacon.refereed-pubs.html/$FILE/Auerbach08Flexible-final.pdf">Flexible +task graphs: a unified restricted thread programming model for +java</a> by Joshua Auerbach, David F. Bacon, Rachid Guerraoui, Jesper +Honig Spring, and Jan Vitek, published in LCTES 2008. +</ul> +<p>The JVM-dependent parts of the system (for IBM's WebSphere Real +Time VM) will be made available separately on <a +href="http://www.alphaworks.ibm.com">IBM AlphaWorks</a> in the near +future. The expected date is November 18 but the details are beyond +our personal control. -<p>See also <a href="http://sourceforge.net/projects/flexotask">our -sourceforge project page</a>. +<p>Once the IBM AlphaWorks release occurs, you will be able to go to +that web site to receive integrated instructions allowing you to +install both portions of the support. Meanwhile, you are welcome to +install just the open source portions from this site. Installation is +via the Eclipse Update Mechanism as explained <a +href="http://flexotask.wiki.sourceforge.net/installing">in our +installation instructions wiki page</a>. -<p>The source repository has been populated on an initial basis, but we -do not yet provide a prepackaged build for convenient installation. Those -especially interested in getting started with the code are referred to -<a href="http://flexotask.wiki.sourceforge.net/gettingStartedForNow"> -our preliminary "getting started" page</a>. If you prefer to wait for -the prepackaged build and want to be kept informed of progress, -subscribe to <a -href="https://lists.sourceforge.net/lists/listinfo/flexotask-users"> -the flexotask-users mailing list</a>. Subscribers to that list will -also be able to send email to it. +<p>The Flexible Task Graphs open source project, far from reflecting +"completed" work, is an active project with much left to accomplish. +We expect to accept contributions from new authors. Our goal is to +obtain consensus on the best possible restricted thread programming +model to incorporate into the next generation of standards for Real +Time Java. Contributions can take the form of new plugins (timing +grammars, schedulers, distributers, or tracing packages), new +front-end tools, or improvements to the framework itself. Please +contact <a href="mailto:jsa...@us...">Joshua +Auerbach</a>. You may also visit our <a +href="http://sourceforge.net/projects/flexotask">our sourceforge +project page</a> for more information and subscribe to one or more of +our mailing lists. The mailing lists are structured so that all +subscribers (but only subscribers) may send to them. -<p>During this formative period, please also feel free to direct questions -about this project to <a -href="mailto:jsa...@us...">Joshua Auerbach</a>. +<p>The Flexible Task Graphs open source codebase was developed at IBM +(or under research agreements with IBM) from the older Exotask code +base and is being made available by IBM under the Eclipse Public +License. Primary developers were Joshua Auerbach and Jesper Honig +Spring, with substantial design input from David Bacon and Jan Vitek. +However, Flexible Task Graphs are a unification of four previous +programming models, and the contributers to those models are therefore +indirect contributers to the present work. Here are pointers to the +older background papers. +<ul> +<li><a +href="http://domino.research.ibm.com/comm/research_people.nsf/pages/bacon.refereed-pubs.html/$FILE/Spoonhower06Eventrons.pdf">Eventrons: +a Safe Programming Construct for High-frequency Hard Real-time +Applications</a> by D. Spoonhower, J. Auerbach, D. F. Bacon, P. +Cheng, and D. Grove, published in PLDI 2006. + +<li><a +href="http://domino.research.ibm.com/comm/research_people.nsf/pages/bacon.refereed-pubs.html/$FILE/Auerbach07Java.pdf"> +Java Takes Flight: Time-portable Real-time Programming with Exotasks +</a> by J.Auerbach, D. F. Bacon, D. T. Iercan, C. M. Kirsch, +V. T. Rajan, H. R. Roeck, and R. Trummer, published in LCTES 2007 + +<li><a +href="http://domino.research.ibm.com/comm/research_people.nsf/pages/bacon.refereed-pubs.html/$FILE/Auerbach08LowLatency-submission.pdf">Low-Latency +Time-Portable Real-Time Programming with Exotasks</a> by J.Auerbach, +D. F. Bacon, D. T. Iercan, C. M. Kirsch, V. T. Rajan, H. R. Roeck, +and R. Trummer, accepted by TECS. A more detailed treatment of +Exotasks that also described the integration with Eventrons, a +precursor to this work. + +<li><a +href="http://www.cs.purdue.edu/homes/jv/pubs/VEE07.pdf">Reflexes: +abstractions for highly responsive systems</a> by J. Spring, F. Pizlo, +R. Guerraoui, and J. Vitek, published in VEE 2007. + +<li><a +href="http://www.cs.purdue.edu/homes/jv/pubs/oopsla07.pdf">Streamflex: +high-throughput stream programming in java</a> by J. Spring, +J. Privat, R. Guerraoui, J. Vitek, published in OOPSLA 2007 +</ul> + <br><hr><br> <a href="http://sourceforge.net"><img src="http://sflogo.sourceforge.net/sflogo.php?group_id=242572&type=3" Modified: trunk/flexotask-tuningfork/.externalToolBuilders/flexotask-tuningfork debug.xml [Builder].launch =================================================================== --- trunk/flexotask-tuningfork/.externalToolBuilders/flexotask-tuningfork debug.xml [Builder].launch 2008-11-14 17:12:16 UTC (rev 101) +++ trunk/flexotask-tuningfork/.externalToolBuilders/flexotask-tuningfork debug.xml [Builder].launch 2008-11-14 21:04:52 UTC (rev 102) @@ -11,10 +11,11 @@ <booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> <booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/> <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/> -<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/IBM-J9"/> <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ant.internal.ui.antsupport.InternalAntRunner"/> <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="flexotask-tuningfork"/> <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_NAME" value="IBM-J9"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_TYPE_ID" value="org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType"/> <stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/flexotask-tuningfork/debug.xml}"/> <stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,auto,"/> <booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-14 17:12:19
|
Revision: 101 http://flexotask.svn.sourceforge.net/flexotask/?rev=101&view=rev Author: jsauerbach Date: 2008-11-14 17:12:16 +0000 (Fri, 14 Nov 2008) Log Message: ----------- Finish editor section of the document. The document is now deemed good enough to support the public release on Nov 18 and focus will shift to the public web page and wiki. Of course the document needs a lot more work. Modified Paths: -------------- trunk/flexotask/doc/flexotaskProgramming.html trunk/flexotask/doc/palette.jpg Added Paths: ----------- trunk/flexotask/doc/changingPorts.jpg trunk/flexotask/doc/communicatorProperties.jpg Added: trunk/flexotask/doc/changingPorts.jpg =================================================================== (Binary files differ) Property changes on: trunk/flexotask/doc/changingPorts.jpg ___________________________________________________________________ Added: svn:mime-type + image/jpeg Added: trunk/flexotask/doc/communicatorProperties.jpg =================================================================== (Binary files differ) Property changes on: trunk/flexotask/doc/communicatorProperties.jpg ___________________________________________________________________ Added: svn:mime-type + image/jpeg Modified: trunk/flexotask/doc/flexotaskProgramming.html =================================================================== --- trunk/flexotask/doc/flexotaskProgramming.html 2008-11-14 15:32:01 UTC (rev 100) +++ trunk/flexotask/doc/flexotaskProgramming.html 2008-11-14 17:12:16 UTC (rev 101) @@ -24,6 +24,8 @@ <ul> <li><a href="#post-install">Post-Install Testing</a> <li><a href="#papers">Relevant Papers</a> +<li><a href="#application">Notes for Application Programmers</a> +<ul> <li><a href="#samples">The Samples</a> <ul> <li><a href="#pendulum">The Inverted Pendulum Example from the LCTES 2007 Exotasks Paper</a> @@ -32,8 +34,6 @@ <li><a href="#types">An Example for Experimenting with allowed Data Types</a> <li><a href="#highfreq">The High Frequency Reader Example from the LCTES 2008 Paper</a> </ul> -<li><a href="#application">Notes for Application Programmers</a> -<ul> <li><a href="#creating">Creating and Converting Flexotask Projects</a> <li><a href="#simReal">Simulated and real-time execution modes</a> <ul> @@ -47,7 +47,14 @@ <li><a href="#editor">The Flexotask Editor</a> </ul> <li><a href="#tasks">Writing Flexotasks</a> +<li><a href="#validation">Validating and Instantiating Flexible Task Graphs</a> +<li><a href="#wcet">Specifying WCET and WCA information</a> +<li><a href="#cloning">Deep cloning at test time</a> +<li><a href="#tracing">Using the Tracing Support</a> </ul> +<li><a href="#extender">Notes for Flexotask System Extenders</a> +<li><a href="#developer">Notes for Flexotask Core Developers</a> +<li><a href="#toolWriter">Notes for Flexotask Tool Developers</a> </ul> <br><hr><h2><a name="post-install"></a>Post-Install Testing</h2> @@ -106,8 +113,10 @@ R. Guerraoui, J. Vitek, published in OOPSLA 2007 </ul> -<br><hr><h2><a name="samples"></a>The Samples</h2> +<br><hr><h2><a name="application"></a>Notes for Application Programmers</h2> +<br><hr><h3><a name="samples"></a>The Samples</h3> + <p>The <b>flexotask-functiontest</b> project will run as a JUnit test for quick verification after system changes, but it is deliberately structured as a set of individual sample programs that can be @@ -115,8 +124,8 @@ occupies a package. The procedure for creating this project is described under <a href="#post-install">post-install testing</a>. -<br><hr><h3><a name="pendulum"></a>The Inverted Pendulum example from the -LCTES 2007 Exotasks Paper</h3> +<br><hr><h4><a name="pendulum"></a>The Inverted Pendulum example from the +LCTES 2007 Exotasks Paper</h4> <p>The package for this example is called <b>lctes2007</b> The example does not do anything very exciting but it allows you to do the @@ -179,8 +188,8 @@ Flexotask editor to complete the example. This limitation may be removed soon if someone wants to work on eliminating it. -<br><hr><h3><a name="modes"></a>A Multiple Mode Example also illustrating -Simple Parameters</h3> +<br><hr><h4><a name="modes"></a>A Multiple Mode Example also illustrating +Simple Parameters</h4> <p>The <b>modes</b> example illustrates the more advanced of the two supplied timing grammars. When you examine <b>modes/Example.ftg</b> @@ -216,8 +225,8 @@ class) but they use the parameter as an <b>Integer</b> comparand to cause the two predicates to perform different tests. -<br><hr><h3><a name="communicating"></a>A Weakly Isolated Task Graph -(Communicating Parameters)</h3> +<br><hr><h4><a name="communicating"></a>A Weakly Isolated Task Graph +(Communicating Parameters)</h4> <p>The <b>communicating</b> example is an example of how a Flexible Task Graph can use pinned reference-immutable objects and the exchange @@ -244,7 +253,7 @@ href="com/ibm/realtime/flexotask/tools/FlexotaskXMLParser.html">FlexotaskXMLParser</a> class programmatically. -<br><hr><h3><a name="types"></a>An Example for Experimenting with allowed Data Types</h3> +<br><hr><h4><a name="types"></a>An Example for Experimenting with allowed Data Types</h4> <p>The <b>types</b> example illustrates that both <b>ArrayList</b> and <b>HashMap</b> are acceptable types to be passed between Flexotasks @@ -262,7 +271,7 @@ <b>Main</b> class of this example constructs the graph directly and then validates it. The editor and XML parser were not used anywhere in the development cycle. -<br><hr><h3><a name="highfreq"></a>The High Frequency Reader Example from the LCTES 2008 Paper</h3> +<br><hr><h4><a name="highfreq"></a>The High Frequency Reader Example from the LCTES 2008 Paper</h4> <p>The <b>highfreqread</b> example closely resembles the code used to collect the data for Section 5.1 of our Flexible Task Graphs paper @@ -294,8 +303,6 @@ running in the same virtual machine with the task graph. </ul> -<br><hr><h2><a name="application"></a>Notes for Application Programmers</h2> - <p>This section provides information that is of use for writing and testing actual Flexotask applications. @@ -959,6 +966,7 @@ <li><a href="#editorGlobal">Specifying Global Properties</a> <li><a href="#editorGlobalTiming">Specifying Global Timing Properties</a> <li><a href="#editorTask">Specifying Task Properties</a> +<li><a href="#editorCommunicator">Specifying Communicator Properties</a> <li><a href="#editorConnection">Specifying Connection Properties</a> <li><a href="#editorPort">Specifying Ports and their Properties</a> </ul> @@ -968,7 +976,11 @@ <p>To use the Flexotask Editor, just create a file with the extension <b>.ftg</b> (for example, using <b>File→New→File</b>). The editor become the default editor for that file and will help you -create an XML-format Flexotask template stored in that file. +create an XML-format Flexotask template stored in that file. If you +prefer, there is also a creation wizard +(<b>File→New→Other</b>), then open the <b>Flexotask</b> +category and select <b>Flexotask Graph</b>). Either way, you end up +in the same editor. <p>In choosing the folder to contain the <b>.ftg</b> file, bear in mind your intended use. If you plan to parse the file directly using @@ -986,10 +998,10 @@ 3.4 the palette control looks like this. <p><img width=229 height=129 src="paletteControl.jpg"/> -g + <p>Clicking on the control reveals the palette, which looks like this. -<p><img width=150 height=283 src="palette.jpg"/> +<p><img width=140 height=305 src="palette.jpg"/> <p>The palette will also fly out temporarily when you simply place the mouse cursor on the control. In any case, the palette can be @@ -1030,6 +1042,33 @@ <p><img width=401 height=265 src="simpleGraph.jpg"/> +<p>In creating connections, bear three things in mind. + +<ol> +<li>Connections are directional. Start by clicking on the intended +source task, then move to the target and click there. Because of the +way connections are drawn it is useful to organize the graph so that +the majority of connections go from left to right (of course, this may +not be possible for all connections if the graph contains cycles). If +your initial result is not visually satisfying, tasks may be dragged +to new locations on the canvas without disconnecting the connections. + +<li>Creating connections between tasks can have the side-effect of +creating or altering the ports of those tasks. Tasks and connections +have explicit graphic representations while ports are implicit. The +anchor-points of the connections on the edges of the tasks are chosen +to make connections distinct and reduce clutter: they do <em>not</em> +represent ports. Unless you use the <b>Properties</b> view to +disambiguate, every task will get at most one input port and at most +one output port. When this is not what you want, consult the +instructions given later under <a href="#editorPort">Specifying Ports +and their Properties</a>. + +<li>When the connection tool is active you can't use it to select and +move elements on the canvas. Switch back to the select tool for that +purpose. +</ol> + <p>The tasks and connections in the editor are color coded: yellow indicates missing required information and red indicates an error. In a "complete" (ready to run) graph the tasks are grey and the @@ -1048,7 +1087,7 @@ properties. <p>Subsequent sections discuss the specifics of specifying global -properties, global timing properties, task properties, connection properties, and ports (with +properties, global timing properties, task properties, communicator properties, connection properties, and ports (with their properties) using the editor. <br><hr><h5><a name="editorGlobal"/>Specifying Global Properties</h5> @@ -1095,7 +1134,7 @@ <p>Single-click on the timing grammar box to cause the <b>Properties</b> view to show timing-related global properties -specific to the timing gramamr. The property sheet for those +specific to the timing grammar. The property sheet for those properties will vary according to the chosen grammar. For example, the TT Single Mode grammar has a single property, <b>Period</b>, which is the period of the graph's execution. This can be specified in @@ -1160,8 +1199,38 @@ <br><hr><h5><a name="editorCommunicator"/>Specifying Communicator Properties</h5> -<p>Under construction. +<p>The communicator properties are shown in the following illustration. +<p><img width=248 height=103 src="communicatorProperties.jpg"/> + +<ul> +<li><b>Communicator Name</b> is a name for the communicator. +Communicators are tasks and must have a name that is unique across all +tasks. + +<li><b>Data Type</b> is a required property declaring the type of data +(Java class name) handled by the communicator. The <b>Change</b> +button for this property brings up the familiar <b>Find Type</b> +dialog. + +<li><b>Initial Value</b> is an expression following the syntax +described in the javadoc for the <a +href="com/ibm/realtime/flexotask/template/FlexotaskTaskTemplate.html#setParameterValue(java.lang.String)">FlexotaskTaskTemplate.setParameterValue()</a> +method. It established the initial value placed in both the input +port and the output port of the communicator. + +<li><b>Timing Offsets</b>, which appears in the screenshot, is +specific to the particular timing grammar that we chose (the TT +Single-Mode grammar). In general, each timing grammar will induce a +particular set of timing properties in the property views for tasks +(including communicators) and connections. In this particular case, +you can modify the property to specify that the task should execute at +particular time offsets within the period established by the global +timing property. The units used for those offsets are the same used +for the global period (ranging from seconds to nanoseconds; see <a +href="#editorGlobalTiming">above</a>). +</ul> + <br><hr><h5><a name="editorConnection"/>Specifying Connection Properties</h5> <p>The connection properties are shown in the following illustration. @@ -1169,9 +1238,10 @@ <p><img width=298 height=214 src="connectionProperties.jpg"/> <p>The <b>Basics</b> section contains properties of the connection -itself, as described just below. The <b>Input</b> and <b>Output</b> -sections apply to the ports at either end of the connection. How -to modify this information is covered in the next subsection. +itself, as described just below. The <b>Connection Source</b> and +<b>Connection Target</b> sections apply to the ports at either end of +the connection. How to modify this information is covered in the next +subsection. <ul> <li><b>Connection Name</b> establishes a name for the connection. If @@ -1215,13 +1285,103 @@ <p>In the editor (in contrast to the template API) ports are modified (and, in some cases, created) by using the <b>Properties</b> view on -connections (not tasks). +connections (not tasks). The information under <b>Connection +Source</b> applies to the port that is the connection's source (this +is always an output port of some task). The information under +<b>Connection Target</b> applies to the connection's target (the input +port of some task). -<p>Section under construction. +<p>As previously noted, the act of creating the first outgoing +connection from a task creates an output port on that task and the act +of creating the first incoming connection to a task creates an input +port. Type information propagates from connections and communicators +to ports and hence to other connections. You need to intervene +manually if a task is intended to have more than input port or more +than one output port. +<p>The main mechanism for establishing extra ports is to change the +name of a port by editing the <b>Source Port Name</b> or <b>Target +Port Name</b> properties of a connection. You will get a message like the +following. + +<p><img width=440 height=146 src="changingPorts.jpg"/> + +<p>Select the appropriate response to either create a new port or +proceed with the renaming (if that was your intent). Due to the +automatic propagation of type information, it is a good practice to +establish the right relationship between connections and ports +<em>before</em> setting the data types of the connections (which +propagate to the ports). This is not strictly necessary, however, +since you can correct the type information incrementally. + +<p>There are also <b>Source Port Buffering</b> and <b>Target Port +Buffering</b> properties. When changing these they become combo boxes +that can be set to either <b>true</b> or <b>false</b>. An unbuffered +port holds exactly one value. A buffered port holds an indefinite +number of values, stored in the memory area of the Flexotask that owns +the port. In either case, values are moved one at a time across the +connection. + <br><hr><h3><a name="tasks"></a>Writing Flexotasks</h3> <p>Under construction. +<br><hr><h3><a name="validation"/>Validating and Instantiating Flexible Task Graphs</h3> + +<p>Under construction. + +<br><hr><h3><a name="wcet"/>Specifying WCET and WCA information</h3> + +<p>Under construction. + +<br><hr><h3><a name="cloning"/>Deep cloning at test time</h3> + +<p>Under construction. + +<br><hr><h3><a name="tracing">Using the Tracing Support</h3> + +<p>Under construction + +<br><hr><h2><a name="extender"/>Note for Flexotask System Extenders</h2> + +<p>This section is still being written. It will describe the process +for developing new timing grammars, schedulers, distributers, and +tracing packages, all of which can be added to the Flexible Task Graph +infrastructure in the form of Eclipse features and plugins. + +<p>Meanwhile, we want to support this kind of effort and the open +source framework should allow it. Please identify yourself by sending +an email to <a href="mailto:fle...@li...">the +Flexible Task Graphs users mailing list</a> after first <a +href="https://lists.sourceforge.net/lists/listinfo/flexotask-users">subscribing</a> +to that mailing list. + +<br><hr><h2><a name="developer"/>Notes for Flexotask Core Developers</h2> + +<p>This section is still being written. It will describe the process +for working directly with the source, rebuilding core features, and contributing +to the project. + +<p>Meanwhile, we want to encourage participation. Please identify +yourself by sending an email to <a +href="mailto:fle...@li...">the Flexible Task +Graphs developers mailing list</a> after first <a +href="https://lists.sourceforge.net/lists/listinfo/flexotask-developers">subscribing</a> +to that mailing list. + +<br><hr><h2><a name="toolWriter"/>Notes for Flexotask Tool Developers</h2> + +<p>This section is still being written. It will describe the interface between +the development-time system and the runtime system and will document the XML format +used by templates. The goal is to support the development of tools that generate +Flexible Task Graphs and Flexotasks as their back-end artifacts. + +<p>Meanwhile, we want to support this kind of effort and the open +source framework should allow it. Please identify yourself by sending +an email to <a href="mailto:fle...@li...">the +Flexible Task Graphs users mailing list</a> after first <a +href="https://lists.sourceforge.net/lists/listinfo/flexotask-users">subscribing</a> +to that mailing list. + </body> </html> Modified: trunk/flexotask/doc/palette.jpg =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-14 15:32:03
|
Revision: 100 http://flexotask.svn.sourceforge.net/flexotask/?rev=100&view=rev Author: jsauerbach Date: 2008-11-14 15:32:01 +0000 (Fri, 14 Nov 2008) Log Message: ----------- Further progress on documentation. Modified Paths: -------------- trunk/flexotask/doc/flexotaskProgramming.html Added Paths: ----------- trunk/flexotask/doc/connectionProperties.jpg trunk/flexotask/doc/palette.jpg trunk/flexotask/doc/paletteControl.jpg trunk/flexotask/doc/simpleGraph.jpg trunk/flexotask/doc/taskHover.jpg trunk/flexotask/doc/taskProperties.jpg Property Changed: ---------------- trunk/flexotask/doc/ Property changes on: trunk/flexotask/doc ___________________________________________________________________ Modified: svn:ignore - com resources package-list *.css allclasses-frame.html allclasses-noframe.html constant-values.html help-doc.html index.html overview-frame.html overview-summary.html serialized-form.html exotaskProgramming.txt screenshots.htm + com resources package-list *.css allclasses-frame.html allclasses-noframe.html constant-values.html help-doc.html index.html overview-frame.html overview-summary.html serialized-form.html exotaskProgramming.txt screenshots.htm screenshots_files Added: trunk/flexotask/doc/connectionProperties.jpg =================================================================== (Binary files differ) Property changes on: trunk/flexotask/doc/connectionProperties.jpg ___________________________________________________________________ Added: svn:mime-type + image/jpeg Modified: trunk/flexotask/doc/flexotaskProgramming.html =================================================================== --- trunk/flexotask/doc/flexotaskProgramming.html 2008-11-14 15:31:39 UTC (rev 99) +++ trunk/flexotask/doc/flexotaskProgramming.html 2008-11-14 15:32:01 UTC (rev 100) @@ -34,7 +34,7 @@ </ul> <li><a href="#application">Notes for Application Programmers</a> <ul> -<li><a href="#creating"></a>Creating and Converting Flexotask Projects</a> +<li><a href="#creating">Creating and Converting Flexotask Projects</a> <li><a href="#simReal">Simulated and real-time execution modes</a> <ul> <li><a href="#obtainingJ9Bridge">Obtaining the Runtime to use with IBM WebSphere Real Time</a> @@ -350,8 +350,10 @@ <li>The project has an additional builder that will check your Flexotasks for correctness during development and will rewrite any <b>AtomicFlexotask</b> classes into the <b>generated</b> directory. -At present, this builder writes to the console, so you may have noticed -its presence when it issued messages like the following: +At present, this builder writes status messages and some error +messages to to the console (it also displays errors and warnings using +Eclipse markers and entries in the <b>Problems View</b>). You may +have noticed its presence when it issued messages like the following: <pre> Running Flexotask Builder ... @@ -457,45 +459,67 @@ If you used the installation procedure supplied by IBM alphaWorks you will already have this support. -<p>Use the Eclipse Update Manager to obtain the support. The -procedure differs somewhat between Eclipse 3.3.x and Eclipse 3.4.x. +<p>Before you can visit the IBM AlphaWorks Update site, which provides +this support, you need a (no cost) IBM identity (this is used with +IBM's AlphaWorks, DeveloperWorks, Academic Initiative, and other +online facilities). Your IBM identity is typically an email address +registered with IBM and an associated password. If you have never +gone through this registration process, you can begin <a +href="https://www.ibm.com/account/profile/us?page=reg">here</a>. The +same identity will work with DeveloperWorks to obtain the WebSphere +Real Time VM itself. +<p>Once you have an IBM identity, use the Eclipse Update Manager to +obtain the support. The procedure differs somewhat between Eclipse +3.3.x and Eclipse 3.4.x. + <br><hr><h5>Obtaining the IBM Runtime using Eclipse 3.3.x</h5> <p><p>Select <b>Help→Software Updates→Find And Install</b>, then select <b>Search For New Features to Install</b> and -click <b>Next</b>. You should see an update site labeled <b>IBM -Flexible Task Graphs Runtime Update Site</b>. Select (only) that site -and click <b>Finish</b>. <p>Drill down to the feature labelled -<b>Flexible Task Graphs Runtime for IBM WebSphere Real Time</b> and -select it. Complete the dialog to install the feature. +click <b>Next</b>. You may already have an update site called <b>IBM +AlphaWorks Update Site</b>. If not, click <b>Add Remote Site</b> +and enter the following: +<pre> +Name: IBM AlphaWorks Update Site +URL: http://awwebx04.alphaworks.ibm.com/ettktechnologies/updates +</pre> +Click <b>Ok</b> and the new update site should appear. Under that +site, select the <b>Flexible Task Graphs Runtimes</b> category and +complete the dialog to install the feature. You will be prompted for +your IBM ID and password during the process. <br><hr><h5>Obtaining the IBM Runtime using Eclipse 3.4.x</h5> <p><p>Select <b>Help→Software Updates</b>, then select the <b>Available Software</b> tab. If you don't see the update site -labelled <b>IBM Flexible Task Graphs Runtime Update Site</b>, click on -<b>Manage Sites</b> and then add a checkmark to the needed site to -make it visible. Click <b>Ok</b> and the site should now be visible -in the main dialog. <p>Drill down to the feature labelled -<b>Flexible Task Graphs Runtime for IBM WebSphere Real Time</b> and -select it. Complete the dialog to install the feature. +labelled <b>IBM AlphaWorks Update Site</b> (or perhaps listed under +its URL, which is +<b>http://awwebx04.alphaworks.ibm.com/ettktechnologies/updates</b>) +then click <b>New Site</b> and enter that URL. Press <b>Ok</b> and +the site should appear. Under that site, select the <b>Flexible Task +Graphs Runtimes</b> category and complete the dialog to install the +feature. You will be prompted for your IBM ID and password during the +process. <br><hr><h4><a name="obtainingWRT"></a>Obtaining The IBM WebSphere Real Time VM Itself</h4> <p>You can download copies of the IBM WebSphere Real Time VM from <a href="http://www.ibm.com/developerworks/java/jdk/linux/download.html">IBM -DeveloperWorks</a>. You will need to establish an IBM id, answer some -survey questions, and adhere to the terms of the license. As of this -writing there are two versions available: Version 1 (SR3) implements -the Java 5 language. Version 2 implements the Java 6 language. If -you choose the Java 6 version, note that you must use the "WebSphere -Real Time" product, <em>not</em> the "WebSphere Soft Real Time" -product. Flexotask support for the soft real time product may be -offered in the future. Our supplied runtime will also -work with some still-older versions of WRT (Version 1 SR1 and SR2) if -you have obtained these at an earlier time. +DeveloperWorks</a>. You will need to establish an IBM id (if you did +not already do so in order to access <b>IBM AlphaWorks</b>), answer +some survey questions, and adhere to the terms of the license. As of +this writing there are two versions of WRT available: Version 1 (SR3) +implements the Java 5 language. Version 2 implements the Java 6 +language. If you choose the Java 6 version, note that you must use +the "WebSphere Real Time" product, <em>not</em> the "WebSphere Soft +Real Time" product. Flexotask support for the soft real time product +may be offered in the future. +<p>Our supplied runtime will also work with some still-older versions +of WRT (Version 1 SR1 and SR2) if you have obtained these at an +earlier time. + <p>The Flexible Task Graphs code was most extensively tested with Version 1 SR3 but the same functionality appears to work on Version 2 and we will emphasize support for the latest version in the long run. @@ -625,8 +649,7 @@ <li><b>setSynchronizing</b> to establish whether tasks of the graph are allowed to use Java synchronized methods and blocks (default is -<b>true</b>, but if the graph is strongly isolated, then the -synchronization will have no effect). +<b>true</b>). <li><b>setTimingData</b> to establish the timing grammar for the graph and any global properties that go with that timing grammar. More on @@ -637,6 +660,11 @@ href="com/ibm/realtime/flexotask/template/FlexotaskTemplate.html">in the javadoc</a>. +<p>There is also some additional semantic discussion of these +properties in conjunction with the <a href="#editorGlobal">Flexotask +Editor</a>. + + <p>An additional global property of a template is whether the resulting graph is weakly or strongly isolated. There is no API for setting or interrogating this property. Instead, the property is @@ -858,6 +886,11 @@ basis as tasks. </ul> +<p>A connection also has an implicit property, which is its data type. +This is inferred from the types of the ports that the connection +connects. It is illegal for a connection to connect ports of unlike +type. + <br><hr><h5><a name="templateStable"></a>Adding Stable Classes to the Template</h5> <p>In the Flexible Task Graphs model, newly allocated objects are @@ -913,27 +946,282 @@ <br><hr><h4><a name="editor"></a>The Flexotask Editor</h4> +<p>The editor is useful when a task graph has more than a few elements +and so building it up programmatically would be tedious. The editor's +graphical view also allows for a conceptual grasp of what is going on. +Although Flexible Task Graphs are a programming system, not a modeling +system, the graphical editor provides a view that is closer to what a +modeling system might provide. The following outline provides quick +access to the information in this section. + +<ul> +<li><a href="#editorGeneral">Getting Started with the Editor</a> +<li><a href="#editorGlobal">Specifying Global Properties</a> +<li><a href="#editorGlobalTiming">Specifying Global Timing Properties</a> +<li><a href="#editorTask">Specifying Task Properties</a> +<li><a href="#editorConnection">Specifying Connection Properties</a> +<li><a href="#editorPort">Specifying Ports and their Properties</a> +</ul> + +<br><hr><h5><a name="editorGeneral"></a>Getting Started with the Editor</h5> + <p>To use the Flexotask Editor, just create a file with the extension <b>.ftg</b> (for example, using <b>File→New→File</b>). The editor become the default editor for that file and will help you -create an XML-format Flexotask template stored in that file. In -choosing the folder to contain the <b>.ftg</b> file, bear in mind your -intended use. If you plan to parse the file directly using the <a -href="com/ibm/realtime/flexotask/tools/FlexotaskXMLParser.html#parseStream(java.io.InputStream)">parseStream</a> method of <b>FlexotaskXMLParser</b>, it is -useful to put it in the same package folder as the class that will use -it (examples of this design pattern can be found in -<b>communicating.Main</b> in the <b>flexotask-functiontest</b> -project). +create an XML-format Flexotask template stored in that file. -<p>When the editor first comes up has a blank canvas, a gear-like icon -on the tab, and a flyout palette at the upper right. A Properties -view is created if you don't already have one, and it is unburied if -you do have one. You use this Properties view to augment information -in the editor's graphical view. The initial properties view will look -something like this. +<p>In choosing the folder to contain the <b>.ftg</b> file, bear in +mind your intended use. If you plan to parse the file directly using +the <a +href="com/ibm/realtime/flexotask/tools/FlexotaskXMLParser.html#parseStream(java.io.InputStream)">parseStream</a> +method of <b>FlexotaskXMLParser</b>, it is useful to put it in the +same package folder as a class in your application whose identity you +can use to find the <b>.ftg</b> as a resource (an example of this +design pattern can be found in <b>communicating.Main</b> in the +<b>flexotask-functiontest</b> project). + +<p>When the editor first comes up it has a blank canvas, a gear-like +icon on the tab along with the file name and decoration at the upper +right hand edge that represents a hidden palette. Under Eclipse +3.4 the palette control looks like this. + +<p><img width=229 height=129 src="paletteControl.jpg"/> +g +<p>Clicking on the control reveals the palette, which looks like this. + +<p><img width=150 height=283 src="palette.jpg"/> + +<p>The palette will also fly out temporarily when you simply place the +mouse cursor on the control. In any case, the palette can be +re-hidden as you wish. Under Eclipse 3.3, the palette control and the +palette itself look slightly different but provide the same options +and behaviors. + +<p>A properties view is created (or unburied if you already have one) +as a side-effect of opening the editor. You use this Properties view +to augment information in the editor's graphical view, as explained in +subsequent sections. Properties are altered by clicking in the +<b>Value</b> box of the property you want to change. In general, the +editor property sheets will allow free text entry when that is +appropriate. Otherwise, clicking in the <b>Value</b> box will cause +an appropriate structured control to appear (a combo box or one or +more buttons, which bring up secondary dialogs). New values do not +take effect until you either press <b>Enter</b> or direct the focus to +another area. + +<p>As mentioned in the Flexible Task Graphs paper and explained in +more detail in the LCTES 2007 Exotasks paper, the way that real-time +scheduling is expressed can vary according to the choice of a timing +grammar. There are always at least two choices provided, but there +will be more if additional timing grammar plugins have been installed. +You need to select your timing grammar before entering other elements +of the task graph. One of the provided timing grammars must be +dragged and dropped into the canvas to establish timing grammar before +any tasks and connections can be established. On the canvas, a timing +grammar is represented by a box that is not connected to any other +box. By convention, we usually place it at the top of the canvas or +near one of the edges. + +<p>Once a timing grammar has been established, tasks (which may be +normal tasks, predicates, or communicators) can be dragged into the +canvas. The connection tool may then be selected to draw connections +between the tasks. Using this technique one can quickly build up a +task graph with the desired topology as in this picture. + +<p><img width=401 height=265 src="simpleGraph.jpg"/> + +<p>The tasks and connections in the editor are color coded: yellow +indicates missing required information and red indicates an error. In +a "complete" (ready to run) graph the tasks are grey and the +connections are black. To discover what is missing or incorrect, rest +the cursor on a yellow or red element in the graph to see the tooltip +text. For example, here is the tooltip text for a newly created task, +showing that the implementation class is missing. + +<p><img width=201 height=113 src="taskHover.jpg"/> + +<p>To fill in missing information, use the <b>Properties</b> view. +Single-click on any task or connection to bring up the properties for +that task or connection. Single-click on the timing grammar box to +bring up timing-related global properties. Single-click on an +unoccupied portion of the canvas to bring up the general global +properties. + +<p>Subsequent sections discuss the specifics of specifying global +properties, global timing properties, task properties, connection properties, and ports (with +their properties) using the editor. + +<br><hr><h5><a name="editorGlobal"/>Specifying Global Properties</h5> + +<p>Single-click on an unoccupied portion of the canvas to cause the +<b>Properties</b> view to show general global properties. The +property sheet for these properties looks like this. + <p><img width=377 height=134 src="initialProperties.jpg"/> +<p>Change the <b>Allocation</b> or <b>Synchronization</b> properties +from <b>allowed</b> to <b>forbidden</b> in order to restrict your task +graph from allocating objects or synchronizing. Change the <b>Stable +Mode</b> property to your preferred paradigm for using memory, which +may be one of <b>all classes stable</b>, <b>use marker interface</b>, +<b>listed explicitly</b>, or <b>inferred</b>. If you use <b>listed +explicitly</b>, then modify the <b>Stable Classes</b> property to list +the classes to be treated as stable. There is more information about +the semantics of the four stable classes options in <a +href="#templateStable">the related API discussion</a>. + +<p>Note that even when allocation is forbidden, objects of classes +that extend <b>Throwable</b> can always be allocated (the prohibition +covers all other objects). The expectation is that your program will +allocate <b>Throwable</b> objects only to deal with terminating +exceptions and will not use exceptions for routine control flow. + +<p>In the Flexible Task Graphs paper in LCTES 2008 (as well as in the +earlier Exotask 2007 paper) we stated that synchronizations by +strongly isolated task graphs have no effect. We have implemented +this feature experimentally, but, in the code that we make publically +available, the implementation of this aspect of the design is +incomplete because we have not had an opportunity to release a version +of the WebSphere Real Time VM with the necessary hooks. The reality +is that most synchronizations (in both strongly and weakly isolated +graphs) have no effect because the partitioning of objects into +task-specific memory areas discourages access to those objects by more +than one thread at a time. However, both strongly and weakly isolated +graphs that have references to objects on the public heap and that +synchronize on those objects may, in fact, experience delays due to +contention. + +<br><hr><h5><a name="editorGlobalTiming"/>Specifying Global Timing Properties</h5> + +<p>Single-click on the timing grammar box to cause the +<b>Properties</b> view to show timing-related global properties +specific to the timing gramamr. The property sheet for those +properties will vary according to the chosen grammar. For example, +the TT Single Mode grammar has a single property, <b>Period</b>, which +is the period of the graph's execution. This can be specified in +seconds, milliseconds, microseconds, or nanoseconds according to +whether the value is suffixed with <b>s</b>, <b>m</b>, <b>u</b>, or +<b>n</b>. The default unit is milliseconds if no suffix is provided. +For example, <b>500u</b> means 500 microseconds. + +<br><hr><h5><a name="editorTask"/>Specifying Task Properties</h5> + +<p>The task properties are shown in the following illustration. + +<p><img width=270 height=214 src="taskProperties.jpg"/> + +<ul> +<li><b>Task Name</b> establishes a name for the task. Every task in a +Flexible Task Graph must have a unique name. + +<li><b>Implementation Class</b> establishes the implementation class +for the task. The <b>Change</b> button for this property gives you an +opportunity either to find an existing implementation class that you +wrote previously or else to create a new class. The dialogs for the +two cases are the familiar <b>Find Type</b> and <b>New Class</b> +dialogs of Eclipse. + +<li><b>Isolation</b> presents a combo box that can be set to either +<b>strong</b> or <b>weak</b>. + +<li><b>Parameter Class</b> establishes the type of a default parameter +that will become part of the template and passed to the task's +<b>initialize</b> method if (and only if) no parameter is supplied at +runtime via the parameter map + +<li><b>Parameter Value</b> establishes the value of a default parameter +whose type is given by <b>ParameterType</b>. The syntax of this +expression is <a +href="com/ibm/realtime/flexotask/template/FlexotaskTaskTemplate.html#setParameterValue(java.lang.String)">explained +as part of the API</a>. + +<li><b>Timing Offsets</b>, which appears in the screenshot, is +specific to the particular timing grammar that we chose (the TT +Single-Mode grammar). In general, each timing grammar will induce a +particular set of timing properties in the property views for tasks +and connections. In this particular case, you can modify the property +to specify that the task should execute at particular time offsets +within the period established by the global timing property. The +units used for those offsets are the same used for the global period +(ranging from seconds to nanoseconds; see <a +href="#editorGlobalTiming">above</a>). +</ul> + +<p>Tasks have ports, and information about the task's ports is +displayed under the <b>Input</b> and <b>Output</b> categories, as +shown in the screenshot. However, these values cannot be modified in +the task property sheet. The editor provides for modification of +ports and their properties through the <em>connection</em> property +sheets, as explained <a href="#editorPort">below</a> + +<p>Predicates have properties quite similar to tasks except that no +output ports are displayed. However, communicators have a different +set of properties, as discussed in the next section. + +<br><hr><h5><a name="editorCommunicator"/>Specifying Communicator Properties</h5> + +<p>Under construction. + +<br><hr><h5><a name="editorConnection"/>Specifying Connection Properties</h5> + +<p>The connection properties are shown in the following illustration. + +<p><img width=298 height=214 src="connectionProperties.jpg"/> + +<p>The <b>Basics</b> section contains properties of the connection +itself, as described just below. The <b>Input</b> and <b>Output</b> +sections apply to the ports at either end of the connection. How +to modify this information is covered in the next subsection. + +<ul> +<li><b>Connection Name</b> establishes a name for the connection. If +you do not edit this property, the system-generated name (which is +based on the ports that are connected by the connection) is usually +sufficient. This name is used only in diagnostic messages. + +<li><b>Connection Data Type</b> establishes the type of data that will +pass over the connection (as the name of a Java class). The +<b>Change</b> button for this property brings up the familiar <b>Find +Type</b> dialog. Any Java class that is legal for a Flexotask to use +(based on the rules covered in the <a href="#tasks"><b>Writing +Flexotasks</b> section</a>) is legal to transmit on the connection. +Subclasses of the chosen type may also be transmitted (e.g. if this +property is set to <b>java.lang.Object</b> then any legal object may +be transmitted). But note that the <b>Connection Mode</b> property +can restrict what may be transmitted independently of the type. + +<li><b>Connection Mode</b> presents a combo box that can be set to +<b>deepclone</b> or <b>hybrid</b> or <b>byref</b>. The three options +("by reference", "by deep clone" and "hybrid") are described in detail +in the description of the <a +href="com/ibm/realtime/flexotask/template/FlexotaskConnectionMode.html">FlexotaskConnectionMode</a> +class (part of the template API). + +<li><b>Timing Offsets</b>, which appears in the screenshot, is +specific to the particular timing grammar that we chose (the TT +Single-Mode grammar). In general, each timing grammar will induce a +particular set of timing properties in the property views for tasks +and connections. In this particular case, you can modify the property +to specify that the connection should "execute" at particular time +offsets within the period established by the global timing property. +The units used for those offsets are the same used for the global +period (ranging from seconds to nanoseconds; see <a +href="#editorGlobalTiming">above</a>). Executing a connection means +moving one data item from the output port source of the connection to +the input port target of the connection. +</ul> + +<br><hr><h5><a name="editorPort"/>Specifying Ports and their Properties</h5> + +<p>In the editor (in contrast to the template API) ports are modified +(and, in some cases, created) by using the <b>Properties</b> view on +connections (not tasks). + +<p>Section under construction. + <br><hr><h3><a name="tasks"></a>Writing Flexotasks</h3> +<p>Under construction. + </body> </html> Added: trunk/flexotask/doc/palette.jpg =================================================================== (Binary files differ) Property changes on: trunk/flexotask/doc/palette.jpg ___________________________________________________________________ Added: svn:mime-type + image/jpeg Added: trunk/flexotask/doc/paletteControl.jpg =================================================================== (Binary files differ) Property changes on: trunk/flexotask/doc/paletteControl.jpg ___________________________________________________________________ Added: svn:mime-type + image/jpeg Added: trunk/flexotask/doc/simpleGraph.jpg =================================================================== (Binary files differ) Property changes on: trunk/flexotask/doc/simpleGraph.jpg ___________________________________________________________________ Added: svn:mime-type + image/jpeg Added: trunk/flexotask/doc/taskHover.jpg =================================================================== (Binary files differ) Property changes on: trunk/flexotask/doc/taskHover.jpg ___________________________________________________________________ Added: svn:mime-type + image/jpeg Added: trunk/flexotask/doc/taskProperties.jpg =================================================================== (Binary files differ) Property changes on: trunk/flexotask/doc/taskProperties.jpg ___________________________________________________________________ Added: svn:mime-type + image/jpeg This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-14 15:31:54
|
Revision: 99 http://flexotask.svn.sourceforge.net/flexotask/?rev=99&view=rev Author: jsauerbach Date: 2008-11-14 15:31:39 +0000 (Fri, 14 Nov 2008) Log Message: ----------- Fix bug that caused connections to/from communicators to fail if the communicator had not had a type assigned. What should happen (and what now happens) is that the connection remains untyped but is created and the type can be assigned later Modified Paths: -------------- trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/Connection.java Modified: trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/Connection.java =================================================================== --- trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/Connection.java 2008-11-13 18:50:14 UTC (rev 98) +++ trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/model/Connection.java 2008-11-14 15:31:39 UTC (rev 99) @@ -436,7 +436,7 @@ if (newType.length() == 0 && target instanceof Communicator) { newType = ((Communicator) target).getType(); } - if (newType.length() == 0) { + if (newType.length() == 0 && source instanceof NormalTask && target instanceof NormalTask) { /* Try to find a type in common between source and target */ search: for (PortDeclaration decl1 : ((NormalTask) source).getOutputPortDeclarations()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jsa...@us...> - 2008-11-13 18:50:25
|
Revision: 98 http://flexotask.svn.sourceforge.net/flexotask/?rev=98&view=rev Author: jsauerbach Date: 2008-11-13 18:50:14 +0000 (Thu, 13 Nov 2008) Log Message: ----------- Create "drawer" for the timing grammars to make it clearer what the items in the palette really mean. Modified Paths: -------------- trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/EEditPaletteFactory.java Modified: trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/EEditPaletteFactory.java =================================================================== --- trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/EEditPaletteFactory.java 2008-11-13 15:54:52 UTC (rev 97) +++ trunk/flexotask-editor/src/com/ibm/realtime/flexotask/editor/EEditPaletteFactory.java 2008-11-13 18:50:14 UTC (rev 98) @@ -52,7 +52,7 @@ */ final class EEditPaletteFactory { /** Create the "Flexotask" drawer. */ - private static PaletteContainer createShapesDrawer() { + private static PaletteContainer createFlexotaskDrawer() { PaletteDrawer componentsDrawer = new PaletteDrawer("Flexotasks"); CombinedTemplateCreationEntry component = new CombinedTemplateCreationEntry( @@ -84,6 +84,25 @@ return componentsDrawer; } + + /** Create a drawer to contain the timing grammars */ + private static PaletteContainer createGrammarsDrawer() { + PaletteDrawer componentsDrawer = new PaletteDrawer("Timing Grammars"); + TimingGrammarProvider[] grammars = GlobalTiming.getGrammars(); + for (int i = 0; i < grammars.length; i++) { + TimingGrammarProvider grammar = grammars[i]; + Class<? extends GlobalTiming> template = grammar.getTemplateClass(); + ToolEntry tool = new CombinedTemplateCreationEntry( + grammar.getLabel(), + grammar.getDescription(), + template, + new SimpleFactory(template), + ImageDescriptor.createFromFile(EEditPlugin.class, "icons/timing16.gif"), + ImageDescriptor.createFromFile(EEditPlugin.class, "icons/timing24.gif")); + componentsDrawer.add(tool); + } + return componentsDrawer; + } /** * Creates the PaletteRoot and adds all palette elements. @@ -93,7 +112,8 @@ static PaletteRoot createPalette() { PaletteRoot palette = new PaletteRoot(); palette.add(createToolsGroup(palette)); - palette.add(createShapesDrawer()); + palette.add(createGrammarsDrawer()); + palette.add(createFlexotaskDrawer()); return palette; } @@ -121,37 +141,9 @@ ImageDescriptor.createFromFile(EEditPlugin.class, "icons/connection_s24.gif")); toolGroup.add(tool); - // Add a (unnamed) separator to the group - toolGroup.add(new PaletteSeparator()); - - // Add the global timing template - addTimingAnchors(toolGroup); - return toolGroup; } - /** - * Add "timing anchors" to the tool set, one for each extension in the workbench - * that supplies a TimingGrammarProvider - * @param toolGroup the PaletteGroup to which the grammar provides - */ - private static void addTimingAnchors(PaletteGroup toolGroup) - { - TimingGrammarProvider[] grammars = GlobalTiming.getGrammars(); - for (int i = 0; i < grammars.length; i++) { - TimingGrammarProvider grammar = grammars[i]; - Class<? extends GlobalTiming> template = grammar.getTemplateClass(); - ToolEntry tool = new CombinedTemplateCreationEntry( - grammar.getLabel(), - grammar.getDescription(), - template, - new SimpleFactory(template), - ImageDescriptor.createFromFile(EEditPlugin.class, "icons/timing16.gif"), - ImageDescriptor.createFromFile(EEditPlugin.class, "icons/timing24.gif")); - toolGroup.add(tool); - } - } - /** Utility class. */ private EEditPaletteFactory() { // Utility class This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |