package org.xdi.oxauth.customization;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.DirectoryFileFilter;
import org.apache.commons.io.filefilter.RegexFileFilter;
import org.ocpsoft.rewrite.annotation.RewriteConfiguration;
import org.ocpsoft.rewrite.config.Configuration;
import org.ocpsoft.rewrite.config.ConfigurationBuilder;
import org.ocpsoft.rewrite.servlet.config.HttpConfigurationProvider;
import org.ocpsoft.rewrite.servlet.config.rule.Join;
import javax.servlet.ServletContext;
import java.io.File;
import java.util.Collection;
/**
* Created by eugeniuparvan on 4/27/17.
*/
@RewriteConfiguration
public class AccessRewriteConfiguration extends HttpConfigurationProvider {
@Override
public Configuration getConfiguration(final ServletContext context) {
ConfigurationBuilder builder = ConfigurationBuilder.begin();
addRulesForAllXHTML(context.getRealPath(""), builder);
if (!Utils.isCustomPagesDirExists())
return builder;
addRulesForAllXHTML(Utils.getCustomPagesPath(), builder);
return builder;
}
private void addRulesForAllXHTML(String path, ConfigurationBuilder builder) {
Collection<File> xhtmlFiles = FileUtils.listFiles(new File(path), new RegexFileFilter(".*\\.xhtml$"), DirectoryFileFilter.DIRECTORY);
for (File files : xhtmlFiles) {
String xhtmlPath = files.getAbsolutePath();
String xhtmlUri = xhtmlPath.substring(path.length(), xhtmlPath.lastIndexOf(".xhtml"));
builder.addRule(Join.path(xhtmlUri).to(xhtmlUri + ".htm"));
}
}
@Override
public int priority() {
return 10;
}
}