import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.RockTheHouseInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.Top;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.RockTheHouseInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.Top;
import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
import org.opendaylight.yangtools.yang.binding.util.BindingReflections;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
import org.opendaylight.yangtools.yang.binding.util.BindingReflections;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
public class SchemaUpdateForTransactionTest {
private static final YangInstanceIdentifier TOP_PATH = YangInstanceIdentifier.of(Top.QNAME);
public class SchemaUpdateForTransactionTest {
private static final YangInstanceIdentifier TOP_PATH = YangInstanceIdentifier.of(Top.QNAME);
- public void setupStore() {
- domStore = new InMemoryDOMDataStore("TEST", MoreExecutors.sameThreadExecutor());
+ public void setupStore() throws Exception {
+ this.domStore = new InMemoryDOMDataStore("TEST", MoreExecutors.newDirectExecutorService());
- public void loadSchemas(final Class<?>... classes) {
- YangModuleInfo moduleInfo;
- try {
- ModuleInfoBackedContext context = ModuleInfoBackedContext.create();
- for (Class<?> clz : classes) {
- moduleInfo = BindingReflections.getModuleInfo(clz);
+ public void loadSchemas(final Class<?>... classes) throws Exception {
+ final ModuleInfoBackedContext context = ModuleInfoBackedContext.create();
+ for (final Class<?> clz : classes) {
+ YangModuleInfo moduleInfo = BindingReflections.getModuleInfo(clz);
- context.registerModuleInfo(moduleInfo);
- }
- schemaContext = context.tryToCreateSchemaContext().get();
- domStore.onGlobalContextUpdated(schemaContext);
- } catch (Exception e) {
- Throwables.propagateIfPossible(e);
+ context.registerModuleInfo(moduleInfo);
* then triggering update of global schema context
* and then performing write (according to new module).
*
* then triggering update of global schema context
* and then performing write (according to new module).
*
* If transaction between allocation and schema context was
* unmodified, it is safe to change its schema context
* to new one (e.g. it will be same as if allocated after
* schema context update.)
* If transaction between allocation and schema context was
* unmodified, it is safe to change its schema context
* to new one (e.g. it will be same as if allocated after
* schema context update.)
assertNotNull(writeTx);
// we trigger schema context update to contain Lists model
loadSchemas(RockTheHouseInput.class, Top.class);
assertNotNull(writeTx);
// we trigger schema context update to contain Lists model
loadSchemas(RockTheHouseInput.class, Top.class);
* Writes /test in writeTx, this write should not fail
* with IllegalArgumentException since /test is in
* schema context.
* Writes /test in writeTx, this write should not fail
* with IllegalArgumentException since /test is in
* schema context.