AbstractFilesystemMojo.java
package org.jbehave.core.io.rest.mojo;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.jbehave.core.io.ResourceLoader;
import org.jbehave.core.io.rest.RESTClient.Type;
import org.jbehave.core.io.rest.ResourceIndexer;
import org.jbehave.core.io.rest.ResourceUploader;
import org.jbehave.core.io.rest.confluence.IndexFromConfluence;
import org.jbehave.core.io.rest.confluence.LoadFromConfluence;
import org.jbehave.core.io.rest.redmine.IndexFromRedmine;
import org.jbehave.core.io.rest.redmine.LoadFromRedmine;
import org.jbehave.core.io.rest.redmine.UploadToRedmine;
import org.jbehave.core.io.rest.xwiki.IndexFromXWiki;
import org.jbehave.core.io.rest.xwiki.LoadFromXWiki;
import org.jbehave.core.io.rest.xwiki.UploadToXWiki;
/**
* Abstract mojo for filesystem import/export operations.
*/
public abstract class AbstractFilesystemMojo extends AbstractMojo {
private static final String REDMINE = "redmine";
private static final String XWIKI = "xwiki";
private static final String CONFLUENCE = "confluence";
/**
* The REST provider. Currently supported are "redmine" and "xwiki". Also supported is "confluence" for import
* only.
*/
@Parameter(property = "jbehave.rest.provider", defaultValue = "xwiki")
String restProvider;
/**
* The root URI of the REST API
*/
@Parameter(property = "jbehave.rest.rootURI", required = true)
String restRootURI;
/**
* The username to access the REST API. May be null if no security enabled.
*/
@Parameter(property = "jbehave.rest.username")
String restUsername;
/**
* The password to access the REST API. May be null if no security enabled.
*/
@Parameter(property = "jbehave.rest.password")
String restPassword;
/**
* The path of the filesystem in which the resources are found
*/
@Parameter(property = "jbehave.rest.resourcesPath", defaultValue = "src/main/resources/stories")
String resourcesPath;
/**
* The extension of the resources
*/
@Parameter(property = "jbehave.rest.resourcesExt", defaultValue = ".story")
String resourcesExt;
ResourceIndexer newResourceIndexer() {
if (restProvider.equals(REDMINE)) {
return new IndexFromRedmine(restUsername, restPassword);
}
if (restProvider.equals(XWIKI)) {
return new IndexFromXWiki(restUsername, restPassword);
}
if (restProvider.equals(CONFLUENCE)) {
return new IndexFromConfluence(restUsername, restPassword);
}
throw new RuntimeException("Unsupported ResourceIndexer provider " + restProvider);
}
ResourceLoader newResourceLoader() {
if (restProvider.equals(REDMINE)) {
return new LoadFromRedmine(Type.JSON, restUsername, restPassword);
}
if (restProvider.equals(XWIKI)) {
return new LoadFromXWiki(Type.JSON, restUsername, restPassword);
}
if (restProvider.equals(CONFLUENCE)) {
return new LoadFromConfluence(restUsername, restPassword);
}
throw new RuntimeException("Unsupported ResourceLoader provider " + restProvider);
}
ResourceUploader newResourceUploader() {
if (restProvider.equals(REDMINE)) {
return new UploadToRedmine(Type.JSON, restUsername, restPassword);
}
if (restProvider.equals(XWIKI)) {
return new UploadToXWiki(Type.XML, restUsername, restPassword);
}
throw new RuntimeException("Unsupported ResourceUploader provider " + restProvider);
}
}