package org.archive.wayback.replay.html.rewrite; import org.archive.util.iterator.StringTransformer; import org.archive.wayback.replay.html.ReplayParseContext; import org.springframework.beans.factory.BeanNameAware; /** * {@code RewriteRule} is similar to {@link StringTransformer}, but it receives * policy name (rewrite rule name), from which it can extract parameters. * <p> * StringTransformer can be seen as super-interface of this class (although * {@code RewriteRule} is not an interface), used where transformation is * static. As {@link RewriteRule} does not provide consistent parameter parsing * service, it'd be good idea to define {@code ParameterizedStringTransformer} * with better service to replace {@code RewriteRule}. * </p> */ public abstract class RewriteRule implements BeanNameAware { String name; @Override public void setBeanName(String beanName) { // This method will be called after properties are set. // Name set explicitly shall take precedence over bean name. if (name == null) name = beanName; } public String getName() { return name; } /** * Set name explicitly. Takes precedence over bean name. * @param name rule name */ public void setName(String name) { this.name = name; } public abstract String rewrite(ReplayParseContext context, String policy, String input); }