File indexing completed on 2025-02-14 03:16:37
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #include <memory>
0021
0022 #include "Doodad.h"
0023 #include "GadgetRcd.h"
0024 #include "WhatsIt.h"
0025
0026 #include "FWCore/Framework/interface/es_Label.h"
0027 #include "FWCore/Framework/interface/ESProducer.h"
0028 #include "FWCore/Framework/interface/ESTagGetter.h"
0029 #include "FWCore/Framework/interface/ESTransientHandle.h"
0030 #include "FWCore/Framework/interface/ModuleFactory.h"
0031 #include "FWCore/Integration/interface/ESTestData.h"
0032 #include "FWCore/Integration/interface/IOVTestInfo.h"
0033 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0034 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0035 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0036 #include "FWCore/Utilities/interface/ESGetToken.h"
0037 #include "FWCore/Utilities/interface/ESProductTag.h"
0038
0039 namespace edmtest {
0040
0041 class MayConsumeWhatsIt : public edm::ESProducer {
0042 public:
0043 MayConsumeWhatsIt(edm::ParameterSet const&);
0044
0045 using ReturnType = std::unique_ptr<IOVTestInfo>;
0046
0047 ReturnType produce(const GadgetRcd&);
0048 ReturnType produceMayConsumeTestDataA(const GadgetRcd&);
0049
0050 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0051
0052 private:
0053 edm::ESGetToken<WhatsIt, GadgetRcd> token_for_produce_;
0054 edm::ESGetToken<ESTestDataA, GadgetRcd> token_for_produceMayConsumeTestDataA_;
0055 };
0056
0057 MayConsumeWhatsIt::MayConsumeWhatsIt(edm::ParameterSet const& pset) {
0058 auto collector = setWhatProduced(this, edm::es::Label("DependsOnMayConsume"));
0059 collector.setMayConsume(
0060 token_for_produce_,
0061 [](edm::ESTagGetter get, edm::ESTransientHandle<Doodad> handle) { return get("", "DR"); },
0062 edm::ESProductTag<Doodad, GadgetRcd>("", ""));
0063
0064 auto collector2 = setWhatProduced(
0065 this, &edmtest::MayConsumeWhatsIt::produceMayConsumeTestDataA, edm::es::Label("DependsOnMayConsume2"));
0066 collector2.setMayConsume(
0067 token_for_produceMayConsumeTestDataA_,
0068 [](edm::ESTagGetter get, edm::ESTransientHandle<Doodad> handle) { return get.nothing(); },
0069 edm::ESProductTag<Doodad, GadgetRcd>("", ""));
0070 }
0071
0072 MayConsumeWhatsIt::ReturnType MayConsumeWhatsIt::produce(const GadgetRcd& iRecord) {
0073 auto handle = iRecord.getHandle(token_for_produce_);
0074 if (!handle.isValid()) {
0075 throw cms::Exception("TestFailure") << "MayConsumeWhatsIt::produceMayConsumeTestDataA, expected valid handle";
0076 }
0077
0078 auto product = std::make_unique<IOVTestInfo>();
0079 return product;
0080 }
0081
0082 MayConsumeWhatsIt::ReturnType MayConsumeWhatsIt::produceMayConsumeTestDataA(const GadgetRcd& iRecord) {
0083
0084
0085
0086
0087 auto handle = iRecord.getHandle(token_for_produceMayConsumeTestDataA_);
0088 if (handle.isValid()) {
0089 throw cms::Exception("TestFailure") << "MayConsumeWhatsIt::produceMayConsumeTestDataA, expected invalid handle";
0090 }
0091
0092 auto product = std::make_unique<IOVTestInfo>();
0093 return product;
0094 }
0095
0096 void MayConsumeWhatsIt::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0097 edm::ParameterSetDescription desc;
0098 descriptions.addDefault(desc);
0099 }
0100
0101 }
0102 using namespace edmtest;
0103 DEFINE_FWK_EVENTSETUP_MODULE(MayConsumeWhatsIt);