Replace Wildfire Offline Module(s)

Hi there,

I’‘m currently working on a project where we use wildfire as server. As we use Smack/Wildfire not only for chat messages but also for other messages in our system I ran into a small problem. While most of our messages don’'t require caching when the recipient is offline we have some special messages that must be cached. The wildfire standard settings are not applicable for this problem because there is no way to define special settings for our ‘‘cachable packets’’.

I started checking the Wildfire code and soon found out about the modules loaded at startup and that org.jivesoftware.wildfire.OfflineMessageStrategy is probably the module that needs patching for my needs. I simply added a check in storeOffline(Message message) that all packets with a special PacketExtension (that is added on sending) will be stored.

So far so god, this should work. What I want to know now is, is there a way to tell wildfire that it should load my customized OfflineMessageStrategy module on startup without recompiling and overwritting the class file? As far as I have seen, the modules are loaded using a classloader and a fixed full qualified class name. Maybe I have not found it, but I missed an easy way to replace a module or to define which class should be used for a specific module (without recompiling).



Not quite what you asked for, but I have a different solution: IQ packets aren’'t stored offline (you should just get an error back), while messages are. You could distinguish them that way without ever touching the server.

This won’'t work as we have some messages that must be cached while others should be dropped.