import static java.util.Objects.requireNonNull;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-import java.net.URI;
+import com.google.common.annotations.Beta;
import java.util.Iterator;
-import javax.annotation.Nonnull;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.XMLNamespace;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextProvider;
import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-public abstract class ModuleStringIdentityrefCodec extends AbstractModuleStringIdentityrefCodec {
- // FIXME: 3.0.0: hide these fields
- protected final SchemaContext context;
- @SuppressFBWarnings("URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
- protected final QNameModule parentModuleQname;
+/**
+ * Base class for implementing identityref codecs on based on module names.
+ */
+@Beta
+public abstract class ModuleStringIdentityrefCodec extends AbstractModuleStringIdentityrefCodec
+ implements EffectiveModelContextProvider {
+ private final EffectiveModelContext context;
+ private final QNameModule parentModule;
- protected ModuleStringIdentityrefCodec(@Nonnull final SchemaContext context,
- @Nonnull final QNameModule parentModule) {
+ protected ModuleStringIdentityrefCodec(final @NonNull EffectiveModelContext context,
+ final @NonNull QNameModule parentModule) {
this.context = requireNonNull(context);
- this.parentModuleQname = requireNonNull(parentModule);
+ this.parentModule = requireNonNull(parentModule);
+ }
+
+ @Override
+ public final EffectiveModelContext getEffectiveModelContext() {
+ return context;
+ }
+
+ protected final QNameModule getParentModule() {
+ return parentModule;
}
@Override
- protected String prefixForNamespace(@Nonnull final URI namespace) {
- final Iterator<Module> modules = context.findModules(namespace).iterator();
+ protected String prefixForNamespace(final XMLNamespace namespace) {
+ final Iterator<? extends Module> modules = context.findModules(namespace).iterator();
return modules.hasNext() ? modules.next().getName() : null;
}
}