diff options
author | Tor Egge <Tor.Egge@online.no> | 2022-08-30 16:10:13 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2022-08-30 16:10:13 +0200 |
commit | f51892ec335b49d56f097da12f1138f03a32891d (patch) | |
tree | 976969352cdaf702f7f50181a6e91b902add7ac1 /searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_factory.cpp | |
parent | 7d6ff13ac8bd0485d30ffd2a979fae3d5fa8d08c (diff) |
Use reference to IDocsumEnvironemt instead of pointer.
Diffstat (limited to 'searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_factory.cpp')
-rw-r--r-- | searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_factory.cpp | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_factory.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_factory.cpp index fdbf9cf169d..cebfac4c86d 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_factory.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsum_field_writer_factory.cpp @@ -19,7 +19,7 @@ using vespalib::IllegalArgumentException; namespace search::docsummary { -DocsumFieldWriterFactory::DocsumFieldWriterFactory(bool use_v8_geo_positions, IDocsumEnvironment* env) +DocsumFieldWriterFactory::DocsumFieldWriterFactory(bool use_v8_geo_positions, IDocsumEnvironment& env) : _use_v8_geo_positions(use_v8_geo_positions), _env(env), _matching_elems_fields(std::make_shared<MatchingElementsFields>()) @@ -28,6 +28,12 @@ DocsumFieldWriterFactory::DocsumFieldWriterFactory(bool use_v8_geo_positions, ID DocsumFieldWriterFactory::~DocsumFieldWriterFactory() = default; +bool +DocsumFieldWriterFactory::has_attribute_manager() const noexcept +{ + return getEnvironment().getAttributeManager() != nullptr; +} + std::unique_ptr<DocsumFieldWriter> DocsumFieldWriterFactory::create_docsum_field_writer(const vespalib::string& fieldName, const vespalib::string& overrideName, const vespalib::string& argument, bool& rc) { @@ -35,7 +41,7 @@ DocsumFieldWriterFactory::create_docsum_field_writer(const vespalib::string& fie std::unique_ptr<DocsumFieldWriter> fieldWriter; if (overrideName == "dynamicteaser") { if ( ! argument.empty() ) { - auto fw = std::make_unique<DynamicTeaserDFW>(getEnvironment()->getJuniper()); + auto fw = std::make_unique<DynamicTeaserDFW>(getEnvironment().getJuniper()); auto fw_ptr = fw.get(); fieldWriter = std::move(fw); rc = fw_ptr->Init(fieldName.c_str(), argument); @@ -43,10 +49,10 @@ DocsumFieldWriterFactory::create_docsum_field_writer(const vespalib::string& fie throw IllegalArgumentException("Missing argument"); } } else if (overrideName == "summaryfeatures") { - fieldWriter = std::make_unique<SummaryFeaturesDFW>(getEnvironment()); + fieldWriter = std::make_unique<SummaryFeaturesDFW>(); rc = true; } else if (overrideName == "rankfeatures") { - fieldWriter = std::make_unique<RankFeaturesDFW>(getEnvironment()); + fieldWriter = std::make_unique<RankFeaturesDFW>(); rc = true; } else if (overrideName == "empty") { fieldWriter = std::make_unique<EmptyDFW>(); @@ -59,38 +65,38 @@ DocsumFieldWriterFactory::create_docsum_field_writer(const vespalib::string& fie throw IllegalArgumentException("Missing argument"); } } else if (overrideName == "absdist") { - if (getEnvironment()) { - fieldWriter = AbsDistanceDFW::create(argument.c_str(), getEnvironment()->getAttributeManager()); + if (has_attribute_manager()) { + fieldWriter = AbsDistanceDFW::create(argument.c_str(), getEnvironment().getAttributeManager()); rc = static_cast<bool>(fieldWriter); } } else if (overrideName == "positions") { - if (getEnvironment()) { - fieldWriter = PositionsDFW::create(argument.c_str(), getEnvironment()->getAttributeManager(), _use_v8_geo_positions); + if (has_attribute_manager()) { + fieldWriter = PositionsDFW::create(argument.c_str(), getEnvironment().getAttributeManager(), _use_v8_geo_positions); rc = static_cast<bool>(fieldWriter); } } else if (overrideName == "geopos") { - if (getEnvironment()) { - fieldWriter = GeoPositionDFW::create(argument.c_str(), getEnvironment()->getAttributeManager(), _use_v8_geo_positions); + if (has_attribute_manager()) { + fieldWriter = GeoPositionDFW::create(argument.c_str(), getEnvironment().getAttributeManager(), _use_v8_geo_positions); rc = static_cast<bool>(fieldWriter); } } else if (overrideName == "attribute") { - if (getEnvironment() && getEnvironment()->getAttributeManager()) { - fieldWriter = AttributeDFWFactory::create(*getEnvironment()->getAttributeManager(), argument); + if (has_attribute_manager()) { + fieldWriter = AttributeDFWFactory::create(*getEnvironment().getAttributeManager(), argument); rc = true; // Allow missing attribute vector } } else if (overrideName == "attributecombiner") { - if (getEnvironment() && getEnvironment()->getAttributeManager()) { - auto attr_ctx = getEnvironment()->getAttributeManager()->createContext(); + if (has_attribute_manager()) { + auto attr_ctx = getEnvironment().getAttributeManager()->createContext(); const vespalib::string& source_field = argument.empty() ? fieldName : argument; fieldWriter = AttributeCombinerDFW::create(source_field, *attr_ctx, false, std::shared_ptr<MatchingElementsFields>()); rc = static_cast<bool>(fieldWriter); } } else if (overrideName == "matchedattributeelementsfilter") { const vespalib::string& source_field = argument.empty() ? fieldName : argument; - if (getEnvironment() && getEnvironment()->getAttributeManager()) { - auto attr_ctx = getEnvironment()->getAttributeManager()->createContext(); + if (has_attribute_manager()) { + auto attr_ctx = getEnvironment().getAttributeManager()->createContext(); if (attr_ctx->getAttribute(source_field) != nullptr) { - fieldWriter = AttributeDFWFactory::create(*getEnvironment()->getAttributeManager(), source_field, true, _matching_elems_fields); + fieldWriter = AttributeDFWFactory::create(*getEnvironment().getAttributeManager(), source_field, true, _matching_elems_fields); } else { fieldWriter = AttributeCombinerDFW::create(source_field, *attr_ctx, true, _matching_elems_fields); } @@ -98,8 +104,8 @@ DocsumFieldWriterFactory::create_docsum_field_writer(const vespalib::string& fie } } else if (overrideName == "matchedelementsfilter") { const vespalib::string& source_field = argument.empty() ? fieldName : argument; - if (getEnvironment() && getEnvironment()->getAttributeManager()) { - auto attr_ctx = getEnvironment()->getAttributeManager()->createContext(); + if (has_attribute_manager()) { + auto attr_ctx = getEnvironment().getAttributeManager()->createContext(); fieldWriter = MatchedElementsFilterDFW::create(source_field,*attr_ctx, _matching_elems_fields); rc = static_cast<bool>(fieldWriter); } |