public Status validateMeter(Meter meter) { String meterName; Status returnStatus = null; if (null != meter) { meterName = meter.getMeterName(); if (!FRMUtil.isNameValid(meterName)) { logger.error("Meter Name is invalid %s" + meterName); returnStatus = new Status(StatusCode.BADREQUEST, "Meter Name is invalid"); return returnStatus; } for (int i = 0; i < meter.getMeterBandHeaders().getMeterBandHeader().size(); i++) { if (null != meter.getFlags() && !meter.getFlags().isMeterBurst()) { if (0 < meter.getMeterBandHeaders().getMeterBandHeader().get(i).getBurstSize()) { logger.error("Burst size should only be associated when Burst FLAG is set"); returnStatus = new Status( StatusCode.BADREQUEST, "Burst size should only be associated when Burst FLAG is set"); break; } } } if (null != returnStatus && !returnStatus.isSuccess()) { return returnStatus; } else if (null != meter.getMeterBandHeaders()) { BandType setBandType = null; DscpRemark dscpRemark = null; for (int i = 0; i < meter.getMeterBandHeaders().getMeterBandHeader().size(); i++) { setBandType = meter.getMeterBandHeaders().getMeterBandHeader().get(i).getBandType(); if (setBandType instanceof DscpRemark) { dscpRemark = (DscpRemark) setBandType; if (0 > dscpRemark.getRate()) {} } else if (setBandType instanceof Drop) { if (0 < dscpRemark.getPercLevel()) { logger.error("Number of drop Precedence level"); } } else if (setBandType instanceof Experimenter) { } } } } return new Status(StatusCode.SUCCESS); }