Use instanceof pattern matching and switch expressions.
Change-Id: I48362f161187de4b76314b889e59994dfbf1d107
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
-import java.util.Iterator;
-import java.util.Optional;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.data.util.codec.IdentityCodecUtil;
import org.opendaylight.yangtools.yang.model.api.Module;
final class IdentityrefJSONCodec implements JSONCodec<QName> {
- private final EffectiveModelContext schemaContext;
- private final QNameModule parentModule;
+ private final @NonNull EffectiveModelContext context;
+ private final @NonNull QNameModule parentModule;
IdentityrefJSONCodec(final EffectiveModelContext context, final QNameModule parentModule) {
- this.schemaContext = requireNonNull(context);
+ this.context = requireNonNull(context);
this.parentModule = requireNonNull(parentModule);
}
@Override
public QName parseValue(final Object ctx, final String value) {
- return IdentityCodecUtil.parseIdentity(value, schemaContext, prefix -> {
+ return IdentityCodecUtil.parseIdentity(value, context, prefix -> {
if (prefix.isEmpty()) {
return parentModule;
}
- final Iterator<? extends Module> modules = schemaContext.findModules(prefix).iterator();
+ final var modules = context.findModules(prefix).iterator();
checkArgument(modules.hasNext(), "Could not find module %s", prefix);
return modules.next().getQNameModule();
}).getQName();
*/
@Override
public void writeValue(final JsonWriter writer, final QName value) throws IOException {
- final String str = QNameCodecUtil.encodeQName(value, uri -> {
- final Optional<String> optName = schemaContext.findModule(uri).map(Module::getName);
- checkArgument(optName.isPresent(), "Cannot find module for %s", uri);
- return optName.get();
- });
+ final String str = QNameCodecUtil.encodeQName(value, uri -> context.findModule(uri)
+ .map(Module::getName).orElseThrow(() -> new IllegalArgumentException("Cannot find module for " + uri)));
writer.value(str);
}
}
int ret = 0;
for (var entry : parent.getAll(DataTreeNamespace.class).entrySet()) {
final var child = entry.getValue();
- if (child instanceof DataTreeAwareEffectiveStatement) {
+ if (child instanceof DataTreeAwareEffectiveStatement<?, ?> dataTree) {
stack.enterDataTree(entry.getKey());
- ret += codecsForChildren(lazy, stack, (DataTreeAwareEffectiveStatement<?, ?>) child);
+ ret += codecsForChildren(lazy, stack, dataTree);
stack.exit();
- } else if (child instanceof TypedDataSchemaNode) {
- lazy.codecFor((TypedDataSchemaNode) child, stack);
+ } else if (child instanceof TypedDataSchemaNode typed) {
+ lazy.codecFor(typed, stack);
++ret;
}
}
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
-import java.util.Iterator;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.XMLNamespace;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.util.AbstractModuleStringInstanceIdentifierCodec;
abstract class JSONInstanceIdentifierCodec extends AbstractModuleStringInstanceIdentifierCodec
implements JSONCodec<YangInstanceIdentifier> {
- private final DataSchemaContextTree dataContextTree;
+ private final @NonNull DataSchemaContextTree dataContextTree;
private final JSONCodecFactory codecFactory;
private final EffectiveModelContext context;
JSONInstanceIdentifierCodec(final EffectiveModelContext context, final JSONCodecFactory jsonCodecFactory) {
this.context = requireNonNull(context);
- this.dataContextTree = DataSchemaContextTree.from(context);
- this.codecFactory = requireNonNull(jsonCodecFactory);
+ dataContextTree = DataSchemaContextTree.from(context);
+ codecFactory = requireNonNull(jsonCodecFactory);
}
@Override
protected final Module moduleForPrefix(final String prefix) {
- final Iterator<? extends Module> modules = context.findModules(prefix).iterator();
+ final var modules = context.findModules(prefix).iterator();
return modules.hasNext() ? modules.next() : null;
}
@Override
protected final String prefixForNamespace(final XMLNamespace namespace) {
- final Iterator<? extends Module> modules = context.findModules(namespace).iterator();
+ final var modules = context.findModules(namespace).iterator();
return modules.hasNext() ? modules.next().getName() : null;
}
JSONNormalizedNodeStreamWriter(final JSONCodecFactory codecFactory, final NormalizedNodeStreamWriterStack tracker,
final JsonWriter writer, final JSONStreamWriterRootContext rootContext) {
this.writer = requireNonNull(writer);
- this.codecs = requireNonNull(codecFactory);
+ codecs = requireNonNull(codecFactory);
this.tracker = requireNonNull(tracker);
- this.context = requireNonNull(rootContext);
+ context = requireNonNull(rootContext);
}
/**
@Override
public final void startContainerNode(final NodeIdentifier name, final int childSizeHint) throws IOException {
final SchemaNode schema = tracker.startContainerNode(name);
- final boolean isPresence = schema instanceof ContainerSchemaNode
- ? ((ContainerSchemaNode) schema).isPresenceContainer() : DEFAULT_EMIT_EMPTY_CONTAINERS;
+ final boolean isPresence = schema instanceof ContainerSchemaNode container
+ ? container.isPresenceContainer() : DEFAULT_EMIT_EMPTY_CONTAINERS;
context = new JSONStreamWriterNamedObjectContext(context, name, isPresence);
}
@Override
public void scalarValue(final Object value) throws IOException {
final Object current = tracker.getParent();
- if (current instanceof TypedDataSchemaNode) {
- writeValue(value, codecs.codecFor((TypedDataSchemaNode) current, tracker));
+ if (current instanceof TypedDataSchemaNode typed) {
+ writeValue(value, codecs.codecFor(typed, tracker));
} else if (current instanceof AnydataSchemaNode) {
writeAnydataValue(value);
} else {
}
private void writeAnydataValue(final Object value) throws IOException {
- if (value instanceof NormalizedAnydata) {
- writeNormalizedAnydata((NormalizedAnydata) value);
+ if (value instanceof NormalizedAnydata normalized) {
+ writeNormalizedAnydata(normalized);
} else {
throw new IllegalStateException("Unexpected anydata value " + value);
}
return;
}
switch (childNodeText) {
- case "null":
- writer.nullValue();
- break;
- case "false":
- writer.value(false);
- break;
- case "true":
- writer.value(true);
- break;
- default:
- writer.value(childNodeText);
+ case "null" -> writer.nullValue();
+ case "false" -> writer.value(false);
+ case "true" -> writer.value(true);
+ default -> writer.value(childNodeText);
}
}
*/
package org.opendaylight.yangtools.yang.data.codec.gson;
-import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import com.google.common.base.MoreObjects;
import com.google.common.base.MoreObjects.ToStringHelper;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
-import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
// Prepend module name if namespaces do not match
final QNameModule module = qname.getModule();
if (!module.getNamespace().equals(getNamespace())) {
- final Optional<String> modules = schema.findModule(module).map(Module::getName);
- checkArgument(modules.isPresent(), "Could not find module for namespace %s", module);
- sb.append(modules.get()).append(':');
+ final var name = schema.findModule(module)
+ .map(Module::getName)
+ .orElseThrow(() -> new IllegalArgumentException("Could not find module for namespace " + module));
+ sb.append(name).append(':');
}
sb.append(qname.getLocalName());
if (!stack.isEmpty()) {
final EffectiveStatement<?, ?> parent = stack.currentStatement();
- if (parent instanceof DataSchemaNode) {
- parentNode = (DataSchemaNode) parent;
- } else if (parent instanceof OperationDefinition) {
- parentNode = OperationAsContainer.of((OperationDefinition) parent);
- } else if (parent instanceof NotificationDefinition) {
- parentNode = NotificationAsContainer.of((NotificationDefinition) parent);
+ if (parent instanceof DataSchemaNode data) {
+ parentNode = data;
+ } else if (parent instanceof OperationDefinition oper) {
+ parentNode = OperationAsContainer.of(oper);
+ } else if (parent instanceof NotificationDefinition notif) {
+ parentNode = NotificationAsContainer.of(notif);
} else {
throw new IllegalArgumentException("Illegal parent node " + parent);
}
final QName qname = childDataSchemaNodes.peekLast().getQName();
final AbstractNodeDataWithSchema<?> newChild = ((CompositeNodeDataWithSchema<?>) parent)
.addChild(childDataSchemaNodes, ChildReusePolicy.NOOP);
- if (newChild instanceof AnyXmlNodeDataWithSchema) {
- readAnyXmlValue(in, (AnyXmlNodeDataWithSchema) newChild, jsonElementName);
+ if (newChild instanceof AnyXmlNodeDataWithSchema anyxml) {
+ readAnyXmlValue(in, anyxml, jsonElementName);
} else {
stack.enterDataTree(qname);
read(in, newChild);
}
private static AbstractNodeDataWithSchema<?> newArrayEntry(final AbstractNodeDataWithSchema<?> parent) {
- if (!(parent instanceof MultipleEntryDataWithSchema)) {
- throw new IllegalStateException("Found an unexpected array nested under " + parent.getSchema().getQName());
+ if (parent instanceof MultipleEntryDataWithSchema<?> multiple) {
+ return multiple.newChildEntry();
}
- return ((MultipleEntryDataWithSchema<?>) parent).newChildEntry();
+ throw new IllegalStateException("Found an unexpected array nested under " + parent.getSchema().getQName());
}
private void setValue(final AbstractNodeDataWithSchema<?> parent, final String value) {
final DataSchemaNode dataSchemaNode) {
final Set<XMLNamespace> potentialUris = new HashSet<>();
final Set<ChoiceSchemaNode> choices = new HashSet<>();
- if (dataSchemaNode instanceof DataNodeContainer) {
- for (final DataSchemaNode childSchemaNode : ((DataNodeContainer) dataSchemaNode).getChildNodes()) {
- if (childSchemaNode instanceof ChoiceSchemaNode) {
- choices.add((ChoiceSchemaNode)childSchemaNode);
+ if (dataSchemaNode instanceof DataNodeContainer container) {
+ for (final DataSchemaNode childSchemaNode : container.getChildNodes()) {
+ if (childSchemaNode instanceof ChoiceSchemaNode choice) {
+ choices.add(choice);
} else if (childSchemaNode.getQName().getLocalName().equals(elementName)) {
potentialUris.add(childSchemaNode.getQName().getNamespace());
}
*/
public static JsonWriter createJsonWriter(final Writer writer, final int indentSize) {
JsonWriter jsonWriter = new JsonWriter(writer);
- final String indent = " ".repeat(indentSize);
- jsonWriter.setIndent(indent);
+ jsonWriter.setIndent(" ".repeat(indentSize));
return jsonWriter;
}
}