Coverage Summary for Class: BlockParentCompositeRule (co.rsk.validators)

Class Class, % Method, % Line, %
BlockParentCompositeRule 100% (1/1) 100% (3/3) 88.9% (16/18)


1 /* 2  * This file is part of RskJ 3  * Copyright (C) 2017 RSK Labs Ltd. 4  * 5  * This program is free software: you can redistribute it and/or modify 6  * it under the terms of the GNU Lesser General Public License as published by 7  * the Free Software Foundation, either version 3 of the License, or 8  * (at your option) any later version. 9  * 10  * This program is distributed in the hope that it will be useful, 11  * but WITHOUT ANY WARRANTY; without even the implied warranty of 12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13  * GNU Lesser General Public License for more details. 14  * 15  * You should have received a copy of the GNU Lesser General Public License 16  * along with this program. If not, see <http://www.gnu.org/licenses/>. 17  */ 18  19 package co.rsk.validators; 20  21 import org.ethereum.core.Block; 22 import org.slf4j.Logger; 23 import org.slf4j.LoggerFactory; 24  25 import java.util.ArrayList; 26 import java.util.List; 27  28 /** 29  * Created by mario on 18/01/17. 30  */ 31 public class BlockParentCompositeRule implements BlockParentDependantValidationRule { 32  33  private static final Logger logger = LoggerFactory.getLogger("blockvalidator"); 34  35  private List<BlockParentDependantValidationRule> rules; 36  37  public BlockParentCompositeRule(BlockParentDependantValidationRule... rules) { 38  this.rules = new ArrayList<>(); 39  if(rules != null) { 40  for (BlockParentDependantValidationRule rule : rules) { 41  if(rule != null) { 42  this.rules.add(rule); 43  } 44  } 45  } 46  } 47  48  @Override 49  public boolean isValid(Block block, Block parent) { 50  final String shortHash = block.getPrintableHash(); 51  long number = block.getNumber(); 52  logger.debug("Validating block {} {}", shortHash, number); 53  for(BlockParentDependantValidationRule rule : this.rules) { 54  logger.debug("Validation rule {}", rule.getClass().getSimpleName()); 55  56  if(!rule.isValid(block, parent)) { 57  logger.warn("Error Validating block {} {}", shortHash, number); 58  return false; 59  } 60  } 61  return true; 62  } 63 }