Skip to content

Commit 9fdb780

Browse files
committed
Dirty hack #2
Allow the listProvidersService to be optional, which resolves the cycle that ElasticsearchIndex relies on ListProvidersService, which relies on ResourceProviders, which can depend on the ElasticsearchIndex.
1 parent ed23555 commit 9fdb780

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

modules/elasticsearch-index/src/main/java/org/opencastproject/elasticsearch/index/ElasticsearchIndex.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@
5757
import org.osgi.service.component.annotations.Deactivate;
5858
import org.osgi.service.component.annotations.Modified;
5959
import org.osgi.service.component.annotations.Reference;
60+
import org.osgi.service.component.annotations.ReferenceCardinality;
61+
import org.osgi.service.component.annotations.ReferencePolicy;
62+
import org.osgi.service.component.annotations.ReferencePolicyOption;
6063
import org.slf4j.Logger;
6164
import org.slf4j.LoggerFactory;
6265

@@ -123,11 +126,19 @@ public class ElasticsearchIndex extends AbstractElasticsearchIndex {
123126

124127
private boolean episodeIdRole = false;
125128

126-
@Reference
129+
@Reference(
130+
cardinality = ReferenceCardinality.OPTIONAL,
131+
policy = ReferencePolicy.DYNAMIC,
132+
policyOption = ReferencePolicyOption.GREEDY
133+
)
127134
public void setListProvidersService(ListProvidersService listProvidersService) {
128135
this.listProvidersService = listProvidersService;
129136
}
130137

138+
public void unsetListProvidersService(ListProvidersService listProvidersService) {
139+
this.listProvidersService = null;
140+
}
141+
131142
/**
132143
* OSGi callback to activate this component instance.
133144
*

modules/list-providers-service/src/main/java/org/opencastproject/list/impl/ListProvidersServiceImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.osgi.service.component.annotations.Reference;
3333
import org.osgi.service.component.annotations.ReferenceCardinality;
3434
import org.osgi.service.component.annotations.ReferencePolicy;
35+
import org.osgi.service.component.annotations.ReferencePolicyOption;
3536
import org.slf4j.Logger;
3637
import org.slf4j.LoggerFactory;
3738

@@ -105,6 +106,7 @@ public void setSecurityService(SecurityService securityService) {
105106
@Reference(
106107
cardinality = ReferenceCardinality.MULTIPLE,
107108
policy = ReferencePolicy.DYNAMIC,
109+
policyOption = ReferencePolicyOption.GREEDY,
108110
unbind = "removeProvider"
109111
)
110112
public void addProvider(ResourceListProvider provider) {

0 commit comments

Comments
 (0)