001
014
015 package com.liferay.portal.kernel.backgroundtask;
016
017 import com.liferay.portal.model.BackgroundTask;
018
019 import java.io.Serializable;
020
021 import java.util.Map;
022
023
026 public class ThreadLocalAwareBackgroundTaskExecutor
027 extends DelegatingBackgroundTaskExecutor {
028
029 public ThreadLocalAwareBackgroundTaskExecutor(
030 BackgroundTaskExecutor backgroundTaskExecutor,
031 BackgroundTaskThreadLocalManager backgroundTaskThreadLocalManager) {
032
033 super(backgroundTaskExecutor);
034
035 _backgroundTaskThreadLocalManager = backgroundTaskThreadLocalManager;
036 }
037
038 @Override
039 public BackgroundTaskResult execute(BackgroundTask backgroundTask)
040 throws Exception {
041
042 Map<String, Serializable> threadLocalValues =
043 _backgroundTaskThreadLocalManager.getThreadLocalValues();
044
045 try {
046 _backgroundTaskThreadLocalManager.deserializeThreadLocals(
047 backgroundTask.getTaskContextMap());
048
049 return super.execute(backgroundTask);
050 }
051 finally {
052 _backgroundTaskThreadLocalManager.setThreadLocalValues(
053 threadLocalValues);
054 }
055 }
056
057 private final BackgroundTaskThreadLocalManager
058 _backgroundTaskThreadLocalManager;
059
060 }