class ViaSurtPrefixedDecideRule extends PredicatedDecideRule {

    private static final long serialVersionUID = 1L;
    
    protected SurtPrefixSet surtPrefixes = new SurtPrefixSet();

    public List<String> getSurtPrefixes() {
        return new ArrayList<String>(surtPrefixes);
    }
    @Required
    public void setSurtPrefixes(List<String> surtPrefixes) {
        this.surtPrefixes.clear();

        if(surtPrefixes!=null) {
            for(String surt : surtPrefixes) {
                this.surtPrefixes.considerAsAddDirective(surt);
            }
        }
    }

    /**
     * Evaluate whether given object's surt form
     * matches one of the supplied surts
     * 
     * @param uri
     * @return true if a surt prefix matches
     */
    @Override
    protected boolean evaluate(CrawlURI uri) {<FILL_FUNCTION_BODY>}

}

        if (uri.getVia() != null && getSurtPrefixes() !=null){
            return surtPrefixes.containsPrefixOf(SurtPrefixSet.getCandidateSurt(uri.getVia()));
        }
        else
            return false;
    
<methods>public void <init>() ,public org.archive.modules.deciderules.DecideResult getDecision() ,public org.archive.modules.deciderules.DecideResult onlyDecision(org.archive.modules.CrawlURI) ,public void setDecision(org.archive.modules.deciderules.DecideResult) <variables>private static final long serialVersionUID