public class AccessorCodeGenerator extends RunnableCodeGenerator
Accessors are a technology, developed by the TerraSwarm Research Center, for composing heterogeneous devices and services in the Internet of Things (IoT). For more information, see http://accessors.org.
The model can only contain JavaScript and JSAccessor actors.
To generate an Accessor version of a model, use:
java -classpath $PTII ptolemy.cg.kernel.generic.accessor.AccessorCodeGenerator -language accessor $PTII/ptolemy/cg/kernel/generic/accessor/demo/TestComposite/TestComposite.xml; cat $PTII/org/terraswarm/accessor/accessors/web/cg/TestComposite.jswhich is shorthand for:
java -classpath $PTII ptolemy.cg.kernel.generic.accessor.AccessorCodeGenerator -generatorPackage ptolemy.cg.kernel.generic.accessor -generatorPackageList generic.accessor $PTII/ptolemy/cg/adapter/generic/accessor/adapters/org/test/auto/TestComposite.xml; cat ~/cg/TestComposite.js
For more information, see https://accessors.org/wiki/Main/CapeCodeHost#CodeGeneration.
NamedObj.ContainedObjectsIterator
Modifier and Type | Field and Description |
---|---|
protected boolean |
_checkForLocalModules
If true, the
_setupCommands() will check for
modules in the local directory. |
StringParameter |
modules
A comma separated list of modules to be installed.
|
Parameter |
npmInstall
If true, then search codeDirectory and its parent
directories for a node_modules/ directory.
|
_runCommandDefault, _substituteMap, run, runCommand
_codeFileName, _eol, _executeCommands, _generateInSubdirectory, _model, _sanitizedModelName, codeDirectory, generateInSubdirectory, generatorPackage, generatorPackageList, INDENT1, INDENT2, INDENT3, overwriteFiles
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
Constructor and Description |
---|
AccessorCodeGenerator(NamedObj container,
java.lang.String name)
Create a new instance of the AccessorCodeGenerator.
|
Modifier and Type | Method and Description |
---|---|
protected int |
_generateCode(java.lang.StringBuffer code)
Generate Accessor code and append it to the given string buffer.
|
protected java.lang.Class<?> |
_getAdapterClassFilter()
Return the filter class to find adapters.
|
protected java.util.List<java.lang.String> |
_setupCommands()
Return a list of setup commands to be invoked before
the run command.
|
protected void |
_updateSubstituteMap()
Update the substitute map for the setup and run commands
The base class adds @codeDirectory@, @modelName@
and @PTII@ to the map.
|
java.lang.String |
comment(java.lang.String comment)
Return a formatted comment containing the specified string.
|
_executeCommands, _reset, _runCommand, clone, updateCommandOptions
_copyCFilesTosrc, _copyCFileTosrc, _getAdapter, _getAutoGeneratedAdapter, _getOutputFilename, _instantiateAdapter, _isTopLevel, _printTimeAndMemory, _resetAll, _writeCode, _writeCodeFileName, attributeChanged, createDecoratorAttributes, decoratedObjects, generateCode, generateCode, generateCode, generateCopyright, getAdapter, getCodeFileName, getComponent, getExecuteCommands, getMethodExceptionString, getMethodVisibilityString, isGlobalDecorator, main, setCodeGenerator, setContainer, setExecuteCommands
_checkContainer, _getContainedObject, _propagateExistence, getContainer, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, setName, updateContent
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _description, _executeChangeRequests, _exportMoMLContents, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, _validateSettables, addChangeListener, addDebugListener, addHierarchyListener, attributeDeleted, attributeList, attributeList, attributeTypeChanged, clone, containedObjectsIterator, decorators, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getElementName, getFullName, getModelErrorHandler, getName, getName, getPrototypeList, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, notifyOfNameChange, propagateExistence, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, uniqueName, validateSettables, workspace
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
description, getContainer, getDisplayName, getFullName, getName, getName, setName
public StringParameter modules
public Parameter npmInstall
The reason to set this to false is if the host is not
connected to the internet or if the host already has the
modules installed. Setting this to false means that the
composite accessor will be deployed more quickly because
npm install
will not be run. The default value
is false, indicating that npm install
modules
should not be run.
protected boolean _checkForLocalModules
_setupCommands()
will check for
modules in the local directory.
Derived classes like AccessorSSHCodeGenerator set this to false.public AccessorCodeGenerator(NamedObj container, java.lang.String name) throws IllegalActionException, NameDuplicationException
generic.accessor
container
- The container.name
- The name of the AccessorCodeGenerator.IllegalActionException
- If the super class throws the
exception or error occurs when setting the file path.NameDuplicationException
- If the super class throws the
exception or an error occurs when setting the file path.public java.lang.String comment(java.lang.String comment)
comment
in class GenericCodeGenerator
comment
- The string to put in the comment.protected int _generateCode(java.lang.StringBuffer code) throws KernelException
$HOME/cg
, the name of the
model is Foo
and the generatorPackage
is ptolemy.cg.kernel.generic.accessor
, then the file that is
written will be $HOME/cg/Foo.js
This method is the main entry point to generate js.
This method invokes the top level generateAccessor(), which is typically defined in ptolemy/cg/adapter/generic/accessor/adapters/ptolemy/actor/lib/jjs/JavaScript.java
_generateCode
in class GenericCodeGenerator
code
- The given string buffer.KernelException
- If the target file cannot be overwritten
or write-to-file throw any exception.protected java.lang.Class<?> _getAdapterClassFilter()
_getAdapterClassFilter
in class GenericCodeGenerator
protected java.util.List<java.lang.String> _setupCommands() throws IllegalActionException
_setupCommands
in class RunnableCodeGenerator
IllegalActionException
- If there is a problem getting
the value of the modules parameterprotected void _updateSubstituteMap() throws IllegalActionException
_updateSubstituteMap
in class RunnableCodeGenerator
IllegalActionException
- If the @stopTime@ parameter
cannot be parsed as a Double.