@@ -183,6 +183,68 @@ std::string* Collections::resolveFirst(const std::string& collectionName,
183
183
}
184
184
185
185
186
+ std::string Collections::resolveFirstCopy (const std::string& var) {
187
+ std::string transientVar = m_transient->resolveFirstCopy (var);
188
+
189
+ if (transientVar.empty () == false ) {
190
+ return transientVar;
191
+ }
192
+
193
+ for (auto &a : *this ) {
194
+ std::string res = a.second ->resolveFirstCopy (toupper (a.first ) +
195
+ " :" + var);
196
+ if (res.empty () == false ) {
197
+ return res;
198
+ }
199
+ }
200
+
201
+ return " " ;
202
+ }
203
+
204
+
205
+ std::string Collections::resolveFirstCopy (const std::string& collectionName,
206
+ const std::string& var) {
207
+ if (tolower (collectionName) == " ip"
208
+ && !m_ip_collection_key.empty ()) {
209
+ return m_ip_collection->resolveFirstCopy (toupper (collectionName)
210
+ + " :" + var, m_ip_collection_key);
211
+ }
212
+
213
+ if (tolower (collectionName) == " global"
214
+ && !m_global_collection_key.empty ()) {
215
+ return m_global_collection->resolveFirstCopy (
216
+ toupper (collectionName) + " :" + var,
217
+ m_global_collection_key);
218
+ }
219
+
220
+ if (tolower (collectionName) == " resource"
221
+ && !m_resource_collection_key.empty ()) {
222
+ return m_resource_collection->resolveFirstCopy (
223
+ toupper (collectionName) + " :" + var,
224
+ m_resource_collection_key);
225
+ }
226
+
227
+ if (tolower (collectionName) == " session"
228
+ && !m_session_collection_key.empty ()) {
229
+ return m_session_collection->resolveFirstCopy (
230
+ toupper (collectionName) + " :" + var,
231
+ m_session_collection_key);
232
+ }
233
+
234
+ for (auto &a : *this ) {
235
+ if (tolower (a.first ) == tolower (collectionName)) {
236
+ std::string res = a.second ->resolveFirstCopy (toupper (a.first )
237
+ + " :" + var);
238
+ if (res.empty () == false ) {
239
+ return res;
240
+ }
241
+ }
242
+ }
243
+
244
+ return " " ;
245
+ }
246
+
247
+
186
248
void Collections::resolveSingleMatch (const std::string& var,
187
249
std::vector<const Variable *> *l) {
188
250
0 commit comments