import com.google.common.annotations.Beta;
import com.google.common.collect.ClassToInstanceMap;
+import com.google.common.collect.ImmutableClassToInstanceMap;
import java.io.IOException;
-import java.util.Optional;
-import org.opendaylight.yangtools.concepts.ObjectExtensions;
-import org.opendaylight.yangtools.concepts.ObjectExtensions.Factory;
+import org.opendaylight.yangtools.rcf8528.data.util.ImmutableMountPointNode;
+import org.opendaylight.yangtools.rfc8528.data.api.MountPointContext;
import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointNodeFactory;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointNodeFactoryResolver;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointStreamWriter;
+import org.opendaylight.yangtools.rfc8528.data.api.StreamWriterMountPointExtension;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.AnydataExtension;
import org.opendaylight.yangtools.yang.data.api.schema.stream.ForwardingNormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriterExtension;
// FIXME: document usage of this
@Beta
public abstract class ImmutableMountPointNormalizedNodeStreamWriter extends ImmutableNormalizedNodeStreamWriter
- implements MountPointStreamWriter {
- private static final Factory<ImmutableMountPointNormalizedNodeStreamWriter, ?, NormalizedNodeStreamWriterExtension>
- EXTENSIONS_FACTORY = ObjectExtensions.factory(ImmutableMountPointNormalizedNodeStreamWriter.class,
- AnydataExtension.class, MountPointStreamWriter.class);
-
+ implements StreamWriterMountPointExtension {
protected ImmutableMountPointNormalizedNodeStreamWriter(final NormalizedNodeResult result) {
super(result);
}
@Override
public final ClassToInstanceMap<NormalizedNodeStreamWriterExtension> getExtensions() {
- return EXTENSIONS_FACTORY.newInstance(this);
+ return ImmutableClassToInstanceMap.of(StreamWriterMountPointExtension.class, this);
}
@Override
- public final Optional<MountPointNodeFactoryResolver> findMountPoint(final MountPointIdentifier label) {
- return findResolver(label).map(factory -> factory);
- }
-
- @Override
- public final NormalizedNodeStreamWriter startMountPoint(final MountPointNodeFactory factory) {
+ public final NormalizedNodeStreamWriter startMountPoint(final MountPointIdentifier mountId,
+ final MountPointContext mountCtx) {
final NormalizedNodeResult mountResult = new NormalizedNodeResult();
final NormalizedNodeStreamWriter mountDelegate = ImmutableNormalizedNodeStreamWriter.from(mountResult);
public void close() throws IOException {
super.close();
- final NormalizedNode<?, ?> data = mountResult.getResult();
+ final NormalizedNode data = mountResult.getResult();
if (!(data instanceof ContainerNode)) {
throw new IOException("Unhandled mount data " + data);
}
- writeChild(factory.createMountPoint((ContainerNode) data));
+ writeChild(ImmutableMountPointNode.of(mountId, mountCtx, (ContainerNode) data));
}
};
}
-
- // XXX: this resolver must end up returning MountPointNodeFactory
- protected abstract Optional<MountPointNodeFactoryResolver> findResolver(MountPointIdentifier label);
}