diff --git a/modules/external-api/src/main/java/org/opencastproject/external/endpoint/EventsEndpoint.java b/modules/external-api/src/main/java/org/opencastproject/external/endpoint/EventsEndpoint.java index 137cd8315b8d21e7c0a11898a456a86cbcff323f..b5e89c830df1600885f184fe8db839fb8029d9a4 100644 --- a/modules/external-api/src/main/java/org/opencastproject/external/endpoint/EventsEndpoint.java +++ b/modules/external-api/src/main/java/org/opencastproject/external/endpoint/EventsEndpoint.java @@ -54,7 +54,6 @@ import org.opencastproject.external.util.AclUtils; import org.opencastproject.external.util.ExternalMetadataUtils; import org.opencastproject.index.service.api.IndexService; import org.opencastproject.index.service.catalog.adapter.DublinCoreMetadataUtil; -import org.opencastproject.index.service.catalog.adapter.events.CommonEventCatalogUIAdapter; import org.opencastproject.index.service.exception.IndexServiceException; import org.opencastproject.index.service.impl.util.EventHttpServletRequest; import org.opencastproject.index.service.impl.util.EventUtils; @@ -218,7 +217,6 @@ public class EventsEndpoint implements ManagedService { private IndexService indexService; private IngestService ingestService; private SecurityService securityService; - private CommonEventCatalogUIAdapter eventCatalogUIAdapter; private final List<EventCatalogUIAdapter> catalogUIAdapters = new ArrayList<>(); private UrlSigningService urlSigningService; private SchedulerService schedulerService; @@ -261,11 +259,6 @@ public class EventsEndpoint implements ManagedService { this.schedulerService = schedulerService; } - /** OSGi DI. */ - public void setCommonEventCatalogUIAdapter(CommonEventCatalogUIAdapter eventCatalogUIAdapter) { - this.eventCatalogUIAdapter = eventCatalogUIAdapter; - } - /** OSGi DI. */ public void addCatalogUIAdapter(EventCatalogUIAdapter catalogUIAdapter) { catalogUIAdapters.add(catalogUIAdapter); @@ -1309,7 +1302,8 @@ public class EventsEndpoint implements ManagedService { protected Opt<MetadataList> getEventMetadata(Event event) throws IndexServiceException, Exception { MetadataList metadataList = new MetadataList(); List<EventCatalogUIAdapter> catalogUIAdapters = getEventCatalogUIAdapters(); - catalogUIAdapters.remove(this.eventCatalogUIAdapter); + EventCatalogUIAdapter eventCatalogUIAdapter = indexService.getCommonEventCatalogUIAdapter(); + catalogUIAdapters.remove(eventCatalogUIAdapter); MediaPackage mediaPackage = indexService.getEventMediapackage(event); if (catalogUIAdapters.size() > 0) { for (EventCatalogUIAdapter catalogUIAdapter : catalogUIAdapters) { @@ -1346,6 +1340,7 @@ public class EventsEndpoint implements ManagedService { String.format("Unable to parse type '%s' as a flavor so unable to find the matching catalog.", type)); } // Try the main catalog first as we load it from the index. + EventCatalogUIAdapter eventCatalogUIAdapter = indexService.getCommonEventCatalogUIAdapter(); if (flavor.get().equals(eventCatalogUIAdapter.getFlavor())) { DublinCoreMetadataCollection collection = EventUtils.getEventMetadata(event, eventCatalogUIAdapter); ExternalMetadataUtils.changeSubjectToSubjects(collection); @@ -1412,6 +1407,7 @@ public class EventsEndpoint implements ManagedService { for (final Event event : indexService.getEvent(id, elasticsearchIndex)) { MetadataList metadataList = new MetadataList(); // Try the main catalog first as we load it from the index. + EventCatalogUIAdapter eventCatalogUIAdapter = indexService.getCommonEventCatalogUIAdapter(); if (flavor.get().equals(eventCatalogUIAdapter.getFlavor())) { collection = EventUtils.getEventMetadata(event, eventCatalogUIAdapter); adapter = eventCatalogUIAdapter; @@ -1541,6 +1537,7 @@ public class EventsEndpoint implements ManagedService { return R.badRequest( String.format("Unable to parse type '%s' as a flavor so unable to find the matching catalog.", type)); } + EventCatalogUIAdapter eventCatalogUIAdapter = indexService.getCommonEventCatalogUIAdapter(); if (flavor.get().equals(eventCatalogUIAdapter.getFlavor())) { return Response .status(Status.FORBIDDEN).entity(String diff --git a/modules/external-api/src/main/resources/OSGI-INF/external-events-endpoint.xml b/modules/external-api/src/main/resources/OSGI-INF/external-events-endpoint.xml index 787c16b38c8c8aa2bf62123ef028fd29a3007efe..31ee98e9e31ed47d720c154bde8fc9403ee2157a 100644 --- a/modules/external-api/src/main/resources/OSGI-INF/external-events-endpoint.xml +++ b/modules/external-api/src/main/resources/OSGI-INF/external-events-endpoint.xml @@ -11,11 +11,6 @@ <provide interface="org.opencastproject.external.endpoint.EventsEndpoint"/> <provide interface="org.osgi.service.cm.ManagedService"/> </service> - <reference name="CommonEventCatalogUIAdapter" - interface="org.opencastproject.index.service.catalog.adapter.events.CommonEventCatalogUIAdapter" - cardinality="1..1" - policy="static" - bind="setCommonEventCatalogUIAdapter"/> <reference name="EventCatalogUIAdapter" interface="org.opencastproject.metadata.dublincore.EventCatalogUIAdapter" cardinality="0..n" diff --git a/modules/external-api/src/test/java/org/opencastproject/external/endpoint/TestEventsEndpoint.java b/modules/external-api/src/test/java/org/opencastproject/external/endpoint/TestEventsEndpoint.java index f5854dde2bda39ce239da38dd2832377df172c15..dec47a5a4b8e148367c01e271584525f1bd4905a 100644 --- a/modules/external-api/src/test/java/org/opencastproject/external/endpoint/TestEventsEndpoint.java +++ b/modules/external-api/src/test/java/org/opencastproject/external/endpoint/TestEventsEndpoint.java @@ -38,7 +38,6 @@ import org.opencastproject.mediapackage.MediaPackage; import org.opencastproject.mediapackage.MediaPackageElementFlavor; import org.opencastproject.mediapackage.Publication; import org.opencastproject.mediapackage.PublicationImpl; -import org.opencastproject.metadata.dublincore.DublinCoreMetadataCollection; import org.opencastproject.metadata.dublincore.EventCatalogUIAdapter; import org.opencastproject.metadata.dublincore.MetadataList; import org.opencastproject.scheduler.api.SchedulerService; @@ -56,7 +55,6 @@ import com.entwinemedia.fn.data.Opt; import org.easymock.Capture; import org.easymock.EasyMock; -import org.osgi.service.cm.ConfigurationException; import java.net.URI; import java.time.Instant; @@ -107,35 +105,37 @@ public class TestEventsEndpoint extends EventsEndpoint { setSecurityService(securityService); } - private void setupEventCatalogUIAdapters() throws ConfigurationException { - // Setup common event catalog + public TestEventsEndpoint() throws Exception { + this.endpointBaseUrl = "https://api.opencast.org"; + + ElasticsearchIndex elasticsearchIndex = new ElasticsearchIndex(); + + IndexService indexService = EasyMock.createMock(IndexService.class); + EasyMock.expect(indexService.getEvent(MISSING_ID, elasticsearchIndex)).andReturn(Opt.<Event> none()).anyTimes(); + + SchedulerService schedulerService = EasyMock.createMock(SchedulerService.class); + + /** + * Setup CommonEventCatalog + */ CommonEventCatalogUIAdapter commonEventCatalogUIAdapter = new CommonEventCatalogUIAdapter(); Properties episodeCatalogProperties = getCatalogProperties(getClass(), "/episode-catalog.properties"); commonEventCatalogUIAdapter.updated(PropertiesUtil.toDictionary(episodeCatalogProperties)); - this.setCommonEventCatalogUIAdapter(commonEventCatalogUIAdapter); addCatalogUIAdapter(commonEventCatalogUIAdapter); + EasyMock.expect(indexService.getCommonEventCatalogUIAdapter()) + .andReturn(commonEventCatalogUIAdapter).anyTimes(); - // Setup catalog to be deleted. + /** + * Setup catalog to be deleted. + */ EventCatalogUIAdapter deleteAdapter = EasyMock.createMock(EventCatalogUIAdapter.class); EasyMock.expect(deleteAdapter.getFlavor()).andReturn(new MediaPackageElementFlavor(DELETE_CATALOG_TYPE, "episode")) - .anyTimes(); - DublinCoreMetadataCollection collectionMock = EasyMock.createNiceMock(DublinCoreMetadataCollection.class); + .anyTimes(); EasyMock.expect(deleteAdapter.getOrganization()).andReturn(defaultOrg.getId()).anyTimes(); EasyMock.expect(deleteAdapter.getFields(EasyMock.anyObject(MediaPackage.class))).andReturn(null).anyTimes(); EasyMock.expect(deleteAdapter.getUITitle()).andReturn(null).anyTimes(); EasyMock.replay(deleteAdapter); addCatalogUIAdapter(deleteAdapter); - } - - public TestEventsEndpoint() throws Exception { - this.endpointBaseUrl = "https://api.opencast.org"; - - ElasticsearchIndex elasticsearchIndex = new ElasticsearchIndex(); - - IndexService indexService = EasyMock.createMock(IndexService.class); - EasyMock.expect(indexService.getEvent(MISSING_ID, elasticsearchIndex)).andReturn(Opt.<Event> none()).anyTimes(); - - SchedulerService schedulerService = EasyMock.createMock(SchedulerService.class); /** * Delete Metadata external service mocking @@ -276,7 +276,6 @@ public class TestEventsEndpoint extends EventsEndpoint { setIndexService(indexService); setSchedulerService(schedulerService); setupSecurityService(); - setupEventCatalogUIAdapters(); Properties properties = new Properties(); properties.load(getClass().getResourceAsStream("/events-endpoint.properties")); updated((Hashtable) properties); diff --git a/modules/index-service/src/main/java/org/opencastproject/index/service/catalog/adapter/CatalogUIAdapterFactory.java b/modules/index-service/src/main/java/org/opencastproject/index/service/catalog/adapter/CatalogUIAdapterFactory.java index c4b1c05cdde883fd86e95f763a1681c2f14156fa..05acad4cfd0165372d1356f1b494f89c74269722 100644 --- a/modules/index-service/src/main/java/org/opencastproject/index/service/catalog/adapter/CatalogUIAdapterFactory.java +++ b/modules/index-service/src/main/java/org/opencastproject/index/service/catalog/adapter/CatalogUIAdapterFactory.java @@ -124,10 +124,6 @@ public class CatalogUIAdapterFactory implements ManagedServiceFactory { ConfigurableEventDCCatalogUIAdapter adapter; String[] adapterClassesNames; if (isCommonMetadata) { - if (bundleContext.getServiceReference(CommonEventCatalogUIAdapter.class.getName()) != null) - throw new ConfigurationException(CONF_COMMON_METADATA_KEY, format( - "Only one common metadata catalog adapter is allowed for the type '%s'", CATALOG_TYPE_EVENTS)); - adapter = new CommonEventCatalogUIAdapter(); adapterClassesNames = new String[] { CommonEventCatalogUIAdapter.class.getName(), EventCatalogUIAdapter.class.getName() }; @@ -156,10 +152,6 @@ public class CatalogUIAdapterFactory implements ManagedServiceFactory { ConfigurableSeriesDCCatalogUIAdapter adapter; String[] adapterClassesNames; if (isCommonMetadata) { - if (bundleContext.getServiceReference(CommonSeriesCatalogUIAdapter.class.getName()) != null) - throw new ConfigurationException(CONF_COMMON_METADATA_KEY, format( - "Only one common metadata catalog adapter is allowed for the type '%s'", CATALOG_TYPE_SERIES)); - adapter = new CommonSeriesCatalogUIAdapter(); adapterClassesNames = new String[] { CommonSeriesCatalogUIAdapter.class.getName(), SeriesCatalogUIAdapter.class.getName() }; diff --git a/modules/index-service/src/main/java/org/opencastproject/index/service/impl/IndexServiceImpl.java b/modules/index-service/src/main/java/org/opencastproject/index/service/impl/IndexServiceImpl.java index 163c5eb5eaae6c16df938c8cf2574d03e26038d6..1b3e452c0110fdbef2e5c0719f36a93cac564a2e 100644 --- a/modules/index-service/src/main/java/org/opencastproject/index/service/impl/IndexServiceImpl.java +++ b/modules/index-service/src/main/java/org/opencastproject/index/service/impl/IndexServiceImpl.java @@ -420,7 +420,7 @@ public class IndexServiceImpl implements IndexService { if (orgEventCatalogUIAdapter.isPresent()) { return orgEventCatalogUIAdapter.get(); - } else if (organization != DEFAULT_ORGANIZATION_ID) { + } else if (!organization.equals(DEFAULT_ORGANIZATION_ID)) { return getCommonEventCatalogUIAdapter(DEFAULT_ORGANIZATION_ID); } else { throw new IllegalStateException("Common event metadata for " + DEFAULT_ORGANIZATION_ID + " needs to be " @@ -436,7 +436,7 @@ public class IndexServiceImpl implements IndexService { if (orgSeriesCatalogUIAdapter.isPresent()) { return orgSeriesCatalogUIAdapter.get(); - } else if (organization != DEFAULT_ORGANIZATION_ID) { + } else if (!organization.equals(DEFAULT_ORGANIZATION_ID)) { return getCommonSeriesCatalogUIAdapter(DEFAULT_ORGANIZATION_ID); } else { throw new IllegalStateException("Common series metadata for " + DEFAULT_ORGANIZATION_ID + " needs to be "