11package org .restcomm .connect .extension .controller ;
22
3+ import org .restcomm .connect .commons .dao .Sid ;
4+ import org .restcomm .connect .dao .AccountsDao ;
5+ import org .restcomm .connect .dao .ClientsDao ;
6+ import org .restcomm .connect .dao .DaoManager ;
7+ import org .restcomm .connect .dao .ExtensionsConfigurationDao ;
8+ import org .restcomm .connect .dao .OrganizationsDao ;
9+ import org .restcomm .connect .dao .entities .Account ;
10+ import org .restcomm .connect .dao .entities .Client ;
11+ import org .restcomm .connect .dao .entities .Organization ;
312import org .restcomm .connect .extension .api .ApiRequest ;
13+ import org .restcomm .connect .extension .api .ExtensionConfiguration ;
414import org .restcomm .connect .extension .api .ExtensionResponse ;
515import org .restcomm .connect .extension .api .ExtensionType ;
16+ import org .restcomm .connect .extension .api .ExtensionContext ;
617import org .restcomm .connect .extension .api .IExtensionRequest ;
718import org .restcomm .connect .extension .api .RestcommExtension ;
819import org .restcomm .connect .extension .api .RestcommExtensionGeneric ;
1122import java .util .List ;
1223import java .util .concurrent .CopyOnWriteArrayList ;
1324
25+ import javax .servlet .ServletContext ;
26+
1427/**
1528 * Created by gvagenas on 21/09/16.
1629 */
17- public class ExtensionController {
30+ public class ExtensionController implements ExtensionContext {
1831 private static Logger logger = Logger .getLogger (ExtensionController .class );
1932
2033 private static ExtensionController instance ;
@@ -24,6 +37,10 @@ public class ExtensionController {
2437 private List restApiExtensions ;
2538 private List featureAccessControlExtensions ;
2639
40+ private DaoManager daoManager ;
41+
42+ private ServletContext context ;
43+
2744 private ExtensionController (){
2845 this .callManagerExtensions = new CopyOnWriteArrayList ();
2946 this .smsSessionExtensions = new CopyOnWriteArrayList ();
@@ -32,6 +49,11 @@ private ExtensionController(){
3249 this .featureAccessControlExtensions = new CopyOnWriteArrayList ();
3350 }
3451
52+ public void init (ServletContext context ) {
53+ this .context = context ;
54+ daoManager = (DaoManager )context .getAttribute (DaoManager .class .getName ());
55+ }
56+
3557 public static ExtensionController getInstance () {
3658 if (instance == null ) {
3759 instance = new ExtensionController ();
@@ -282,4 +304,29 @@ public ExtensionResponse executePostApiAction(final ApiRequest apiRequest, List<
282304 }
283305 return response ;
284306 }
307+
308+ @ Override
309+ public ExtensionConfiguration getEffectiveConfiguration (String extensionSid , String scopeSid ) {
310+ ExtensionsConfigurationDao ecd = daoManager .getExtensionsConfigurationDao ();
311+ ClientsDao cd = daoManager .getClientsDao ();
312+ AccountsDao ad = daoManager .getAccountsDao ();
313+ OrganizationsDao od = daoManager .getOrganizationsDao ();
314+ ExtensionConfiguration extCfg = ecd .getAccountExtensionConfiguration (scopeSid , extensionSid );
315+
316+ Sid sid = new Sid (scopeSid );
317+ Client client = cd .getClient (sid );
318+ Account account = ad .getAccount (sid );
319+ Organization organization = od .getOrganization (sid );
320+
321+ //check parent
322+
323+ //check org
324+
325+ //check default
326+ if (extCfg ==null ) {
327+ //if no account specific entry is defined, we use the extension config
328+ extCfg = ecd .getConfigurationBySid (new Sid (extensionSid ));
329+ }
330+ return extCfg ;
331+ }
285332}
0 commit comments