in src/main/java/com/netflix/imflibrary/RESTfulInterfaces/IMPValidator.java [787:858]
public static void main(String args[]) throws IOException, URISyntaxException, SAXException, JAXBException
{
if (args.length != 3)
{
logger.error(usage());
throw new IllegalArgumentException("Invalid parameters");
}
List<ErrorLogger.ErrorObject> errors = new ArrayList<>();
File assetMapFile=null, packingListFile=null, compositionPlaylistFile=null;
for(String arg : args) {
File inputFile = new File(arg);
ResourceByteRangeProvider resourceByteRangeProvider = new FileByteRangeProvider(inputFile);
byte[] bytes = resourceByteRangeProvider.getByteRangeAsBytes(0, resourceByteRangeProvider.getResourceSize() - 1);
PayloadRecord payloadRecord = new PayloadRecord(bytes, PayloadRecord.PayloadAssetType.Unknown, 0L, resourceByteRangeProvider.getResourceSize());
PayloadRecord.PayloadAssetType payloadAssetType = IMPValidator.getPayloadType(payloadRecord);
payloadRecord = new PayloadRecord(bytes, payloadAssetType, 0L, resourceByteRangeProvider.getResourceSize());
switch (payloadAssetType) {
case PackingList:
packingListFile = inputFile;
logger.info(String.format("File %s was identified as a PackingList document.", packingListFile.getName()));
errors.addAll(validatePKL(payloadRecord));
break;
case AssetMap:
assetMapFile = inputFile;
logger.info(String.format("File %s was identified as a AssetMap document.", assetMapFile.getName()));
errors.addAll(validateAssetMap(payloadRecord));
break;
case CompositionPlaylist:
compositionPlaylistFile = inputFile;
logger.info(String.format("File %s was identified as a CompositionPlaylist document.", compositionPlaylistFile.getName()));
errors.addAll(validateCPL(payloadRecord));
break;
default:
throw new IllegalArgumentException(String.format("UnsupportedSequence AssetType for file %s", inputFile.getName()));
}
}
if(assetMapFile != null
&& packingListFile != null){
ResourceByteRangeProvider resourceByteRangeProvider = new FileByteRangeProvider(assetMapFile);
byte[] bytes = resourceByteRangeProvider.getByteRangeAsBytes(0, resourceByteRangeProvider.getResourceSize() - 1);
PayloadRecord assetMapPayloadRecord = new PayloadRecord(bytes, PayloadRecord.PayloadAssetType.AssetMap, 0L, resourceByteRangeProvider.getResourceSize());
resourceByteRangeProvider = new FileByteRangeProvider(packingListFile);
bytes = resourceByteRangeProvider.getByteRangeAsBytes(0, resourceByteRangeProvider.getResourceSize() - 1);
PayloadRecord packingListPayloadRecord = new PayloadRecord(bytes, PayloadRecord.PayloadAssetType.PackingList, 0L, resourceByteRangeProvider.getResourceSize());
List<PayloadRecord> packingListPayloadRecords = new ArrayList<>();
packingListPayloadRecords.add(packingListPayloadRecord);
errors.addAll(IMPValidator.validatePKLAndAssetMap(assetMapPayloadRecord, packingListPayloadRecords));
}
if(errors.size() > 0){
long warningCount = errors.stream().filter(e -> e.getErrorLevel().equals(IMFErrorLogger.IMFErrors.ErrorLevels
.WARNING)).count();
logger.info(String.format("AssetMap has %d errors and %d warnings",
errors.size() - warningCount, warningCount));
for(ErrorLogger.ErrorObject errorObject : errors){
if(errorObject.getErrorLevel()!= IMFErrorLogger.IMFErrors.ErrorLevels.WARNING) {
logger.error(errorObject.toString());
}
else if(errorObject.getErrorLevel() == IMFErrorLogger.IMFErrors.ErrorLevels.WARNING) {
logger.warn(errorObject.toString());
}
}
}
else{
logger.info("No errors were detected in the AssetMap Document");
}
}