public static void main()

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");
        }

    }