diff --git a/api/src/com/cloud/user/UserContext.java b/api/src/com/cloud/user/UserContext.java index b140728e596..786590eed09 100644 --- a/api/src/com/cloud/user/UserContext.java +++ b/api/src/com/cloud/user/UserContext.java @@ -22,9 +22,7 @@ import com.cloud.utils.component.ComponentLocator; public class UserContext { private static ThreadLocal s_currentContext = new ThreadLocal(); - private static final ComponentLocator locator = ComponentLocator.getLocator(ManagementService.Name); - private static final AccountService _accountMgr = locator.getManager(AccountService.class); - + private long userId; private String sessionId; private Account account; @@ -34,8 +32,6 @@ public class UserContext { private boolean apiServer; - private static UserContext s_adminContext = new UserContext(_accountMgr.getSystemUser().getId(), _accountMgr.getSystemAccount(), null, false); - public UserContext() { } @@ -86,10 +82,10 @@ public class UserContext { // however, there are many places that run background jobs assume the system context. // // If there is a security concern, all entry points from user (including the front end that takes HTTP -// request in and + // request in and // the core async-job manager that runs commands from user) have explicitly setup the UserContext. // - return s_adminContext; + return UserContextInitializer.getInstance().getAdminContext(); } return context; } diff --git a/api/src/com/cloud/user/UserContextInitializer.java b/api/src/com/cloud/user/UserContextInitializer.java new file mode 100644 index 00000000000..a54596373eb --- /dev/null +++ b/api/src/com/cloud/user/UserContextInitializer.java @@ -0,0 +1,40 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +package com.cloud.user; + +import javax.inject.Inject; + +import org.springframework.stereotype.Component; + +@Component +public class UserContextInitializer { + @Inject private AccountService _accountMgr; + + private static UserContextInitializer s_instance; + + public UserContextInitializer() { + s_instance = this; + } + + public static UserContextInitializer getInstance() { + return s_instance; + } + + public UserContext getAdminContext() { + return new UserContext(_accountMgr.getSystemUser().getId(), _accountMgr.getSystemAccount(), null, false); + } +}