Skip to content

Commit 76e7821

Browse files
committed
Fixed starting the update metadata process not being async [#2503]
1 parent 5a34dde commit 76e7821

File tree

4 files changed

+19
-6
lines changed

4 files changed

+19
-6
lines changed

comixed-rest/src/main/java/org/comixedproject/rest/library/LibraryController.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@
3737
import org.comixedproject.model.net.library.PurgeLibraryRequest;
3838
import org.comixedproject.model.net.library.RemoteLibraryState;
3939
import org.comixedproject.service.admin.ConfigurationService;
40-
import org.comixedproject.service.comicbooks.*;
40+
import org.comixedproject.service.comicbooks.ComicBookException;
41+
import org.comixedproject.service.comicbooks.ComicBookSelectionException;
42+
import org.comixedproject.service.comicbooks.ComicBookService;
43+
import org.comixedproject.service.comicbooks.ComicSelectionService;
4144
import org.comixedproject.service.library.LibraryException;
4245
import org.comixedproject.service.library.LibraryService;
4346
import org.comixedproject.service.library.RemoteLibraryStateService;
@@ -302,7 +305,7 @@ public void updateSelectedComicBooksMetadata(final HttpSession session, final Pr
302305
final List<Long> selectedComicBookIds =
303306
this.comicSelectionService.decodeSelections(session.getAttribute(LIBRARY_SELECTIONS));
304307
log.info("Updating the metadata for {} comic(s): email={}", selectedComicBookIds.size(), email);
305-
this.libraryService.updateMetadata(selectedComicBookIds);
308+
this.libraryService.updateMetadata(new ArrayList<>(selectedComicBookIds));
306309
this.comicSelectionService.clearSelectedComicBooks(email, selectedComicBookIds);
307310
session.setAttribute(
308311
LIBRARY_SELECTIONS, this.comicSelectionService.encodeSelections(selectedComicBookIds));

comixed-rest/src/test/java/org/comixedproject/rest/library/LibraryControllerTest.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,13 @@
3333
import org.comixedproject.model.net.admin.ClearImageCacheResponse;
3434
import org.comixedproject.model.net.comicbooks.ConvertComicsRequest;
3535
import org.comixedproject.model.net.comicbooks.EditMultipleComicsRequest;
36-
import org.comixedproject.model.net.library.*;
36+
import org.comixedproject.model.net.library.PurgeLibraryRequest;
37+
import org.comixedproject.model.net.library.RemoteLibraryState;
3738
import org.comixedproject.service.admin.ConfigurationService;
38-
import org.comixedproject.service.comicbooks.*;
39+
import org.comixedproject.service.comicbooks.ComicBookException;
40+
import org.comixedproject.service.comicbooks.ComicBookSelectionException;
41+
import org.comixedproject.service.comicbooks.ComicBookService;
42+
import org.comixedproject.service.comicbooks.ComicSelectionService;
3943
import org.comixedproject.service.library.LibraryException;
4044
import org.comixedproject.service.library.LibraryService;
4145
import org.comixedproject.service.library.RemoteLibraryStateService;
@@ -80,14 +84,15 @@ class LibraryControllerTest {
8084
@Mock private JobExecution jobExecution;
8185
@Mock private EditMultipleComicsRequest editMultipleComicsRequest;
8286
@Mock private RemoteLibraryState remoteLibraryState;
83-
@Mock private List selectedIds;
8487
@Mock private HttpSession httpSession;
8588
@Mock private Principal principal;
8689

8790
@Mock
8891
@Qualifier(EDIT_COMIC_METADATA_JOB)
8992
private Job editComicMetadataJob;
9093

94+
private List<Long> selectedIds = new ArrayList<>();
95+
9196
@Captor private ArgumentCaptor<JobParameters> jobParametersArgumentCaptor;
9297

9398
@BeforeEach
@@ -97,6 +102,7 @@ void setUp() throws ComicBookSelectionException {
97102
Mockito.when(comicSelectionService.decodeSelections(TEST_ENCODED_IDS)).thenReturn(selectedIds);
98103
Mockito.when(comicSelectionService.encodeSelections(Mockito.anyList()))
99104
.thenReturn(TEST_REENCODED_IDS);
105+
selectedIds.add(TEST_COMIC_BOOK_ID);
100106
}
101107

102108
@Test

comixed-services/src/main/java/org/comixedproject/service/comicbooks/ComicSelectionService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.comixedproject.service.user.ComiXedUserException;
4242
import org.comixedproject.service.user.UserService;
4343
import org.springframework.beans.factory.annotation.Autowired;
44+
import org.springframework.scheduling.annotation.Async;
4445
import org.springframework.stereotype.Service;
4546

4647
/**
@@ -203,7 +204,8 @@ public void publishSelections(final String email, final List<Long> selections) {
203204
this.doPublishSelectionUpdateForUser(email, selections);
204205
}
205206

206-
private void doPublishSelectionUpdateForUser(final String email, final List<Long> selections) {
207+
@Async
208+
protected void doPublishSelectionUpdateForUser(final String email, final List<Long> selections) {
207209
try {
208210
final ComiXedUser user = this.userService.findByEmail(email);
209211
this.publishComicBookSelectionStateAction.publish(

comixed-services/src/main/java/org/comixedproject/service/library/LibraryService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.comixedproject.state.comicbooks.ComicStateHandler;
3131
import org.springframework.beans.factory.annotation.Autowired;
3232
import org.springframework.context.ApplicationEventPublisher;
33+
import org.springframework.scheduling.annotation.Async;
3334
import org.springframework.stereotype.Service;
3435
import org.springframework.transaction.annotation.Transactional;
3536

@@ -68,6 +69,7 @@ public void clearImageCache() throws LibraryException {
6869
* @param ids the comics
6970
*/
7071
@Transactional
72+
@Async
7173
public void updateMetadata(final List<Long> ids) {
7274
log.debug("Preparing {} comic book(s) for metadata update", ids.size());
7375
this.comicBookService.prepareForMetadataUpdate(ids);

0 commit comments

Comments
 (0)