LoadFromXWiki.java
package org.jbehave.core.io.rest.xwiki;
import static java.text.MessageFormat.format;
import com.google.gson.Gson;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.security.AnyTypePermission;
import org.jbehave.core.io.rest.LoadFromREST;
import org.jbehave.core.io.rest.RESTClient.Type;
/**
* Loads resource from XWiki pages using the REST API
*/
public class LoadFromXWiki extends LoadFromREST {
private static final String XWIKI_URI = "{0}?media={1}";
public LoadFromXWiki(Type type) {
this(type, null, null);
}
public LoadFromXWiki(Type type, String username, String password) {
super(type, username, password);
}
@Override
protected String uri(String resourcePath, Type type) {
return format(XWIKI_URI, resourcePath, type.name().toLowerCase());
}
@Override
protected String text(String entity, Type type) {
switch (type) {
case JSON:
Gson gson = new Gson();
return gson.fromJson(entity, Page.class).content;
case XML:
XStream xstream = new XStream();
XStream.setupDefaultSecurity(xstream);
xstream.addPermission(AnyTypePermission.ANY);
xstream.alias("page", Page.class);
xstream.ignoreUnknownElements();
return ((Page) xstream.fromXML(entity)).content;
default:
return entity;
}
}
private static class Page {
String content;
}
}