1717package org .apache .cloudstack .discovery ;
1818
1919import com .cloud .serializer .Param ;
20- import com .cloud .server .ManagementServer ;
2120import com .cloud .user .User ;
2221import com .cloud .utils .ReflectUtil ;
2322import com .cloud .utils .StringUtils ;
2423import com .cloud .utils .component .Adapters ;
2524import com .cloud .utils .component .ComponentLocator ;
26- import com .cloud .utils .component .Inject ;
27- import com .cloud .utils .component .PluggableService ;
2825import com .google .gson .annotations .SerializedName ;
2926import org .apache .cloudstack .acl .APIChecker ;
30- import org .apache .cloudstack .acl .RoleType ;
3127import org .apache .cloudstack .api .APICommand ;
3228import org .apache .cloudstack .api .BaseCmd ;
3329import org .apache .cloudstack .api .BaseAsyncCmd ;
5450public class ApiDiscoveryServiceImpl implements ApiDiscoveryService {
5551 private static final Logger s_logger = Logger .getLogger (ApiDiscoveryServiceImpl .class );
5652
57- @ Inject (adapter = APIChecker .class )
58- protected Adapters <APIChecker > _apiAccessCheckers ;
59-
60- private static Map <String , ApiDiscoveryResponse > _apiNameDiscoveryResponseMap = null ;
53+ protected static Adapters <APIChecker > s_apiAccessCheckers = null ;
54+ private static Map <String , ApiDiscoveryResponse > s_apiNameDiscoveryResponseMap = null ;
6155
6256 protected ApiDiscoveryServiceImpl () {
6357 super ();
64- if (_apiNameDiscoveryResponseMap == null ) {
58+ if (s_apiNameDiscoveryResponseMap == null ) {
6559 long startTime = System .nanoTime ();
66- _apiNameDiscoveryResponseMap = new HashMap <String , ApiDiscoveryResponse >();
60+ s_apiNameDiscoveryResponseMap = new HashMap <String , ApiDiscoveryResponse >();
6761 cacheResponseMap ();
6862 long endTime = System .nanoTime ();
6963 s_logger .info ("Api Discovery Service: Annotation, docstrings, api relation graph processed in " + (endTime - startTime ) / 1000000.0 + " ms" );
@@ -142,11 +136,11 @@ private void cacheResponseMap() {
142136 }
143137 }
144138 response .setObjectName ("api" );
145- _apiNameDiscoveryResponseMap .put (apiName , response );
139+ s_apiNameDiscoveryResponseMap .put (apiName , response );
146140 }
147141
148- for (String apiName : _apiNameDiscoveryResponseMap .keySet ()) {
149- ApiDiscoveryResponse response = _apiNameDiscoveryResponseMap .get (apiName );
142+ for (String apiName : s_apiNameDiscoveryResponseMap .keySet ()) {
143+ ApiDiscoveryResponse response = s_apiNameDiscoveryResponseMap .get (apiName );
150144 Set <ApiParameterResponse > processedParams = new HashSet <ApiParameterResponse >();
151145 for (ApiParameterResponse param : response .getParams ()) {
152146 if (responseApiNameListMap .containsKey (param .getRelated ())) {
@@ -166,7 +160,7 @@ private void cacheResponseMap() {
166160 } else {
167161 response .setRelated (null );
168162 }
169- _apiNameDiscoveryResponseMap .put (apiName , response );
163+ s_apiNameDiscoveryResponseMap .put (apiName , response );
170164 }
171165 }
172166
@@ -175,34 +169,39 @@ public ListResponse<? extends BaseResponse> listApis(User user, String name) {
175169 ListResponse <ApiDiscoveryResponse > response = new ListResponse <ApiDiscoveryResponse >();
176170 List <ApiDiscoveryResponse > responseList = new ArrayList <ApiDiscoveryResponse >();
177171
172+ if (s_apiAccessCheckers == null ) {
173+ ComponentLocator locator = ComponentLocator .getCurrentLocator ();
174+ s_apiAccessCheckers = locator .getAdapters (APIChecker .class );
175+ }
176+
178177 if (user == null )
179178 return null ;
180179
181180 if (name != null ) {
182- if (!_apiNameDiscoveryResponseMap .containsKey (name ))
181+ if (!s_apiNameDiscoveryResponseMap .containsKey (name ))
183182 return null ;
184183
185- for (APIChecker apiChecker : _apiAccessCheckers ) {
184+ for (APIChecker apiChecker : s_apiAccessCheckers ) {
186185 try {
187186 apiChecker .checkAccess (user , name );
188187 } catch (Exception ex ) {
189188 return null ;
190189 }
191190 }
192- responseList .add (_apiNameDiscoveryResponseMap .get (name ));
191+ responseList .add (s_apiNameDiscoveryResponseMap .get (name ));
193192
194193 } else {
195- for (String apiName : _apiNameDiscoveryResponseMap .keySet ()) {
194+ for (String apiName : s_apiNameDiscoveryResponseMap .keySet ()) {
196195 boolean isAllowed = true ;
197- for (APIChecker apiChecker : _apiAccessCheckers ) {
196+ for (APIChecker apiChecker : s_apiAccessCheckers ) {
198197 try {
199- apiChecker .checkAccess (user , name );
198+ apiChecker .checkAccess (user , apiName );
200199 } catch (Exception ex ) {
201200 isAllowed = false ;
202201 }
203202 }
204203 if (isAllowed )
205- responseList .add (_apiNameDiscoveryResponseMap .get (apiName ));
204+ responseList .add (s_apiNameDiscoveryResponseMap .get (apiName ));
206205 }
207206 }
208207 response .setResponses (responseList );
0 commit comments