package org.opendaylight.ovsdb.southbound;
import java.net.URI;
-
import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException;
import org.opendaylight.yangtools.yang.data.util.AbstractModuleStringInstanceIdentifierCodec;
implements SchemaContextListener {
private static final Logger LOG = LoggerFactory.getLogger(InstanceIdentifierCodec.class);
- private static final Revision REVISION = Revision.of("2013-10-21");
private DataSchemaContextTree dataSchemaContextTree;
private SchemaContext context;
- private BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer;
+ private final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer;
public InstanceIdentifierCodec(DOMSchemaService schemaService,
BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer) {
@Override
protected Module moduleForPrefix(final String prefix) {
- return context.findModule(prefix, REVISION).orElse(null);
+ return context.findModules(prefix).stream().findFirst().orElse(null);
}
@Override
protected String prefixForNamespace(final URI namespace) {
- return context.findModule(namespace, REVISION).map(Module::getName).orElse(null);
+ return context.findModules(namespace).stream().map(Module::getName).findFirst().orElse(null);
}
@Override
package org.opendaylight.ovsdb.southbound;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.powermock.api.support.membermodification.MemberMatcher.field;
+import com.google.common.collect.ImmutableSet;
import java.net.URI;
import java.net.URISyntaxException;
-import java.util.Optional;
+import java.util.Collections;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.util.AbstractModuleStringInstanceIdentifierCodec;
import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
@Test
public void testModuleForPrefix() {
Module module = mock(Module.class);
- when(context.findModule(anyString(), any(Revision.class))).thenReturn(Optional.of(module));
- assertEquals("Error, did not return correct Module object", module, instanceIdCodec.moduleForPrefix(""));
+ when(context.findModules("")).thenReturn(ImmutableSet.of(module));
+ assertEquals("Found Module", module, instanceIdCodec.moduleForPrefix(""));
+
+ when(context.findModules("foo")).thenReturn(ImmutableSet.of(module, mock(Module.class)));
+ assertEquals("Found Module", module, instanceIdCodec.moduleForPrefix("foo"));
+
+ when(context.findModules("bar")).thenReturn(Collections.emptySet());
+ assertNull(instanceIdCodec.moduleForPrefix("bar"));
}
@Test
public void testPrefixForNamespace() throws URISyntaxException {
Module module = mock(Module.class);
- URI namespace = new URI("");
- when(context.findModule(any(URI.class), any(Revision.class))).thenReturn(Optional.empty()).thenReturn(
- Optional.of(module));
- when(module.getName()).thenReturn("");
- assertEquals("Error, null should have been returned", null, instanceIdCodec.prefixForNamespace(namespace));
- assertEquals("Error, did not return the correct module name", anyString(),
- instanceIdCodec.prefixForNamespace(namespace));
+ final String prefix = "prefix";
+ when(module.getName()).thenReturn(prefix);
+
+ URI namespace = new URI("foo");
+ when(context.findModules(namespace)).thenReturn(Collections.emptySet());
+ assertNull(instanceIdCodec.prefixForNamespace(namespace));
+
+ when(context.findModules(namespace)).thenReturn(ImmutableSet.of(module));
+ assertEquals("Found prefix", prefix, instanceIdCodec.prefixForNamespace(namespace));
+
+ when(context.findModules(namespace)).thenReturn(ImmutableSet.of(module, mock(Module.class)));
+ assertEquals("Found prefix", prefix, instanceIdCodec.prefixForNamespace(namespace));
}
@Test
YangInstanceIdentifier yiid = mock(YangInstanceIdentifier.class);
when(bindingNormalizedNodeSerializer.toYangInstanceIdentifier(iid)).thenReturn(yiid);
- when((PowerMockito.mock(AbstractModuleStringInstanceIdentifierCodec.class)).serialize(yiid))
+ when(PowerMockito.mock(AbstractModuleStringInstanceIdentifierCodec.class).serialize(yiid))
.thenReturn("Serialized IID");
assertEquals("Error, did not return correct string", anyString(), instanceIdCodec.serialize(iid));
}
@Test
public void testBindingDeserializer() throws Exception {
YangInstanceIdentifier yiid = mock(YangInstanceIdentifier.class);
- when((PowerMockito.mock(AbstractModuleStringInstanceIdentifierCodec.class)).deserialize(anyString()))
+ when(PowerMockito.mock(AbstractModuleStringInstanceIdentifierCodec.class).deserialize(anyString()))
.thenReturn(yiid);
mock(InstanceIdentifier.class);