virtual int processCMD() { Owned<IClientWsPackageProcess> packageProcessClient = getWsPackageSoapService(optServer, optPort, optUsername, optPassword); Owned<IClientValidatePackageRequest> request = packageProcessClient->createValidatePackageRequest(); if (optFileName.length()) { StringBuffer pkgInfo; pkgInfo.loadFile(optFileName); fprintf(stdout, "\nvalidating packagemap file %s\n\n", optFileName.sget()); request->setInfo(pkgInfo); } request->setActive(optValidateActive); request->setPMID(optPMID); request->setTarget(optTarget); request->setQueryIdToVerify(optQueryId); request->setCheckDFS(optCheckDFS); request->setGlobalScope(optGlobalScope); bool validateMessages = false; Owned<IClientValidatePackageResponse> resp = packageProcessClient->ValidatePackage(request); if (resp->getExceptions().ordinality()>0) { validateMessages = true; outputMultiExceptions(resp->getExceptions()); } StringArray &errors = resp->getErrors(); if (errors.ordinality()>0) { validateMessages = true; fputs(" Error(s):\n", stderr); ForEachItemIn(i, errors) fprintf(stderr, " %s\n", errors.item(i)); } StringArray &warnings = resp->getWarnings(); if (warnings.ordinality()>0) { validateMessages = true; fputs(" Warning(s):\n", stderr); ForEachItemIn(i, warnings) fprintf(stderr, " %s\n", warnings.item(i)); } StringArray &unmatchedQueries = resp->getQueries().getUnmatched(); if (unmatchedQueries.ordinality()>0) { validateMessages = true; fputs("\n Queries without matching package:\n", stderr); ForEachItemIn(i, unmatchedQueries) fprintf(stderr, " %s\n", unmatchedQueries.item(i)); } StringArray &unusedPackages = resp->getPackages().getUnmatched(); if (unusedPackages.ordinality()>0) { validateMessages = true; fputs("\n Packages without matching queries:\n", stderr); ForEachItemIn(i, unusedPackages) fprintf(stderr, " %s\n", unusedPackages.item(i)); } StringArray &unusedFiles = resp->getFiles().getUnmatched(); if (unusedFiles.ordinality()>0) { fputs("\n Files without matching package definitions:\n", stderr); ForEachItemIn(i, unusedFiles) fprintf(stderr, " %s\n", unusedFiles.item(i)); } StringArray ¬InDFS = resp->getFiles().getNotInDFS(); if (notInDFS.ordinality()>0) { fputs("\n Packagemap SubFiles not found in DFS:\n", stderr); ForEachItemIn(i, notInDFS) fprintf(stderr, " %s\n", notInDFS.item(i)); } if (!validateMessages) fputs(" Validation was successful\n", stdout); return 0; }