diff --git a/src/main/java/org/olat/modules/webFeed/manager/FeedManager.java b/src/main/java/org/olat/modules/webFeed/manager/FeedManager.java index dc4423ea3e78dfcbacc05a6a6cf54f79cecd1f5f..1b5a05151ac2def9c55735d2b4e26a63d861a2d9 100644 --- a/src/main/java/org/olat/modules/webFeed/manager/FeedManager.java +++ b/src/main/java/org/olat/modules/webFeed/manager/FeedManager.java @@ -107,12 +107,22 @@ public abstract class FeedManager { public abstract boolean copy(OLATResource source, OLATResource target); /** - * Update the feed with the properties in the repository entry. + * Enrich the feed with the properties in the RepositoryEntry. * * @param feed * @param entry + * @return the same Feed object with actualized attributes */ public abstract Feed enrichFeedByRepositoryEntry(Feed feed, RepositoryEntry entry); + + /** + * Update the feed with the properties in the RepositoryEntry and save it + * in the database. + * + * @param entry + * @return a new updated Feed object + */ + public abstract Feed updateFeedWithRepositoryEntry(RepositoryEntry entry); /** * Create the given Item and saves the appropriate file (podcast, video etc.) diff --git a/src/main/java/org/olat/modules/webFeed/manager/FeedManagerImpl.java b/src/main/java/org/olat/modules/webFeed/manager/FeedManagerImpl.java index 68c79d25041a5b77198e38454a1bd279a6cb09ff..2f40d1f12be4a6ec15cef7b1bc3a7fca26018050 100644 --- a/src/main/java/org/olat/modules/webFeed/manager/FeedManagerImpl.java +++ b/src/main/java/org/olat/modules/webFeed/manager/FeedManagerImpl.java @@ -515,8 +515,19 @@ public class FeedManagerImpl extends FeedManager { } } + @Override + public Feed updateFeedWithRepositoryEntry(RepositoryEntry entry) { + Feed feed = loadFeed(entry.getOlatResource()); + feed = enrichFeedByRepositoryEntry(feed, entry); + feed = updateFeed(feed); + return feed; + } + @Override public Feed enrichFeedByRepositoryEntry(Feed feed, RepositoryEntry entry) { + if (feed == null) return null; + if (entry == null) return feed; + // copy the metadata feed.setTitle(entry.getDisplayname()); feed.setDescription(entry.getDescription()); diff --git a/src/main/java/org/olat/repository/handlers/BlogHandler.java b/src/main/java/org/olat/repository/handlers/BlogHandler.java index 69a2ddf7307d4936718a324aba56ce4b4a95d86c..da468173d2eb041d1120bfcf36c86c68266e76d1 100644 --- a/src/main/java/org/olat/repository/handlers/BlogHandler.java +++ b/src/main/java/org/olat/repository/handlers/BlogHandler.java @@ -242,10 +242,7 @@ public class BlogHandler implements RepositoryHandler { @Override public void onDescriptionChanged(RepositoryEntry entry) { - FeedManager feedManager = FeedManager.getInstance(); - Feed feed = feedManager.loadFeed(entry.getOlatResource()); - feed = feedManager.enrichFeedByRepositoryEntry(feed, entry); - feedManager.updateFeed(feed); + Feed feed = FeedManager.getInstance().updateFeedWithRepositoryEntry(entry); DBFactory.getInstance().commitAndCloseSession(); CoordinatorManager.getInstance().getCoordinator().getEventBus() diff --git a/src/main/java/org/olat/repository/handlers/PodcastHandler.java b/src/main/java/org/olat/repository/handlers/PodcastHandler.java index 508bfa493b3ce9c05743667c44a5c98ae50d5635..682d0f7e9171eb8383e82ec9506cfb0a82f90763 100644 --- a/src/main/java/org/olat/repository/handlers/PodcastHandler.java +++ b/src/main/java/org/olat/repository/handlers/PodcastHandler.java @@ -236,10 +236,7 @@ public class PodcastHandler implements RepositoryHandler { @Override public void onDescriptionChanged(RepositoryEntry entry) { - FeedManager feedManager = FeedManager.getInstance(); - Feed feed = feedManager.loadFeed(entry.getOlatResource()); - feed = feedManager.enrichFeedByRepositoryEntry(feed, entry); - feedManager.updateFeed(feed); + Feed feed = FeedManager.getInstance().updateFeedWithRepositoryEntry(entry); DBFactory.getInstance().commitAndCloseSession(); CoordinatorManager.getInstance().getCoordinator().getEventBus() diff --git a/src/test/java/org/olat/modules/webFeed/manager/FeedManagerImplTest.java b/src/test/java/org/olat/modules/webFeed/manager/FeedManagerImplTest.java index 561daa8f042828e32846422ee4ff272c78f12f4e..500f0b80bcf1ee820e56c56947c4c6c197668de6 100644 --- a/src/test/java/org/olat/modules/webFeed/manager/FeedManagerImplTest.java +++ b/src/test/java/org/olat/modules/webFeed/manager/FeedManagerImplTest.java @@ -79,7 +79,7 @@ public class FeedManagerImplTest { @Mock private Coordinator coordinaterMock; @Mock - private RepositoryManager repostoryManager; + private RepositoryManager repositoryManager; @Mock OLATResource resourceDummy; @Mock @@ -102,7 +102,7 @@ public class FeedManagerImplTest { ReflectionTestUtils.setField(sut, "itemDAO", itemDAOMock); ReflectionTestUtils.setField(sut, "feedFileStorage", feedFileStorageMock); ReflectionTestUtils.setField(sut, "externalFeedFetcher", feedFetcherMock); - ReflectionTestUtils.setField(sut, "repositoryManager", repostoryManager); + ReflectionTestUtils.setField(sut, "repositoryManager", repositoryManager); } @Test @@ -260,8 +260,9 @@ public class FeedManagerImplTest { verify(feedFileStorageMock, times(3)).deleteItemXML(itemDummy); } + @Test - public void enrichFeedFromrepositoryEntryShouldTransferAtributes() { + public void enrichFeedFromRepositoryEntryShouldTransferAtributes() { Feed feed = new FeedImpl(resourceDummy); RepositoryEntry entry = new RepositoryEntry(); String title = "Title"; @@ -277,4 +278,32 @@ public class FeedManagerImplTest { assertThat(enrichedFeed.getDescription()).isEqualTo(description); assertThat(enrichedFeed.getAuthor()).isEqualTo(authors); } + + + @Test + public void enrichFeedFromRepositoryEntryShouldReturnUnchangedFeedIfRepositoryIsNull() { + Feed feed = new FeedImpl(resourceDummy); + String title = "Title"; + feed.setTitle(title); + String description = "Description"; + feed.setDescription(description); + String authors = "Author"; + feed.setAuthor(authors); + + Feed enrichedFeed = sut.enrichFeedByRepositoryEntry(feed, null); + + assertThat(enrichedFeed).isEqualTo(feed); + assertThat(enrichedFeed.getTitle()).isEqualTo(title); + assertThat(enrichedFeed.getDescription()).isEqualTo(description); + assertThat(enrichedFeed.getAuthor()).isEqualTo(authors); + } + + @Test + public void enrichFeedFromRepositoryEntryShouldReturnNullIfFeedIsNull() { + RepositoryEntry entry = new RepositoryEntry(); + + Feed enrichedFeed = sut.enrichFeedByRepositoryEntry(null, entry); + + assertThat(enrichedFeed).isNull(); + } }