Переопределение класса Tigase OfflineMessages
Я разрабатываю приложение для чата, использующее сервер Tigase в фоновом режиме для обеспечения связи XMPP. Кроме того, я использую smack/asmack в качестве библиотеки в своем приложении.
В каждом сообщении, отправляемом между пользователями, для реализации функциональных возможностей, которые я хочу реализовать, я включаю расширения пакета с помощью метода Presence.setProperty() smack, который корректно отправляется, если оба пользователя подключены к сети. Когда один из пользователей находится в автономном режиме, сервер Tigase сохраняет это сообщение, а затем доставляет его, когда пользователь снова подключается к сети. Дело в том, что Tigase не сохраняет сообщение, включая расширения пакета, поэтому, когда пользователь снова подключен к сети, он получает только "части" отправленного сообщения.
Я нашел источник Tigase и нашел место в части класса OfflineMessages пакета xmpp.impl, где мне нужно вставить строку кода, чтобы плагин msgoffline мог сохранять автономные сообщения с помощью расширений.
Какой самый простой способ переопределить класс OfflineMessages в JAR-файле Tigase, не создавая весь исходный код проекта?
Я использую версию Tigase-5.1.5-b3164 на сервере Ubuntu и Eclipse в качестве IDE.
1 ответ
Я не знаю библиотеку Smack, поэтому я не знаю, что делает метод Presence.setProperty(). Но если он что-то делает с пакетом присутствия (добавляя дополнительную полезную нагрузку к состоянию присутствия), то он не будет сохранен в автономном хранилище сообщений, поскольку.... присутствия не сохраняются в автономном хранилище сообщений.
Если вы хотите изменить OfflineMessages, чтобы он хранил больше данных, чем сейчас (например, пакеты определенного присутствия), то есть метод: savePacketForOffLineUser с большим IF в начале. Здесь принимается решение о том, что хранить в автономном хранилище.
Но, пожалуйста, будьте осторожны, чтобы не хранить ВСЕ присутствия, это убьет ваш сервис и вашу базу данных.
Лучший способ добавить свои собственные плагины - сделать копию существующего плагина Tigase (OfflineMessgae), изменить его в соответствии со своими предпочтениями, изменить имя плагина и идентификатор плагина. Затем вы просто помещаете jar с вашим кодом в директорию Tigase jars и изменяете конфигурацию, чтобы загрузить ваш слой вместо стандартного. Таким образом, вам не нужно перекомпилировать исходные коды Tigase, и вам также будет проще обновиться до новой версии.