Exemplo n.º 1
0
    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 &notInDFS = 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;
    }