import static java.util.Objects.requireNonNull;
import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.yangtools.yang.common.XMLNamespace;
import org.opendaylight.yangtools.yang.data.util.AbstractModuleStringInstanceIdentifierCodec;
import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
import org.opendaylight.yangtools.yang.model.api.Module;
public final class StringModuleInstanceIdentifierCodec extends AbstractModuleStringInstanceIdentifierCodec {
-
- private final DataSchemaContextTree dataContextTree;
+ private final @NonNull DataSchemaContextTree dataContextTree;
+ private final @Nullable String defaultPrefix;
private final EffectiveModelContext context;
- private final String defaultPrefix;
- public StringModuleInstanceIdentifierCodec(final EffectiveModelContext context) {
+ private StringModuleInstanceIdentifierCodec(final @Nullable String defaultPrefix,
+ final EffectiveModelContext context) {
+ // FIXME: what does the empty string mean, exactly?
+ this.defaultPrefix = defaultPrefix;
this.context = requireNonNull(context);
this.dataContextTree = DataSchemaContextTree.from(context);
- this.defaultPrefix = "";
+ }
+
+ public StringModuleInstanceIdentifierCodec(final EffectiveModelContext context) {
+ this(null, context);
}
public StringModuleInstanceIdentifierCodec(final EffectiveModelContext context,
final @NonNull String defaultPrefix) {
- this.context = requireNonNull(context);
- this.dataContextTree = DataSchemaContextTree.from(context);
- this.defaultPrefix = defaultPrefix;
+ this(defaultPrefix.isEmpty() ? null : defaultPrefix, context);
}
@Override
protected Module moduleForPrefix(final String prefix) {
- final String moduleName = prefix.isEmpty() && !defaultPrefix.isEmpty() ? defaultPrefix : prefix;
+ final String moduleName = prefix.isEmpty() && defaultPrefix != null ? defaultPrefix : prefix;
return context.findModules(moduleName).stream().findFirst().orElse(null);
}
@Override
public DataSchemaContextTree getDataContextTree() {
- return this.dataContextTree;
+ return dataContextTree;
}
@Override