* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package org.opendaylight.yangtools.yang.data.util;
-import com.google.common.base.Preconditions;
-import java.net.URI;
-import javax.annotation.Nonnull;
+import static java.util.Objects.requireNonNull;
+import com.google.common.annotations.Beta;
+import java.net.URI;
+import java.util.Iterator;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.data.api.codec.IdentityrefCodec;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
+
+/**
+ * Base class for implementing identityref codecs on based on module names.
+ */
+@Beta
+public abstract class ModuleStringIdentityrefCodec extends AbstractModuleStringIdentityrefCodec
+ implements SchemaContextProvider {
+ private final SchemaContext context;
+ private final QNameModule parentModule;
-public abstract class ModuleStringIdentityrefCodec
- extends AbstractModuleStringIdentityrefCodec
- implements IdentityrefCodec<String> {
- protected final SchemaContext context;
- protected final QNameModule parentModuleQname;
+ protected ModuleStringIdentityrefCodec(final @NonNull SchemaContext context,
+ final @NonNull QNameModule parentModule) {
+ this.context = requireNonNull(context);
+ this.parentModule = requireNonNull(parentModule);
+ }
+
+ @Override
+ public final SchemaContext getSchemaContext() {
+ return context;
+ }
- public ModuleStringIdentityrefCodec(@Nonnull final SchemaContext context, @Nonnull final QNameModule parentModule) {
- this.context = Preconditions.checkNotNull(context);
- this.parentModuleQname = Preconditions.checkNotNull(parentModule);
+ protected final QNameModule getParentModule() {
+ return parentModule;
}
@Override
- protected String prefixForNamespace(@Nonnull final URI namespace) {
- final Module module = context.findModuleByNamespaceAndRevision(namespace, null);
- return module == null ? null : module.getName();
+ protected String prefixForNamespace(final URI namespace) {
+ final Iterator<Module> modules = context.findModules(namespace).iterator();
+ return modules.hasNext() ? modules.next().getName() : null;
}
}