Coverage Report - org.webslinger.rules.CSSSelector
 
Classes in this File Line Coverage Branch Coverage Complexity
CSSSelector
80%
24/30
100%
3/3
0
 
 1  
 package org.webslinger.rules;
 2  
 
 3  
 import java.io.IOException;
 4  
 import javax.servlet.ServletException;
 5  
 import javax.servlet.ServletRequest;
 6  
 
 7  
 import org.webslinger.Webslinger;
 8  
 import org.webslinger.container.WebslingerContainer;
 9  
 
 10  0
 public class CSSSelector extends SimpleNode implements Comparable<CSSSelector> {
 11  
     private int[] specificity;
 12  
     private AbstractSelector selector;
 13  
     private boolean isConstant;
 14  
 
 15  
     public CSSSelector(int id) {
 16  0
         super(id);
 17  0
     }
 18  
 
 19  
     public CSSSelector(Rules p, int id) {
 20  116
         super(p, id);
 21  116
     }
 22  
 
 23  
     /** Accept the visitor. **/
 24  
     public Object jjtAccept(RulesVisitor visitor, Object data) {
 25  0
         return visitor.visit(this, data);
 26  
     }
 27  
 
 28  
     public void compile(WebslingerContainer container) throws IOException {
 29  116
         int[] specificity = new int[Selector.values().length];
 30  116
         boolean[] isConstantHolder = new boolean[] {true};
 31  116
         selector = (AbstractSelector) jjtGetChild(0);
 32  116
         selector.updateSpecificity(specificity, isConstantHolder);
 33  116
         selector.compile(container);
 34  126
         while (selector.jjtGetNumChildren() > 0) {
 35  10
             Node n = selector.jjtGetChild(0);
 36  10
             selector = (AbstractSelector) selector.jjtGetChild(0);
 37  10
             selector.updateSpecificity(specificity, isConstantHolder);
 38  10
             selector.compile(container);
 39  10
         }
 40  116
         this.specificity = specificity;
 41  116
         this.isConstant = isConstantHolder[0];
 42  116
     }
 43  
 
 44  
     public int[] getSpecificity() {
 45  190
         return specificity;
 46  
     }
 47  
 
 48  
     public boolean isConstant() {
 49  0
         return isConstant;
 50  
     }
 51  
 
 52  
     public boolean matches(ServletRequest request, Webslinger top) throws IOException, ServletException {
 53  3801
         return selector.matches(request, top);
 54  
     }
 55  
 
 56  
     public int compareTo(CSSSelector other) {
 57  95
         int[] mine = getSpecificity();
 58  95
         int[] theirs = other.getSpecificity();
 59  329
         for (int i = 0; i < mine.length; i++) {
 60  299
             int r = mine[i] - theirs[i];
 61  299
             if (r != 0) return r;
 62  
         }
 63  30
         return 0;
 64  
     }
 65  
 
 66  
     public String toString() {
 67  0
         return super.toString() + "(" + isConstant() + ")";
 68  
     }
 69  
 }