import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.atomic.AtomicInteger;
-import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.ModuleLike;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
// should live in MD-SAL and be a dynamic store fragment. As a first step we should be turning this into a
// completely standalone application.
@Singleton
-public class SchemaContextHandler implements EffectiveModelContextListener, AutoCloseable {
+@Component(service = { })
+public final class SchemaContextHandler implements EffectiveModelContextListener, AutoCloseable {
private static final Logger LOG = LoggerFactory.getLogger(SchemaContextHandler.class);
@VisibleForTesting
private static final NodeIdentifier MODULE_SCHEMA_NODEID =
NodeIdentifier.create(QName.create(IetfYangLibrary.MODULE_QNAME, "schema").intern());
- private final AtomicInteger moduleSetId = new AtomicInteger(0);
-
+ private final AtomicInteger moduleSetId = new AtomicInteger();
private final DOMDataBroker domDataBroker;
- private final DOMSchemaService domSchemaService;
- private Registration listenerRegistration;
+ private final Registration listenerRegistration;
private volatile EffectiveModelContext schemaContext;
@Inject
- public SchemaContextHandler(final DOMDataBroker domDataBroker, final DOMSchemaService domSchemaService) {
+ @Activate
+ public SchemaContextHandler(@Reference final DOMDataBroker domDataBroker,
+ @Reference final DOMSchemaService domSchemaService) {
this.domDataBroker = requireNonNull(domDataBroker);
- this.domSchemaService = requireNonNull(domSchemaService);
- }
-
- @PostConstruct
- public void init() {
listenerRegistration = domSchemaService.registerSchemaContextListener(this);
}
- @Override
@PreDestroy
+ @Deactivate
+ @Override
public void close() {
- if (listenerRegistration != null) {
- listenerRegistration.close();
- }
+ listenerRegistration.close();
}
@Override
<argument ref="scheduledThreadPool"/>
<argument ref="configuration"/>
</bean>
- <bean id="schemaContextHandler" class="org.opendaylight.restconf.nb.rfc8040.handlers.SchemaContextHandler" init-method="init" destroy-method="close">
- <argument ref="dOMDataBroker"/>
- <argument ref="dOMSchemaService"/>
- </bean>
<bean id="webInitializer" class="org.opendaylight.restconf.nb.rfc8040.web.WebInitializer" destroy-method="close">
<argument ref="webServer"/>
<argument ref="webContextSecurer"/>
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
@Mock
private DOMSchemaService mockDOMSchemaService;
+ @Mock
+ private ListenerRegistration<?> mockListenerReg;
@BeforeClass
public static void beforeClass() throws FileNotFoundException {
doReturn(wTx).when(dataBroker).newWriteOnlyTransaction();
doReturn(CommitInfo.emptyFluentFuture()).when(wTx).commit();
+ doReturn(mockListenerReg).when(mockDOMSchemaService).registerSchemaContextListener(any());
+
schemaContextHandler = new SchemaContextHandler(dataBroker, mockDOMSchemaService);
+ verify(mockDOMSchemaService).registerSchemaContextListener(schemaContextHandler);
schemaContextHandler.onModelContextUpdated(SCHEMA_CONTEXT);
}
*/
@Test
public void testInitAndClose() {
- ListenerRegistration<?> mockListenerReg = mock(ListenerRegistration.class);
- doReturn(mockListenerReg).when(mockDOMSchemaService)
- .registerSchemaContextListener(schemaContextHandler);
-
- schemaContextHandler.init();
-
- verify(mockDOMSchemaService).registerSchemaContextListener(schemaContextHandler);
-
schemaContextHandler.close();
-
verify(mockListenerReg).close();
}