GroIMP load doclet.xml files on startup that contains description of methods and classes.
The loaded content is added in the runtime registry under /plugins/statics. This directory should have the three directories: methods, fields, and classes. The java objects used are ContentDescriptionType
GroIMP compiler can automatically perform implicit conversions. By default RGG files use this implicit conversions. A common example is the conversion from float to double (and vice versa).
Groimp enables to includes default imports in files when compiling them. These imports are defined in the registry under. /io/filter/xx where xx is the filter type to manage.
Currently only the rgg filter is modified, thus, all .rgg files are compiled with additional default imports.
The paths of default imports are :
/io/filter/rgg/packageimports: equivalent to import pckname.*, where pckname is the name of a java package (e.g. java.lang)./io/filter/rgg/singletypeimports: equivalent to import pck.ClassName, where pck.ClassName represent the complete name of a type (e.g. de.grogra.graph.impl.Node)./io/filter/rgg/statictypeimports: equivalent to import static pck.ClassName.This page only list imports from the RGG plugin. Other plugin can includes default import by adding them in the registry under the paths above.
Create object from
→ All objects that are supposed to be added in a groimp project should implement persistence management. (project graph & registry)
→ source enhancement
A Node is considered deleted when it is removed from the graph. The Node is made “transient”, i.e. it is not handled by the persistence manager anymore.
Once a Node is “transient” it will be automatically garbage collected by Java. However, a Node can have attributes (fields in java) that require a specific dispose method (e.g cloud objects, or secondary graph).
In most cases, the nodes are not “informed” that they are made transient, thus it is not convenient to add a listener on them (see the GraphManager's listeners). Indeed, when a Node is deleted, if it has connected edges of Node that are not connected to the graph anymore, they all are deleted. But only the first one is visited.
To ensure an object (that can be used as a Node's attribute) is disposed properly it should implements the DisposableField interface.
mvn compile
mvn package: If the plugin have some java dependencies managed from Maven, the property <maven.assembly.plugin.move-lib>generate-resources</maven.assembly.plugin.move-lib> needs to be added to the pom.xml.
mvn package -P app-with-doc: Add to the package command the compilation of the plugin's doc. Require sudo apt install xsltproc docbook docbook-xsl to be installed.
mvn package -P release
mvn package javadoc:aggregate
GroIMP is designed around plugins which can be added, modified or removed without modifying the GroIMP installation.
Any repository with a plugin.xml and plugin.properties files is considered as a plugin by GroIMP.
To be properly loadable though, the plugin.xml needs to include:
<?xml version="1.0" encoding="UTF-8"?> <plugin id="your.plugin.id" version="x.x" xmlns="http://grogra.de/registry" >
where plugin id and version need to be filled with the plugin information.
See more:
The Plugin Manager uses Plugin repositories to gather knowledge on the available plugins. The repositories can be provided in three formats: