diff --git a/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/main/java/org/xwiki/whatsnew/NewsSourceFactory.java b/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/main/java/org/xwiki/whatsnew/NewsSourceFactory.java index bb3f599422c129dbbea6eede455ac6b93a9d0a55..79bab89b038f0228e157f68115f9d6565fc23a8b 100644 --- a/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/main/java/org/xwiki/whatsnew/NewsSourceFactory.java +++ b/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/main/java/org/xwiki/whatsnew/NewsSourceFactory.java @@ -19,8 +19,6 @@ */ package org.xwiki.whatsnew; -import java.util.Map; - import org.xwiki.component.annotation.Role; import org.xwiki.stability.Unstable; @@ -42,10 +40,10 @@ public interface NewsSourceFactory { /** - * @param parameters the source-dependent list of parameters to configure the source + * @param descriptor the definition of a news source to be instantiated * @return the News source instance * @throws NewsException when there's a problem creating the news source (e.g. not specific RSS URL for XWiki Blog * source type) */ - NewsSource create(Map<String, String> parameters) throws NewsException; + NewsSource create(NewsSourceDescriptor descriptor) throws NewsException; } diff --git a/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/main/java/org/xwiki/whatsnew/internal/configured/ConfiguredNewsSourceFactory.java b/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/main/java/org/xwiki/whatsnew/internal/configured/ConfiguredNewsSourceFactory.java index 916667313c961c9d43dab2b489e5dea97764d640..3f22efdaf54ca24b2369d50d0c49523db854a38c 100644 --- a/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/main/java/org/xwiki/whatsnew/internal/configured/ConfiguredNewsSourceFactory.java +++ b/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/main/java/org/xwiki/whatsnew/internal/configured/ConfiguredNewsSourceFactory.java @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; import javax.inject.Inject; import javax.inject.Named; @@ -56,8 +55,8 @@ public class ConfiguredNewsSourceFactory implements NewsSourceFactory, Initializ private ComponentManager componentManager; /** - * Cached news source so that calling several times {@link #create(Map)} will be performant and return the same - * News source. + * Cached news source so that calling several times {@link #create(NewsSourceDescriptor)} will be performant and + * return the same News source. */ private NewsSource source; @@ -73,7 +72,7 @@ public void initialize() throws InitializationException } @Override - public NewsSource create(Map<String, String> parameters) + public NewsSource create(NewsSourceDescriptor descriptor) { return this.source; } @@ -84,7 +83,7 @@ private NewsSource create() throws NewsException for (NewsSourceDescriptor descriptor : this.configuration.getNewsSourceDescriptors()) { NewsSourceFactory factory = getFactory(descriptor.getSourceTypeHint()); if (factory != null) { - sources.add(factory.create(descriptor.getParameters())); + sources.add(factory.create(descriptor)); } } return new CompositeNewsSource(sources); diff --git a/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/main/java/org/xwiki/whatsnew/internal/xwikiblog/XWikiBlogNewsSourceFactory.java b/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/main/java/org/xwiki/whatsnew/internal/xwikiblog/XWikiBlogNewsSourceFactory.java index da642461a2b263a6c19214775e391fb2dd7bc3fe..219033328d5e44d44c511947651eb5a78c5822a5 100644 --- a/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/main/java/org/xwiki/whatsnew/internal/xwikiblog/XWikiBlogNewsSourceFactory.java +++ b/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/main/java/org/xwiki/whatsnew/internal/xwikiblog/XWikiBlogNewsSourceFactory.java @@ -19,14 +19,13 @@ */ package org.xwiki.whatsnew.internal.xwikiblog; -import java.util.Map; - import javax.inject.Named; import javax.inject.Singleton; import org.xwiki.component.annotation.Component; import org.xwiki.whatsnew.NewsException; import org.xwiki.whatsnew.NewsSource; +import org.xwiki.whatsnew.NewsSourceDescriptor; import org.xwiki.whatsnew.NewsSourceFactory; /** @@ -41,9 +40,9 @@ public class XWikiBlogNewsSourceFactory implements NewsSourceFactory { @Override - public NewsSource create(Map<String, String> parameters) throws NewsException + public NewsSource create(NewsSourceDescriptor descriptor) throws NewsException { - String rssURL = parameters.get("rssURL"); + String rssURL = descriptor.getParameters().get("rssURL"); if (rssURL == null) { throw new NewsException("Failed to create a XWiki Blog news source. A 'rssURL' parameter must be passed"); } diff --git a/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/test/java/org/xwiki/whatsnew/internal/configured/ConfiguredNewsSourceFactoryTest.java b/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/test/java/org/xwiki/whatsnew/internal/configured/ConfiguredNewsSourceFactoryTest.java index f70dd17c2ac8c1870ffb57f9989abd0260ef117e..07a7b85d248df652a6cbdbb514620b6eaa34d606 100644 --- a/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/test/java/org/xwiki/whatsnew/internal/configured/ConfiguredNewsSourceFactoryTest.java +++ b/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/test/java/org/xwiki/whatsnew/internal/configured/ConfiguredNewsSourceFactoryTest.java @@ -19,8 +19,6 @@ */ package org.xwiki.whatsnew.internal.configured; -import java.util.Collections; - import org.junit.jupiter.api.Test; import org.xwiki.test.junit5.mockito.ComponentTest; import org.xwiki.test.junit5.mockito.InjectMockComponents; @@ -37,7 +35,7 @@ class ConfiguredNewsSourceFactoryTest @Test void createWhenEmptyConfiguration() { - NewsSource source = this.factory.create(Collections.emptyMap()); + NewsSource source = this.factory.create(null); assertNotNull(source); } diff --git a/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/test/java/org/xwiki/whatsnew/internal/xwikiblog/XWikiBlogNewsSourceFactoryTest.java b/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/test/java/org/xwiki/whatsnew/internal/xwikiblog/XWikiBlogNewsSourceFactoryTest.java index ae0247cd21f4ebb520d1e3285263d87c4bf783fc..03b6f291732bad828d88ffdf376a3636dfd23f1b 100644 --- a/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/test/java/org/xwiki/whatsnew/internal/xwikiblog/XWikiBlogNewsSourceFactoryTest.java +++ b/xwiki-platform-core/xwiki-platform-whatsnew/xwiki-platform-whatsnew-api/src/test/java/org/xwiki/whatsnew/internal/xwikiblog/XWikiBlogNewsSourceFactoryTest.java @@ -26,6 +26,7 @@ import org.xwiki.test.junit5.mockito.InjectMockComponents; import org.xwiki.whatsnew.NewsException; import org.xwiki.whatsnew.NewsSource; +import org.xwiki.whatsnew.NewsSourceDescriptor; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -46,14 +47,16 @@ class XWikiBlogNewsSourceFactoryTest @Test void create() throws Exception { - NewsSource source = this.factory.create(Collections.singletonMap("rssURL", "some url")); + NewsSource source = + this.factory.create(new NewsSourceDescriptor("id", "hint", Collections.singletonMap("rssURL", "some url"))); assertNotNull(source); } @Test void createWhenNoRSSURLParameter() { - Throwable exception = assertThrows(NewsException.class, () -> this.factory.create(Collections.emptyMap())); + Throwable exception = assertThrows(NewsException.class, () -> this.factory.create(new NewsSourceDescriptor( + "id", "hint", Collections.emptyMap()))); assertEquals("Failed to create a XWiki Blog news source. A 'rssURL' parameter must be passed", exception.getMessage()); }