UploadToXWiki.java
- package org.jbehave.core.io.rest.xwiki;
- import com.google.gson.Gson;
- import com.thoughtworks.xstream.XStream;
- import com.thoughtworks.xstream.security.AnyTypePermission;
- import org.jbehave.core.io.rest.RESTClient.Type;
- import org.jbehave.core.io.rest.Resource;
- import org.jbehave.core.io.rest.UploadToREST;
- /**
- * Uploads resource to XWiki pages using the REST API
- */
- public class UploadToXWiki extends UploadToREST {
- public UploadToXWiki(Type type) {
- this(type, null, null);
- }
- public UploadToXWiki(Type type, String username, String password) {
- super(type, username, password);
- }
- @Override
- protected String entity(Resource resource, Type type) {
- Page page = new Page();
- page.syntax = resource.hasSyntax() ? resource.getSyntax() : "xwiki/2.0";
- page.title = resource.getName();
- page.content = resource.getContent();
- page.parent = resource.getParentName();
- switch (type) {
- case JSON:
- Gson gson = new Gson();
- return gson.toJson(page);
- case XML:
- page.xmlns = "http://www.xwiki.org";
- XStream xstream = new XStream();
- XStream.setupDefaultSecurity(xstream);
- xstream.addPermission(AnyTypePermission.ANY);
- xstream.alias("page", Page.class);
- xstream.useAttributeFor(Page.class, "xmlns");
- xstream.aliasField("xmlns", Page.class, "xmlns");
- xstream.ignoreUnknownElements();
- return xstream.toXML(page);
- default:
- return resource.getContent();
- }
- }
- @SuppressWarnings("unused")
- private static class Page {
- private String xmlns;
- private String title;
- private String syntax;
- private String content;
- private String parent;
- }
- }