To start with, this is probably an odd change request and I have held off asking as it probably has very limited utility outside my particular usecase. However, the changes I had to make to the base are so minor, I figured I would at least float it.
We connect multiple openfire servers running on isolated networks using middleware components (AMQP message queues) to move the messages from one server to another. We have a plugin that handles moving the messages to the message queues on the sending side and picking them up on the receiving side. While we were able to get 99.9% of the code in a plugin, there were some small changes that we had to make to the server code in order to get the packets to our plugin.
We use full domains (to enable our middleware to know which server instance to deliver the packet to) which normally would route the message to the server-to-server code (routeToRemoteDomain) but I made small changes to two of the source files to enable our plugin to be registered with the full domain AND to route message packets to the plugin when appropriate.
Files changes:
InternalComponentManager.java
RoutingTableImpl.java
Before going into any more detail, is anyone open to adding this to to trunk? The biggest change I think would probably be in InternalComponentManager where the Plugin interface might need some sort of flag method to indicate it wants to be registered as a full domain rather than a subdomain? I simply look at the plugin name in my simple customization. Then in RoutingTableImpl, just check the localRoutingTable for a route by that domain (in the final else in method routePacket) and if found, process it.
It may be way too narrow a usecase for the main server code but any thoughts?