X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=restconf%2Frestconf-nb%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Frestconf%2Fserver%2Fspi%2FMaxDepthNormalizedNodeWriterFactory.java;fp=restconf%2Frestconf-nb%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Frestconf%2Fserver%2Fspi%2FMaxDepthNormalizedNodeWriterFactory.java;h=b5cf1eff5286c22d1aafe52a7a754338624a0931;hb=4c54c44f4642490b2d0687f1ee2d6a7356e6b752;hp=0000000000000000000000000000000000000000;hpb=afc2f00460f3866d8dffcf230ba08f549e835a0b;p=netconf.git diff --git a/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/MaxDepthNormalizedNodeWriterFactory.java b/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/MaxDepthNormalizedNodeWriterFactory.java new file mode 100644 index 0000000000..b5cf1eff52 --- /dev/null +++ b/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/MaxDepthNormalizedNodeWriterFactory.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2024 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * 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.restconf.server.spi; + +import static java.util.Objects.requireNonNull; + +import com.google.common.base.MoreObjects.ToStringHelper; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.opendaylight.restconf.api.query.DepthParam; +import org.opendaylight.restconf.nb.rfc8040.jersey.providers.RestconfNormalizedNodeWriter; +import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; + +/** + * A {@link NormalizedNodeWriterFactory} returning a {@link RestconfNormalizedNodeWriter} which emits the data only to + * a certain + * depth. + */ +@NonNullByDefault +final class MaxDepthNormalizedNodeWriterFactory extends NormalizedNodeWriterFactory { + private final DepthParam depth; + + MaxDepthNormalizedNodeWriterFactory(final DepthParam depth) { + this.depth = requireNonNull(depth); + } + + @Override + protected RestconfNormalizedNodeWriter newWriter(final NormalizedNodeStreamWriter streamWriter) { + return RestconfNormalizedNodeWriter.forStreamWriter(streamWriter, depth); + } + + @Override + protected ToStringHelper addToStringAttributes(final ToStringHelper helper) { + return helper.add("depth", depth.value()); + } +} \ No newline at end of file