From 3f19a0393a15235df7fb39a6cb2bd0b00c277274 Mon Sep 17 00:00:00 2001 From: malte_langkabel Date: Wed, 26 Jul 2017 14:41:15 +0200 Subject: [PATCH] logic: fix issue where Maven project did not show any source files (issue #428) * fixed extraction of generated effective-pom from command line output --- src/lib/utility/utilityXml.cpp | 14 ++++++-- src/lib_java/utility/utilityMaven.cpp | 48 +++++++++++++++++++++------ 2 files changed, 48 insertions(+), 14 deletions(-) diff --git a/src/lib/utility/utilityXml.cpp b/src/lib/utility/utilityXml.cpp index 1d44c99b..c71e728f 100644 --- a/src/lib/utility/utilityXml.cpp +++ b/src/lib/utility/utilityXml.cpp @@ -2,6 +2,8 @@ #include "tinyxml/tinyxml.h" +#include "utility/logging/logging.h" + namespace utility { @@ -54,13 +56,19 @@ namespace utility } else { - // LOG_ERROR("Unable to load file."); + if (doc.Error()) + { + LOG_ERROR(std::string("Error while parsing XML: ") + doc.ErrorDesc() + " (in line " + std::to_string(doc.ErrorRow()) + ": \"" + textAccess->getLine(doc.ErrorRow()) + "\")"); + + } + else + { + LOG_ERROR("Unable to load file."); + } } return values; } - - std::vector getValuesOfAllXmlTagsByName(std::shared_ptr textAccess, const std::string& tag) { std::vector values; diff --git a/src/lib_java/utility/utilityMaven.cpp b/src/lib_java/utility/utilityMaven.cpp index c5590e31..9370d16c 100644 --- a/src/lib_java/utility/utilityMaven.cpp +++ b/src/lib_java/utility/utilityMaven.cpp @@ -16,16 +16,18 @@ namespace { void fetchDirectories(std::vector& pathList, std::shared_ptr xmlAccess, const std::vector& tags, const FilePath& toAppend = FilePath()) { - std::string tagString = ""; - for (size_t i = 0; i < tags.size(); i++) { - if (i != 0) + std::string tagString = ""; + for (size_t i = 0; i < tags.size(); i++) { - tagString += " -> "; + if (i != 0) + { + tagString += " -> "; + } + tagString += tags[i]; } - tagString += tags[i]; + LOG_INFO("Fetching source directories in \"" + tagString + "\"."); } - LOG_INFO("Fetching source directories in \"" + tagString + "\"."); std::vector fetchedDirectories = utility::getValuesOfAllXmlElementsOnPath( xmlAccess, tags @@ -104,15 +106,39 @@ namespace utility return std::vector(); } - std::string xmlContent = ""; - for (std::string line: outputAccess->getAllLines()) + size_t startLine = 0; + for (size_t i = 1; i <= outputAccess->getLineCount(); i++) { - const std::string trimmedLine = utility::trim(line); - if (!trimmedLine.empty() && trimmedLine.front() == '<') + if (utility::isPrefix("getLine(i)))) { - xmlContent.append(line); + startLine = i; + break; } } + + size_t endLine = outputAccess->getLineCount(); + for (size_t i = outputAccess->getLineCount(); i > 0 ; i--) + { + if (utility::isPrefix("<", utility::trim(outputAccess->getLine(i)))) + { + endLine = i; + break; + } + } + for (size_t i = endLine + 1; i <= outputAccess->getLineCount(); i++) + { + if (utility::isPrefix("[", utility::trim(outputAccess->getLine(i)))) + { + break; + } + endLine = i; + } + + std::string xmlContent = ""; + for (const std::string& line: outputAccess->getLines(startLine, endLine)) + { + xmlContent.append(line); + } std::shared_ptr xmlAccess = TextAccess::createFromString(xmlContent); std::vector uncheckedDirectories;