Skip to content

Commit 02923e8

Browse files
RESTCOMM-2064: Implement proper hierarchy in getEffectiveConfiguration
1 parent 77cf5b8 commit 02923e8

1 file changed

Lines changed: 34 additions & 3 deletions

File tree

restcomm/restcomm.extension.controller/src/main/java/org/restcomm/connect/extension/controller/ExtensionController.java

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -311,16 +311,47 @@ public ExtensionConfiguration getEffectiveConfiguration(String extensionSid, Str
311311
ClientsDao cd = daoManager.getClientsDao();
312312
AccountsDao ad = daoManager.getAccountsDao();
313313
OrganizationsDao od = daoManager.getOrganizationsDao();
314-
ExtensionConfiguration extCfg = ecd.getAccountExtensionConfiguration(scopeSid, extensionSid);
315314

316315
Sid sid = new Sid(scopeSid);
317316
Client client = cd.getClient(sid);
318317
Account account = ad.getAccount(sid);
319318
Organization organization = od.getOrganization(sid);
320319

321-
//check parent
320+
//FIXME: might not be optimized
321+
//preliminary check for all scopes: client, acc, org
322+
ExtensionConfiguration extCfg = ecd.getAccountExtensionConfiguration(scopeSid, extensionSid);
323+
324+
//the scopeSid was a client
325+
if(client!= null && extCfg==null) {
326+
account = ad.getAccount(client.getAccountSid());
327+
}
328+
329+
//the scopeSid was an account
330+
if(account!=null && extCfg==null) {
331+
extCfg = ecd.getAccountExtensionConfiguration(account.getSid().toString(), extensionSid);
332+
if(extCfg==null) {
333+
List<String> lineage = ad.getAccountLineage(sid);
334+
for(String currSid : lineage) {
335+
if(logger.isInfoEnabled()) {
336+
logger.info("checking "+ currSid);
337+
}
338+
extCfg = ecd.getAccountExtensionConfiguration(currSid, extensionSid);
339+
if(extCfg != null) {
340+
break;
341+
}
342+
}
343+
organization = od.getOrganization(account.getOrganizationSid());
344+
}
345+
}
322346

323-
//check org
347+
//the scopeSid was an org
348+
if(organization!= null && extCfg==null) {
349+
//it is assumed that lineage will always have identical org, so we only check the originating account
350+
extCfg = ecd.getAccountExtensionConfiguration(organization.getSid().toString(), extensionSid);
351+
if(logger.isInfoEnabled()) {
352+
logger.info("checking "+ account.getOrganizationSid().toString());
353+
}
354+
}
324355

325356
//check default
326357
if(extCfg==null) {

0 commit comments

Comments
 (0)