[xmppclient] Fix bundle load (#20220)

Signed-off-by: Leo Siepel <leosiepel@gmail.com>
This commit is contained in:
lsiepel
2026-03-11 09:40:59 +01:00
committed by GitHub
parent d53e325f05
commit a935d0bc38
4 changed files with 50 additions and 17 deletions
@@ -15,7 +15,7 @@
<name>openHAB Add-ons :: Bundles :: XMPPClient Binding</name>
<properties>
<smack.version>4.5.0-beta6</smack.version>
<smack.version>4.5.0-rc1</smack.version>
</properties>
<dependencyManagement>
@@ -4,24 +4,26 @@
<feature name="openhab-binding-xmppclient" description="XMPP Client Binding" version="${project.version}">
<feature>openhab-runtime-base</feature>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-extensions/4.5.0-beta6</bundle>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-experimental/4.5.0-beta6</bundle>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-im/4.5.0-beta6</bundle>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-tcp/4.5.0-beta6</bundle>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-xmlparser/4.5.0-beta6</bundle>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-streammanagement/4.5.0-beta6</bundle>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-extensions/4.5.0-rc1</bundle>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-experimental/4.5.0-rc1</bundle>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-im/4.5.0-rc1</bundle>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-tcp/4.5.0-rc1</bundle>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-xmlparser/4.5.0-rc1</bundle>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-streammanagement/4.5.0-rc1</bundle>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-xmlparser-xpp3/4.5.0-rc1</bundle>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-resolver-javax/4.5.0-rc1</bundle>
<bundle dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xpp3/1.1.4c_7</bundle>
<bundle dependency="true">mvn:org.jxmpp/jxmpp-core/1.1.0</bundle>
<bundle dependency="true">mvn:org.jxmpp/jxmpp-jid/1.1.0</bundle>
<bundle dependency="true">mvn:org.jxmpp/jxmpp-util-cache/1.1.0</bundle>
<bundle dependency="true">mvn:org.openhab.osgiify/org.hsluv.hsluv/0.2</bundle>
<bundle dependency="true">mvn:org.minidns/minidns-core/1.1.1</bundle>
<bundle dependency="true">mvn:org.bouncycastle/bcprov-jdk18on/1.83</bundle>
<bundle dependency="true">mvn:org.openhab.osgiify/org.igniterealtime.smack.smack-core/4.5.0-beta6</bundle>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-sasl-javax/4.5.0-beta6</bundle>
<bundle dependency="true">mvn:org.openhab.osgiify/org.igniterealtime.smack.smack-core/4.5.0-rc1</bundle>
<bundle dependency="true">mvn:org.igniterealtime.smack/smack-sasl-javax/4.5.0-rc1</bundle>
<!-- FIXME: implicit dependencies required at runtime but not automatically installed, this is a workaround -->
<bundle start-level="80">mvn:org.igniterealtime.smack/smack-resolver-javax/4.5.0-beta6</bundle>
<bundle start-level="80">mvn:org.igniterealtime.smack/smack-java11/4.5.0-beta6</bundle>
<bundle start-level="80">mvn:org.igniterealtime.smack/smack-sasl-javax/4.5.0-beta6</bundle>
<bundle start-level="80">mvn:org.igniterealtime.smack/smack-resolver-javax/4.5.0-rc1</bundle>
<bundle start-level="80">mvn:org.igniterealtime.smack/smack-java11/4.5.0-rc1</bundle>
<bundle start-level="80">mvn:org.igniterealtime.smack/smack-sasl-javax/4.5.0-rc1</bundle>
<bundle start-level="80">mvn:org.openhab.addons.bundles/org.openhab.binding.xmppclient/${project.version}</bundle>
</feature>
</features>
@@ -16,6 +16,19 @@ import java.util.Set;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.jivesoftware.smack.SmackConfiguration;
import org.jivesoftware.smack.java7.XmppHostnameVerifier;
import org.jivesoftware.smack.provider.ProviderManager;
import org.jivesoftware.smack.roster.Roster;
import org.jivesoftware.smack.util.DNSUtil;
import org.jivesoftware.smack.util.dns.javax.JavaxResolver;
import org.jivesoftware.smack.util.stringencoder.Base64;
import org.jivesoftware.smack.util.stringencoder.Base64UrlSafeEncoder;
import org.jivesoftware.smack.util.stringencoder.java7.Java7Base64Encoder;
import org.jivesoftware.smack.util.stringencoder.java7.Java7Base64UrlSafeEncoder;
import org.jivesoftware.smackx.disco.provider.DiscoverInfoProvider;
import org.jivesoftware.smackx.disco.provider.DiscoverItemsProvider;
import org.jivesoftware.smackx.xdata.provider.DataFormProvider;
import org.openhab.binding.xmppclient.internal.handler.XMPPClientHandler;
import org.openhab.core.thing.Bridge;
import org.openhab.core.thing.Thing;
@@ -23,6 +36,8 @@ import org.openhab.core.thing.ThingTypeUID;
import org.openhab.core.thing.binding.BaseThingHandlerFactory;
import org.openhab.core.thing.binding.ThingHandler;
import org.openhab.core.thing.binding.ThingHandlerFactory;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
/**
@@ -51,4 +66,17 @@ public class XMPPClientHandlerFactory extends BaseThingHandlerFactory {
}
return null;
}
@Activate
protected void activate(ComponentContext componentContext) {
super.activate(componentContext);
Roster.setRosterLoadedAtLoginDefault(false);
DNSUtil.setDNSResolver(JavaxResolver.getInstance());
SmackConfiguration.setDefaultHostnameVerifier(new XmppHostnameVerifier());
Base64.setEncoder(Java7Base64Encoder.getInstance());
Base64UrlSafeEncoder.setEncoder(Java7Base64UrlSafeEncoder.getInstance());
ProviderManager.addIQProvider("query", "http://jabber.org/protocol/disco#info", new DiscoverInfoProvider());
ProviderManager.addIQProvider("query", "http://jabber.org/protocol/disco#items", new DiscoverItemsProvider());
ProviderManager.addExtensionProvider("x", "jabber:x:data", new DataFormProvider());
}
}
@@ -93,6 +93,7 @@ public class XMPPClient implements IncomingChatMessageListener, ConnectionListen
}
XMPPTCPConnectionConfiguration config;
try {
config = XMPPTCPConnectionConfiguration.builder() //
.setHost(serverHost) //
@@ -118,7 +119,7 @@ public class XMPPClient implements IncomingChatMessageListener, ConnectionListen
try {
connectionLocal.connect().login();
} catch (InterruptedException | XMPPException | SmackException | IOException e) {
} catch (InterruptedException | XMPPException | SmackException | IOException | IllegalStateException e) {
throw new XMPPClientException(Objects.requireNonNullElse(e.getMessage(), "Unknown error message"),
e.getCause());
}
@@ -130,7 +131,6 @@ public class XMPPClient implements IncomingChatMessageListener, ConnectionListen
MultiUserChatManager multiUserChatManager = MultiUserChatManager.getInstanceFor(connection);
multiUserChatManager.setAutoJoinOnReconnect(true);
this.multiUserChatManager = multiUserChatManager;
httpFileUploadManager = HttpFileUploadManager.getInstanceFor(connection);
}
public void disconnect() {
@@ -194,8 +194,11 @@ public class XMPPClient implements IncomingChatMessageListener, ConnectionListen
}
HttpFileUploadManager httpFileUploadManagerLocal = httpFileUploadManager;
if (httpFileUploadManagerLocal == null) {
logger.warn("XMPP httpFileUploadManager is null");
return;
httpFileUploadManagerLocal = httpFileUploadManager = HttpFileUploadManager.getInstanceFor(connection);
if (httpFileUploadManagerLocal == null) {
logger.warn("XMPP httpFileUploadManager is null");
return;
}
}
try {
URL u = httpFileUploadManagerLocal.uploadFile(new File(filename));