Build: #1062 was successful Changes by Florian Schmaus
Code commits
Smack (master)
-
Florian Schmaus 7714231a44d41eb3e101508f1e88e8b5dd9567c9
[formtypes] Use central entry point for registry, fixes NPE on Android
FormFieldRegistry would scan the classpath for registry files. However
this does not work on Android, where it fails with an NPE:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.security.CodeSource java.security.ProtectionDomain.getCodeSource()' on a null object reference
at org.jivesoftware.smackx.formtypes.FormFieldRegistry.loadFormFieldRegistryEntries(FormFieldRegistry.java:109)
at org.jivesoftware.smackx.formtypes.FormFieldRegistry.<clinit>(FormFieldRegistry.java:56)
at org.jivesoftware.smackx.softwareinfo.form.SoftwareInfoForm.<clinit>(SoftwareInfoForm.java:52)
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:536)
at org.jivesoftware.smack.SmackInitialization.loadSmackClass(SmackInitialization.java:210)
at org.jivesoftware.smack.SmackInitialization.parseClassesToLoad(SmackInitialization.java:190)
at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:164)
at org.jivesoftware.smack.initializer.UrlInitializer.initialize(UrlInitializer.java:69)
at org.jivesoftware.smack.SmackInitialization.loadSmackClass(SmackInitialization.java:229)
at org.jivesoftware.smack.SmackInitialization.parseClassesToLoad(SmackInitialization.java:190)
at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:167)
at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:154)
at org.jivesoftware.smack.SmackInitialization.<clinit>(SmackInitialization.java:103)
at org.jivesoftware.smack.Smack.getVersion(Smack.java:51)
at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.loadJabberServiceClasses(ProtocolProviderServiceJabberImpl.java:3144)
at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.<clinit>(ProtocolProviderServiceJabberImpl.java:643)
at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderFactoryJabberImpl.createService(ProtocolProviderFactoryJabberImpl.java:117)
at net.java.sip.communicator.service.protocol.ProtocolProviderFactory.loadAccount(ProtocolProviderFactory.java:945)
at net.java.sip.communicator.service.protocol.AccountManager.doLoadStoredAccounts(AccountManager.java:145)
at net.java.sip.communicator.service.protocol.AccountManager.loadStoredAccounts(AccountManager.java:297)
at net.java.sip.communicator.service.protocol.AccountManager.runInLoadStoredAccountsThread(AccountManager.java:391)
at net.java.sip.communicator.service.protocol.AccountManager.-$$Nest$mrunInLoadStoredAccountsThread(Unknown Source:0)
at net.java.sip.communicator.service.protocol.AccountManager$1.run(AccountManager.java:328)
Instead, we have to use a common entry point to load the field
registry files.
Reported-by: Eng ChongMeng <cmeng.gm@gmail.com>- smack-extensions/src/main/java/org/jivesoftware/smackx/formtypes/FormFieldRegistry.java (version 7714231a44d41eb3e101508f1e88e8b5dd9567c9) (diffs)
- smack-extensions/src/main/resources/org.igniterealtime.smack/xdata/form-registry/form-registry.xml (version 7714231a44d41eb3e101508f1e88e8b5dd9567c9) (diffs)
-
Florian Schmaus b0cd845e2896918da0b101b829a1fd667576de37
[core] Add FileUtils.getStreamForClasspathFile(String)