Hi, My last iteration of the GraphReferenceManager resulted in a manager far too tightly wound into the existing JSPWiki code, where I had long ago realised that the LinkManager (the actual manager that handles the building and maintenance of the graph) really only needs to receive WikiPageEvents.
The actual GraphReferenceManager would then no longer maintain the maps of the existing DefaultReferenceManager, and effectively hand off its functionality largely to the LinkManager in order to still comply with the methods of the ReferenceManager API, and would effectively become mostly an empty shell class, not doing much of anything. So my next version will be quite a bit lighter in terms of hooks. But I note that apart from modifying the contents of classmappings.xml or classmappings-extra.xml, one thing I'd like to request is that the functionality we currently have for several managers to configure the choice of implementing class in jspwiki.properties be extended to the ReferenceManager implementation. There'd seemingly be no downside to this as the default would for most deployments be the existing class, with this proposed configuration akin to: jspwiki.referenceProvider = DefaultReferenceManager This would be the sufficient hook I'd need to consider replacement of the existing ReferenceManager (noting that my implementation is JDK 11 so I can't integrate it directly into jspwiki-main). ---- There would be a new enum for the various link types in the graph: // not recognised as a link INVALID("Invalid"), // recognised as a link INTERWIKI("Interwiki"), IMAGE("Image"), INTERNAL("Internal"), EXTERNAL("External"), ATTACHMENT("Attachment"), UNCREATED("Uncreated"), // parsed but not recognised as a link ACCESS_RULE("AccessRule"), PLUGIN("Plugin"), METADATA("Metadata"), VARIABLE("Variable"); [you may now understand my interest in the LinkParsingOperations class] I've played with a variety of different JGraphT visualisations in the jungrapht-visualization library for the default set of JSPWiki pages: http://altheim.com/murray/yk/visualised.png http://altheim.com/murray/yk/visualised-zoom.png As part of this plan, there would be no "uncreated pages" any longer, as all links-to-nowhere end up as fully-fledged graph nodes. So when a user attempts to traverse to an uncreated page, the engine wouldn't simply provide an edit link, it could also show the existing link sources. The ability to traverse the graph from any node (at any depth, and filtering on any link type) would provide a lot of additional functionality. Cheers, Murray ........................................................................... Murray Altheim <murray18 at altheim dot com> = = === http://www.altheim.com/murray/ === === = = === In the evening The rice leaves in the garden Rustle in the autumn wind That blows through my reed hut. -- Minamoto no Tsunenobu