Guillaume Buisson
2021-05-20 c914d298604ef7ad3934c3c213d3f8822d6646d9
src/library/locate/LocatorFactory.cpp
@@ -5,8 +5,6 @@
 *      Author: Gabriele Contini
 */
#include "licensecc_properties.h"
#include "LocatorStrategy.hpp"
#include "LocatorFactory.hpp"
#include "ApplicationFolder.hpp"
@@ -16,18 +14,25 @@
namespace license {
namespace locate {
static std::vector<std::unique_ptr<LocatorStrategy>> extra_strategies;
bool LocatorFactory::find_license_near_moduleb = FIND_LICENSE_NEAR_MODULE;
bool LocatorFactory::find_license_with_env_varb = FIND_LICENSE_WITH_ENV_VAR;
FUNCTION_RETURN LocatorFactory::get_active_strategies(std::vector<std::unique_ptr<LocatorStrategy>> &strategies,
                                         const LicenseLocation *locationHint) {
#if (FIND_LICENSE_NEAR_MODULE)
   strategies.push_back(std::unique_ptr<LocatorStrategy>((LocatorStrategy *)new ApplicationFolder()));
#endif
#if (FIND_LICENSE_WITH_ENV_VAR)
   strategies.push_back(std::unique_ptr<LocatorStrategy>((LocatorStrategy *)new EnvironmentVarLocation()));
   strategies.push_back(std::unique_ptr<LocatorStrategy>((LocatorStrategy *)new EnvironmentVarData()));
#endif
   if (find_license_near_moduleb) {
      strategies.push_back(
         std::unique_ptr<LocatorStrategy>(dynamic_cast<LocatorStrategy *>(new ApplicationFolder())));
   }
   if (find_license_with_env_varb) {
      strategies.push_back(
         std::unique_ptr<LocatorStrategy>(dynamic_cast<LocatorStrategy *>(new EnvironmentVarLocation())));
      strategies.push_back(
         std::unique_ptr<LocatorStrategy>(dynamic_cast<LocatorStrategy *>(new EnvironmentVarData())));
   }
   if (locationHint != nullptr) {
      strategies.push_back(std::unique_ptr<LocatorStrategy>((LocatorStrategy *)new ExternalDefinition(locationHint)));
      strategies.push_back(
         std::unique_ptr<LocatorStrategy>(dynamic_cast<LocatorStrategy *>(new ExternalDefinition(locationHint))));
   }
   return strategies.size() > 0 ? FUNC_RET_OK : FUNC_RET_NOT_AVAIL;
}