import com.google.common.collect.Lists;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.MoreExecutors;
import java.util.List;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
import org.opendaylight.controller.sal.core.api.model.SchemaService;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160409.ModulesState;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160409.module.list.module.submodules.SubmoduleBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.YangIdentifier;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
/**
* Listens for updates on global schema context, transforms context to ietf-yang-library:modules-state and
- * writes this state to operational data store
+ * writes this state to operational data store.
*/
// TODO Implement also yang-library-change notfication
public class SchemaServiceToMdsalWriter implements SchemaContextListener, AutoCloseable {
}
/**
- * Invoke by blueprint
+ * Invoked by blueprint.
*/
public void start() {
schemaService.registerSchemaContextListener(this);
}
@Override
- public void onFailure(final Throwable t) {
- LOG.warn("Failed to update modules state", t);
+ public void onFailure(final Throwable throwable) {
+ LOG.warn("Failed to update modules state", throwable);
}
- });
+ }, MoreExecutors.directExecutor());
}
private ModulesState createModuleStateFromModules(final Set<Module> modules) {
final ModulesStateBuilder modulesStateBuilder = new ModulesStateBuilder();
- final List<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160409.module.list.Module> moduleList =
+ final List<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160409.module.list
+ .Module> moduleList =
Lists.newArrayList();
for (final Module module : modules) {
moduleList.add(createModuleEntryFromModule(module));
}
- return modulesStateBuilder.setModule(moduleList).setModuleSetId(String.valueOf(moduleSetId.getAndIncrement())).build();
+ return modulesStateBuilder.setModule(moduleList).setModuleSetId(String.valueOf(moduleSetId.getAndIncrement()))
+ .build();
}
- private org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160409.module.list.Module createModuleEntryFromModule(final Module module) {
+ private org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160409.module.list.Module
+ createModuleEntryFromModule(final Module module) {
final ModuleBuilder moduleBuilder = new ModuleBuilder();
// TODO Conformance type is always set to Implement value, but it should it really be like this?
// TODO Add also deviations and features lists to module entries
moduleBuilder.setName(new YangIdentifier(module.getName()))
- .setRevision(new OptionalRevision(SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision())))
+ .setRevision(new OptionalRevision(module.getQNameModule().getFormattedRevision()))
.setNamespace(new Uri(module.getNamespace().toString()))
.setConformanceType(ConformanceType.Implement)
.setSubmodules(createSubmodulesForModule(module));
for (final Module subModule : module.getSubmodules()) {
final SubmoduleBuilder subModuleEntryBuilder = new SubmoduleBuilder();
subModuleEntryBuilder.setName(new YangIdentifier(subModule.getName()))
- .setRevision(new OptionalRevision(SimpleDateFormatUtil.getRevisionFormat().format(subModule.getRevision())));
+ .setRevision(new OptionalRevision(subModule.getQNameModule().getFormattedRevision()));
submodulesList.add(subModuleEntryBuilder.build());
}
- return new SubmodulesBuilder().setSubmodule(submodulesList).build();
+ return new SubmodulesBuilder().setSubmodule(submodulesList).build();
}
-}
\ No newline at end of file
+}