1
0
Fork 0
mirror of https://github.com/vanitasvitae/Smack.git synced 2025-12-13 22:41:08 +01:00

Add initializer tests and move classpath files

The initializer tests verify that every non-optional initializer, this
includes Providers, is loadable.

Creating files under META-INF is not considered best practice. Smack's
configuration and provider files reside now in classpath directory
qualified by Smack's package namespace.
This commit is contained in:
Florian Schmaus 2014-02-15 13:01:57 +01:00
parent 8d3814a8a7
commit 2ad517b6dd
30 changed files with 411 additions and 141 deletions

View file

@ -1,16 +0,0 @@
package org.jivesoftware.smackx;
import org.jivesoftware.smack.provider.UrlProviderFileInitializer;
/**
* Loads the default provider file for the Smack extensions on initialization.
*
* @author Robin Collier
*
*/
public class ExtensionInitializer extends UrlProviderFileInitializer {
@Override
protected String getFilePath() {
return "classpath:META-INF/extension.providers";
}
}

View file

@ -0,0 +1,16 @@
package org.jivesoftware.smackx;
import org.jivesoftware.smack.initializer.UrlProviderFileInitializer;
/**
* Loads the default provider file for the Smack extensions on initialization.
*
* @author Robin Collier
*
*/
public class ExtensionsProviderInitializer extends UrlProviderFileInitializer {
@Override
protected String getFilePath() {
return "classpath:org.jivesoftware.smackx/extensions.providers";
}
}

View file

@ -0,0 +1,65 @@
package org.jivesoftware.smackx;
import java.io.InputStream;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import org.jivesoftware.smack.SmackConfiguration;
import org.jivesoftware.smack.initializer.SmackInitializer;
import org.jivesoftware.smack.util.FileUtils;
import org.xmlpull.mxp1.MXParser;
import org.xmlpull.v1.XmlPullParser;
public class ExtensionsStartupClasses implements SmackInitializer {
private static final String EXTENSIONS_XML = "classpath:org.jivesoftware.smackx/extensions.xml";
private List<Exception> exceptions = new LinkedList<Exception>();
// TODO log
@Override
public void initialize() {
InputStream is;
XmlPullParser parser;
int eventType;
try {
is = FileUtils.getStreamForUrl(EXTENSIONS_XML, null);
parser = new MXParser();
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
parser.setInput(is, "UTF-8");
eventType = parser.getEventType();
}
catch (Exception e) {
exceptions.add(e);
return;
}
try {
do {
String name = parser.getName();
if (eventType == XmlPullParser.START_TAG) {
if ("startupClasses".equals(name)) {
try {
SmackConfiguration.parseClassesToLoad(parser, false);
}
catch (Exception e) {
exceptions.add(e);
}
}
}
eventType = parser.next();
}
while (eventType != XmlPullParser.END_DOCUMENT);
is.close();
}
catch (Exception e) {
exceptions.add(e);
}
}
@Override
public List<Exception> getExceptions() {
return Collections.unmodifiableList(exceptions);
}
}