Skip to content

Commit af67d87

Browse files
committed
Fix issues with @db support in Spring environment
1 parent 8af85b0 commit af67d87

8 files changed

Lines changed: 27 additions & 22 deletions

File tree

client/tomcatconf/applicationContext.xml.in

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,25 @@
3939
-->
4040
<aop:config proxy-target-class="true">
4141
<aop:aspect id="dbContextBuilder" ref="transactionContextBuilder">
42-
<aop:pointcut id="captureAnyMethod"
43-
expression="execution(* *(..))" />
44-
<aop:around pointcut-ref="captureAnyMethod" method="AroundAnyMethod"/>
42+
<aop:pointcut id="captureAnyMethod"
43+
expression="execution(* *(..))"
44+
/>
45+
46+
<aop:around pointcut-ref="captureAnyMethod" method="AroundAnyMethod"/>
4547
</aop:aspect>
48+
49+
<aop:aspect id="actionEventInterceptorAspect" ref="actionEventInterceptor">
50+
<aop:pointcut id="captureEventMethod"
51+
expression="execution(* *(..)) and @annotation(com.cloud.event.ActionEvent)"
52+
/>
53+
<aop:around pointcut-ref="captureEventMethod" method="AroundAnyMethod"/>
54+
</aop:aspect>
55+
4656
</aop:config>
4757

4858
<bean id="transactionContextBuilder" class="com.cloud.utils.db.TransactionContextBuilder" />
59+
<bean id="actionEventInterceptor" class="com.cloud.event.ActionEventInterceptor" />
60+
4961

5062
<!--
5163
RPC/Async/EventBus
@@ -77,4 +89,6 @@
7789

7890
<bean id="eventBus" class = "org.apache.cloudstack.framework.eventbus.EventBusBase" />
7991

92+
<bean id="apiServlet" class = "com.cloud.api.ApiServlet" />
93+
8094
</beans>

server/src/com/cloud/agent/manager/AgentMonitor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public class AgentMonitor extends Thread implements Listener {
7676
private Map<Long, Long> _pingMap;
7777

7878
public AgentMonitor() {
79+
_pingMap = new ConcurrentHashMap<Long, Long>(10007);
7980
}
8081

8182
public AgentMonitor(long msId, HostDao hostDao, VMInstanceDao vmDao, DataCenterDao dcDao, HostPodDao podDao, AgentManagerImpl agentMgr, AlertManager alertMgr, long pingTimeout) {

server/src/com/cloud/api/ApiDispatcher.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,6 @@
5353

5454
import com.cloud.async.AsyncCommandQueued;
5555
import com.cloud.async.AsyncJobManager;
56-
import com.cloud.configuration.Config;
57-
import com.cloud.configuration.dao.ConfigurationDao;
5856
import com.cloud.dao.EntityManager;
5957
import com.cloud.exception.AccountLimitException;
6058
import com.cloud.exception.InsufficientCapacityException;
@@ -67,7 +65,6 @@
6765
import com.cloud.user.UserContext;
6866
import com.cloud.utils.DateUtil;
6967
import com.cloud.utils.ReflectUtil;
70-
import com.cloud.utils.component.ComponentContext;
7168
import com.cloud.utils.exception.CSExceptionErrorCode;
7269
import com.cloud.utils.exception.CloudRuntimeException;
7370

server/src/com/cloud/api/ApiServlet.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ public class ApiServlet extends HttpServlet {
4848
public static final Logger s_logger = Logger.getLogger(ApiServlet.class.getName());
4949
private static final Logger s_accessLogger = Logger.getLogger("apiserver." + ApiServer.class.getName());
5050

51-
ApiServer _apiServer;
52-
AccountService _accountMgr;
51+
@Inject ApiServer _apiServer;
52+
@Inject AccountService _accountMgr;
5353

5454
public ApiServlet() {
5555
super();

server/src/com/cloud/event/ActionEventInterceptor.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,15 @@
2020
import java.lang.reflect.Method;
2121

2222
import org.aspectj.lang.ProceedingJoinPoint;
23-
import org.aspectj.lang.annotation.Around;
24-
import org.aspectj.lang.annotation.Aspect;
25-
import org.aspectj.lang.annotation.Pointcut;
2623
import org.aspectj.lang.reflect.MethodSignature;
2724

2825
import com.cloud.user.UserContext;
2926

30-
@Aspect
3127
public class ActionEventInterceptor {
3228

3329
public ActionEventInterceptor() {
3430
}
3531

36-
@Pointcut(value="execution( * *(..))")
37-
public void anyMethod() {
38-
}
39-
40-
@Around("anyMethod() && @annotation(ActionEvent)")
4132
public Object AroundAnyMethod(ProceedingJoinPoint call) throws Throwable {
4233
MethodSignature methodSignature = (MethodSignature)call.getSignature();
4334
Method targetMethod = methodSignature.getMethod();

server/src/com/cloud/servlet/RegisterCompleteServlet.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ public class RegisterCompleteServlet extends HttpServlet implements ServletConte
4444

4545
static final long serialVersionUID = SerialVersionUID.CloudStartupServlet;
4646

47-
@Inject AccountService _accountSvc = null;
48-
@Inject ConfigurationDao _configDao = null;
49-
@Inject UserDao _userDao = null;
47+
@Inject AccountService _accountSvc;
48+
@Inject ConfigurationDao _configDao;
49+
@Inject UserDao _userDao;
5050

5151
@Override
5252
public void contextInitialized(ServletContextEvent sce) {

server/src/com/cloud/user/dao/UserDaoImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@
2323
import org.springframework.stereotype.Component;
2424

2525
import com.cloud.user.UserVO;
26+
import com.cloud.utils.db.DB;
2627
import com.cloud.utils.db.GenericDaoBase;
2728
import com.cloud.utils.db.SearchBuilder;
2829
import com.cloud.utils.db.SearchCriteria;
2930

3031
@Component
3132
@Local(value={UserDao.class})
33+
@DB
3234
public class UserDaoImpl extends GenericDaoBase<UserVO, Long> implements UserDao {
3335
protected SearchBuilder<UserVO> UsernamePasswordSearch;
3436
protected SearchBuilder<UserVO> UsernameSearch;

utils/src/com/cloud/utils/db/TransactionContextBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,14 @@ public Object invoke(MethodInvocation method) throws Throwable {
6363
private boolean needToIntercept(Method method) {
6464
DB db = method.getAnnotation(DB.class);
6565
if (db != null) {
66-
return db.txn();
66+
return true;
6767
}
6868

6969
Class<?> clazz = method.getDeclaringClass();
7070
do {
7171
db = clazz.getAnnotation(DB.class);
7272
if (db != null) {
73-
return db.txn();
73+
return true;
7474
}
7575
clazz = clazz.getSuperclass();
7676
} while (clazz != Object.class && clazz != null);

0 commit comments

Comments
 (0)