summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
7c6d09d)
This the primary, non-null returning replacement of getDataChildByName(),
which is turned into a deprecated default utility method. This forces
users to check the return, flusing out potential inconsistencies like
null nodes in collections.
Change-Id: I8e81044c21a9b5daaa63c3ba347aa13a4222ae44
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
*/
package org.opendaylight.yangtools.yang.data.util;
*/
package org.opendaylight.yangtools.yang.data.util;
+import static java.util.Objects.requireNonNull;
+
import com.google.common.annotations.Beta;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.annotations.Beta;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.UsesNode;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.UsesNode;
/**
* yang-data-util
* org.opendaylight.yangtools.yang.data.util
/**
* yang-data-util
* org.opendaylight.yangtools.yang.data.util
- public DataSchemaNode getDataChildByName(final QName name) {
+ public Optional<DataSchemaNode> findDataChildByName(final QName name) {
switch (name.getLocalName()) {
case "input":
switch (name.getLocalName()) {
case "input":
- return rpcDefinition.getInput();
+ return Optional.of(rpcDefinition.getInput());
- return rpcDefinition.getOutput();
+ return Optional.of(rpcDefinition.getOutput());
+ return Optional.empty();
- public DataSchemaNode getDataChildByName(final QName name) {
- return mapNodes.get(name);
+ public Optional<DataSchemaNode> findDataChildByName(final QName name) {
+ return Optional.ofNullable(mapNodes.get(requireNonNull(name)));
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import javax.annotation.Nonnull;
import org.opendaylight.yangtools.yang.common.QName;
import java.util.Set;
import javax.annotation.Nonnull;
import org.opendaylight.yangtools.yang.common.QName;
- public DataSchemaNode getDataChildByName(final QName name) {
+ public Optional<DataSchemaNode> findDataChildByName(final QName name) {
// FIXME: check QNameModule
switch (name.getLocalName()) {
case "input":
// FIXME: check QNameModule
switch (name.getLocalName()) {
case "input":
- return delegate.getInput();
+ return Optional.of(delegate.getInput());
- return delegate.getOutput();
+ return Optional.of(delegate.getOutput());
+ return Optional.empty();
package org.opendaylight.yangtools.yang.model.api;
import java.util.Collection;
package org.opendaylight.yangtools.yang.model.api;
import java.util.Collection;
+import java.util.Optional;
+import javax.annotation.Nullable;
import org.opendaylight.yangtools.yang.common.QName;
/**
import org.opendaylight.yangtools.yang.common.QName;
/**
*
* @param name
* QName of child
*
* @param name
* QName of child
- * @return child node of this DataNodeContainer if child with given name is
- * present, null otherwise
+ * @return child node of this DataNodeContainer if child with given name is present, null otherwise
+ *
+ * @deprecated Use {@link #findDataChildByName(QName)} instead.
+ */
+ @Deprecated
+ @Nullable default DataSchemaNode getDataChildByName(final QName name) {
+ return findDataChildByName(name).orElse(null);
+ }
+
+ /**
+ * Returns the child node corresponding to the specified name.
+ *
+ * @param name
+ * QName of child
+ * @return child node of this DataNodeContainer if child with given name is present, empty otherwise
+ * @throws NullPointerException if name is null
- DataSchemaNode getDataChildByName(QName name);
+ Optional<DataSchemaNode> findDataChildByName(QName name);
/**
* Returns grouping nodes used ny this container.
/**
* Returns grouping nodes used ny this container.
*/
package org.opendaylight.yangtools.yang.model.immutable;
*/
package org.opendaylight.yangtools.yang.model.immutable;
+import static java.util.Objects.requireNonNull;
+
import java.util.Collection;
import java.util.Map;
import java.util.Collection;
import java.util.Map;
+import java.util.Optional;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
- public final DataSchemaNode getDataChildByName(final QName name) {
- return children().get(name);
+ public final Optional<DataSchemaNode> findDataChildByName(final QName name) {
+ return Optional.ofNullable(children().get(requireNonNull(name)));
package org.opendaylight.yangtools.yang.model.util;
package org.opendaylight.yangtools.yang.model.util;
+import static java.util.Objects.requireNonNull;
+
import com.google.common.collect.SetMultimap;
import java.net.URI;
import java.util.ArrayList;
import com.google.common.collect.SetMultimap;
import java.net.URI;
import java.util.ArrayList;
- public DataSchemaNode getDataChildByName(final QName name) {
+ public Optional<DataSchemaNode> findDataChildByName(final QName name) {
+ requireNonNull(name);
for (Module module : getModules()) {
for (Module module : getModules()) {
- final DataSchemaNode result = module.getDataChildByName(name);
- if (result != null) {
+ final Optional<DataSchemaNode> result = module.findDataChildByName(name);
+ if (result.isPresent()) {
+ return Optional.empty();
*/
package org.opendaylight.yangtools.yang.model.util;
*/
package org.opendaylight.yangtools.yang.model.util;
-import com.google.common.base.Preconditions;
+import static java.util.Objects.requireNonNull;
+
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import java.util.HashMap;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import java.util.HashMap;
public EffectiveAugmentationSchema(final AugmentationSchemaNode augmentSchema,
final Set<DataSchemaNode> realChildSchemas) {
public EffectiveAugmentationSchema(final AugmentationSchemaNode augmentSchema,
final Set<DataSchemaNode> realChildSchemas) {
- this.delegate = Preconditions.checkNotNull(augmentSchema);
+ this.delegate = requireNonNull(augmentSchema);
this.realChildSchemas = ImmutableSet.copyOf(realChildSchemas);
final Map<QName, DataSchemaNode> m = new HashMap<>(realChildSchemas.size());
this.realChildSchemas = ImmutableSet.copyOf(realChildSchemas);
final Map<QName, DataSchemaNode> m = new HashMap<>(realChildSchemas.size());
- public DataSchemaNode getDataChildByName(final QName name) {
- return mappedChildSchemas.get(name);
+ public Optional<DataSchemaNode> findDataChildByName(final QName name) {
+ return Optional.ofNullable(mappedChildSchemas.get(requireNonNull(name)));
final QName qname = QName.create("config-namespace", "2016-08-11", "cont");
final ContainerSchemaNode mockedContainer = mock(ContainerSchemaNode.class);
final QName qname = QName.create("config-namespace", "2016-08-11", "cont");
final ContainerSchemaNode mockedContainer = mock(ContainerSchemaNode.class);
- doReturn(mockedContainer).when(moduleConfig).getDataChildByName(any(QName.class));
+ doReturn(Optional.of(mockedContainer)).when(moduleConfig).findDataChildByName(any(QName.class));
final DataSchemaNode dataSchemaNode = filteringSchemaContextProxy.getDataChildByName(qname);
assertTrue(dataSchemaNode instanceof ContainerSchemaNode);
final DataSchemaNode dataSchemaNode = filteringSchemaContextProxy.getDataChildByName(qname);
assertTrue(dataSchemaNode instanceof ContainerSchemaNode);
*/
package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
*/
package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
+import static java.util.Objects.requireNonNull;
+
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
import java.util.Set;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
- public final DataSchemaNode getDataChildByName(final QName name) {
- // Child nodes are keyed by their container name, so we can do a direct
- // lookup
- return childNodes.get(name);
+ public final Optional<DataSchemaNode> findDataChildByName(final QName name) {
+ // Child nodes are keyed by their container name, so we can do a direct lookup
+ return Optional.ofNullable(childNodes.get(requireNonNull(name)));
*/
package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
*/
package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
+import static com.google.common.base.Preconditions.checkState;
+import static java.util.Objects.requireNonNull;
+
import com.google.common.base.MoreObjects;
import com.google.common.base.MoreObjects;
-import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
@Override
public Set<Module> getSubmodules() {
@Override
public Set<Module> getSubmodules() {
- Preconditions.checkState(sealed,
- "Attempt to get base submodules from unsealed submodule effective statement %s", getQNameModule());
+ checkState(sealed, "Attempt to get base submodules from unsealed submodule effective statement %s",
+ getQNameModule());
- public final DataSchemaNode getDataChildByName(final QName name) {
- // Child nodes are keyed by their container name, so we can do a direct
- // lookup
- return childNodes.get(name);
+ public final Optional<DataSchemaNode> findDataChildByName(final QName name) {
+ // Child nodes are keyed by their container name, so we can do a direct lookup
+ return Optional.ofNullable(childNodes.get(requireNonNull(name)));
- public DataSchemaNode getDataChildByName(final QName name) {
- return getQName().equals(name) ? caseShorthandNode : null;
+ public Optional<DataSchemaNode> findDataChildByName(final QName name) {
+ return name.equals(getQName()) ? Optional.of(caseShorthandNode) : Optional.empty();