AbstractStoryPathResolver.java
package org.jbehave.core.io;
import org.jbehave.core.Embeddable;
public abstract class AbstractStoryPathResolver implements
StoryPathResolver {
static final String DOT_REGEX = "\\.";
static final String SLASH = "/";
static final String EMPTY = "";
static final String DEFAULT_EXTENSION = ".story";
private final String extension;
protected AbstractStoryPathResolver(String extension) {
this.extension = extension;
}
@Override
public String resolve(Class<? extends Embeddable> embeddableClass) {
return formatPath(resolveDirectory(embeddableClass), resolveName(embeddableClass), extension);
}
private String formatPath(String directory, String name,
String extension) {
StringBuilder sb = new StringBuilder();
if (directory.length() > 0) {
sb.append(directory).append(SLASH);
}
sb.append(name);
if (extension.length() > 0) {
sb.append(extension);
}
return sb.toString();
}
protected String resolveDirectory(
Class<? extends Embeddable> embeddableClass) {
Package scenarioPackage = embeddableClass.getPackage();
if (scenarioPackage != null) {
return scenarioPackage.getName().replaceAll(DOT_REGEX, SLASH);
}
return EMPTY;
}
protected abstract String resolveName(
Class<? extends Embeddable> embeddableClass);
}