Do not use Optional in ParserIdentifier.toInstanceIdentifier() 13/107213/2
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 2 Aug 2023 14:54:56 +0000 (16:54 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 2 Aug 2023 19:20:06 +0000 (21:20 +0200)
Specify a @Nullable argument instead.

Change-Id: I7aad6ea4e3891e63abf086f30060347e53462b64
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/patch/JsonPatchBodyReader.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/spi/AbstractIdentifierAwareJaxRsProvider.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfDataServiceImpl.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfOperationsServiceImpl.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/ParserIdentifier.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/TestRestconfUtils.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/ParserIdentifierTest.java

index e484063709784d47cbfaac6c3542581225c7b8a0..a84707588bb1a29869edb360dd0c97afe9f20665 100644 (file)
@@ -23,7 +23,6 @@ import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
-import java.util.Optional;
 import java.util.concurrent.atomic.AtomicReference;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.WebApplicationException;
@@ -91,9 +90,8 @@ public class JsonPatchBodyReader extends AbstractPatchBodyReader {
     public PatchContext readFrom(final String uriPath, final InputStream entityStream)
             throws RestconfDocumentedException {
         try {
-            return readFrom(
-                    ParserIdentifier.toInstanceIdentifier(uriPath, getSchemaContext(),
-                            Optional.ofNullable(getMountPointService())), entityStream);
+            return readFrom(ParserIdentifier.toInstanceIdentifier(uriPath, getSchemaContext(), getMountPointService()),
+                entityStream);
         } catch (final Exception e) {
             throw propagateExceptionAs(e);
         }
index 369715ab9d06a5b5d959be37a41be225a7f3e9ed..fedc577e2fc96b07bdc7d11dfb3c8c890b68017f 100644 (file)
@@ -14,7 +14,6 @@ import java.io.InputStream;
 import java.io.PushbackInputStream;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
-import java.util.Optional;
 import javax.ws.rs.HttpMethod;
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Context;
@@ -83,16 +82,15 @@ public abstract class AbstractIdentifierAwareJaxRsProvider<T> implements Message
             throws WebApplicationException;
 
     private String getIdentifier() {
-        return this.uriInfo.getPathParameters(false).getFirst("identifier");
+        return uriInfo.getPathParameters(false).getFirst("identifier");
     }
 
     private InstanceIdentifierContext getInstanceIdentifierContext() {
-        return ParserIdentifier.toInstanceIdentifier(getIdentifier(), getSchemaContext(),
-                Optional.ofNullable(getMountPointService()));
+        return ParserIdentifier.toInstanceIdentifier(getIdentifier(), getSchemaContext(), getMountPointService());
     }
 
     protected UriInfo getUriInfo() {
-        return this.uriInfo;
+        return uriInfo;
     }
 
     protected EffectiveModelContext getSchemaContext() {
@@ -104,7 +102,7 @@ public abstract class AbstractIdentifierAwareJaxRsProvider<T> implements Message
     }
 
     protected boolean isPost() {
-        return HttpMethod.POST.equals(this.request.getMethod());
+        return HttpMethod.POST.equals(request.getMethod());
     }
 
     public void setUriInfo(final UriInfo uriInfo) {
index 94878fee9918d5d2d385d22c467a42257628fbec..524b5278dd550995b3bcbe9ad91a9a3a31fd2bba 100644 (file)
@@ -25,7 +25,6 @@ import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
 import javax.ws.rs.Path;
@@ -132,7 +131,7 @@ public class RestconfDataServiceImpl implements RestconfDataService {
         final EffectiveModelContext schemaContextRef = databindProvider.currentContext().modelContext();
         // FIXME: go through
         final InstanceIdentifierContext instanceIdentifier = ParserIdentifier.toInstanceIdentifier(
-                identifier, schemaContextRef, Optional.of(mountPointService));
+                identifier, schemaContextRef, mountPointService);
         final DOMMountPoint mountPoint = instanceIdentifier.getMountPoint();
 
         // FIXME: this looks quite crazy, why do we even have it?
@@ -275,8 +274,7 @@ public class RestconfDataServiceImpl implements RestconfDataService {
     @Override
     public Response deleteData(final String identifier) {
         final InstanceIdentifierContext instanceIdentifier = ParserIdentifier.toInstanceIdentifier(identifier,
-            databindProvider.currentContext().modelContext(), Optional.of(mountPointService));
-
+            databindProvider.currentContext().modelContext(), mountPointService);
         final DOMMountPoint mountPoint = instanceIdentifier.getMountPoint();
         final RestconfStrategy strategy = getRestconfStrategy(mountPoint);
         return DeleteDataTransactionUtil.deleteData(strategy, instanceIdentifier.getInstanceIdentifier());
index ec9175c6a199908d850c7a0e2d52ae1b3e1431d6..0149d278671b55e2650d152be79f5bdb8ff3cf05 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.restconf.nb.rfc8040.rests.services.impl;
 
 import static java.util.Objects.requireNonNull;
 
-import java.util.Optional;
 import javax.ws.rs.Path;
 import org.opendaylight.mdsal.dom.api.DOMMountPointService;
 import org.opendaylight.restconf.nb.rfc8040.databind.DatabindProvider;
@@ -44,9 +43,8 @@ public class RestconfOperationsServiceImpl implements RestconfOperationsService
 
     @Override
     public String getOperationJSON(final String identifier) {
-        final var identifierContext = ParserIdentifier.toInstanceIdentifier(identifier,
-                databindProvider.currentContext().modelContext(), Optional.of(mountPointService));
-        return OperationsContent.JSON.bodyFor(identifierContext);
+        return OperationsContent.JSON.bodyFor(ParserIdentifier.toInstanceIdentifier(identifier,
+            databindProvider.currentContext().modelContext(), mountPointService));
     }
 
     @Override
@@ -56,8 +54,7 @@ public class RestconfOperationsServiceImpl implements RestconfOperationsService
 
     @Override
     public String getOperationXML(final String identifier) {
-        final var identifierContext = ParserIdentifier.toInstanceIdentifier(identifier,
-                databindProvider.currentContext().modelContext(), Optional.of(mountPointService));
-        return OperationsContent.XML.bodyFor(identifierContext);
+        return OperationsContent.XML.bodyFor(ParserIdentifier.toInstanceIdentifier(identifier,
+            databindProvider.currentContext().modelContext(), mountPointService));
     }
 }
index d44dee61b5777cad94325fac0d402aa7df2a26a9..2366a64dc5721d2c924c27e93a7a8504d23dc687 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.restconf.nb.rfc8040.utils.parser;
 
 import static com.google.common.base.Preconditions.checkState;
+import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Splitter;
@@ -83,18 +84,18 @@ public final class ParserIdentifier {
     //        @NonNull InstanceIdentifierContext forUrl(identifier, schemaContexxt, mountPointService)
     //
     public static InstanceIdentifierContext toInstanceIdentifier(final String identifier,
-            final EffectiveModelContext schemaContext, final Optional<DOMMountPointService> mountPointService) {
+            final EffectiveModelContext schemaContext, final @Nullable DOMMountPointService mountPointService) {
         if (identifier == null || !identifier.contains(MOUNT)) {
             return createIIdContext(schemaContext, identifier, null);
         }
-        if (mountPointService.isEmpty()) {
+        if (mountPointService == null) {
             throw new RestconfDocumentedException("Mount point service is not available");
         }
 
         final Iterator<String> pathsIt = MP_SPLITTER.split(identifier).iterator();
         final String mountPointId = pathsIt.next();
         final YangInstanceIdentifier mountPath = IdentifierCodec.deserialize(mountPointId, schemaContext);
-        final DOMMountPoint mountPoint = mountPointService.orElseThrow().getMountPoint(mountPath)
+        final DOMMountPoint mountPoint = mountPointService.getMountPoint(mountPath)
                 .orElseThrow(() -> new RestconfDocumentedException("Mount point does not exist.",
                     ErrorType.PROTOCOL, ErrorTags.RESOURCE_DENIED_TRANSPORT));
 
@@ -210,7 +211,7 @@ public final class ParserIdentifier {
                 pathBuilder.append(current);
             }
             final InstanceIdentifierContext point = toInstanceIdentifier(pathBuilder.toString(), schemaContext,
-                Optional.of(domMountPointService));
+                requireNonNull(domMountPointService));
             final String moduleName = validateAndGetModulName(componentIter);
             final Revision revision = validateAndGetRevision(componentIter);
             final EffectiveModelContext context = coerceModelContext(point.getMountPoint());
@@ -230,7 +231,7 @@ public final class ParserIdentifier {
             targetUrl = IdentifierCodec.serialize(urlPath, schemaContext) + target;
         }
 
-        return toInstanceIdentifier(targetUrl, schemaContext, Optional.empty()).getInstanceIdentifier();
+        return toInstanceIdentifier(targetUrl, schemaContext, null).getInstanceIdentifier();
     }
 
     /**
index d3c691c90aebb93dfe0c290597291bfebe07d06e..c433e9e9ff5a2d48364c210691b60e0f64e76efc 100644 (file)
@@ -15,7 +15,6 @@ import java.io.InputStream;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Optional;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.transform.dom.DOMSource;
@@ -70,8 +69,7 @@ public final class TestRestconfUtils {
     @SuppressWarnings("checkstyle:IllegalCatch")
     public static NormalizedNodePayload loadNormalizedContextFromXmlFile(final String pathToInputFile,
             final String uri, final EffectiveModelContext schemaContext) {
-        final InstanceIdentifierContext iiContext =
-                ParserIdentifier.toInstanceIdentifier(uri, schemaContext, Optional.empty());
+        final InstanceIdentifierContext iiContext = ParserIdentifier.toInstanceIdentifier(uri, schemaContext, null);
         final InputStream inputStream = TestRestconfUtils.class.getResourceAsStream(pathToInputFile);
         try {
             final Document doc = UntrustedXML.newDocumentBuilder().parse(inputStream);
index 828174350a8c742f26009b3aa1890ebabe0c2341..fb9c727347c34101fa1887c5ee523a90b3221822 100644 (file)
@@ -31,7 +31,6 @@ import org.opendaylight.mdsal.dom.api.DOMYangTextSourceProvider;
 import org.opendaylight.mdsal.dom.broker.DOMMountPointServiceImpl;
 import org.opendaylight.mdsal.dom.spi.FixedDOMSchemaService;
 import org.opendaylight.restconf.common.ErrorTags;
-import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
 import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
 import org.opendaylight.restconf.common.errors.RestconfError;
 import org.opendaylight.restconf.nb.rfc8040.TestRestconfUtils;
@@ -147,11 +146,8 @@ public class ParserIdentifierTest {
      */
     @Test
     public void toInstanceIdentifierTest() {
-        final InstanceIdentifierContext context = ParserIdentifier.toInstanceIdentifier(
-                TEST_IDENT, SCHEMA_CONTEXT, Optional.empty());
-
-        assertEquals("Returned not expected identifier",
-                TEST_IDENT_RESULT, context .getInstanceIdentifier().toString());
+        final var context = ParserIdentifier.toInstanceIdentifier(TEST_IDENT, SCHEMA_CONTEXT, null);
+        assertEquals(TEST_IDENT_RESULT, context.getInstanceIdentifier().toString());
     }
 
     /**
@@ -160,11 +156,8 @@ public class ParserIdentifierTest {
      */
     @Test
     public void toInstanceIdentifierOtherModulesTest() {
-        final InstanceIdentifierContext context = ParserIdentifier.toInstanceIdentifier(
-                TEST_IDENT_OTHERS, SCHEMA_CONTEXT, Optional.empty());
-
-        assertEquals("Returned not expected identifier",
-                TEST_IDENT_OTHERS_RESULT, context.getInstanceIdentifier().toString());
+        final var context = ParserIdentifier.toInstanceIdentifier(TEST_IDENT_OTHERS, SCHEMA_CONTEXT, null);
+        assertEquals(TEST_IDENT_OTHERS_RESULT, context.getInstanceIdentifier().toString());
     }
 
     /**
@@ -172,17 +165,11 @@ public class ParserIdentifierTest {
      */
     @Test
     public void toInstanceIdentifierMountPointTest() {
-        final InstanceIdentifierContext context = ParserIdentifier.toInstanceIdentifier(
-                MOUNT_POINT_IDENT + "/" + TEST_IDENT, SCHEMA_CONTEXT, Optional.of(mountPointService));
-
-        assertEquals("Returned not expected identifier",
-                TEST_IDENT_RESULT.toString(), context.getInstanceIdentifier().toString());
-
-        assertEquals("Mount point not found",
-                mountPoint, context.getMountPoint());
-
-        assertEquals("Schema context from mount point expected",
-                SCHEMA_CONTEXT_ON_MOUNT_POINT, context.getSchemaContext());
+        final var context = ParserIdentifier.toInstanceIdentifier(MOUNT_POINT_IDENT + "/" + TEST_IDENT, SCHEMA_CONTEXT,
+            mountPointService);
+        assertEquals(TEST_IDENT_RESULT.toString(), context.getInstanceIdentifier().toString());
+        assertEquals(mountPoint, context.getMountPoint());
+        assertEquals(SCHEMA_CONTEXT_ON_MOUNT_POINT, context.getSchemaContext());
     }
 
     /**
@@ -191,10 +178,8 @@ public class ParserIdentifierTest {
      */
     @Test
     public void toInstanceIdentifierNullIdentifierTest() {
-        final InstanceIdentifierContext context = ParserIdentifier.toInstanceIdentifier(
-                null, SCHEMA_CONTEXT, Optional.empty());
-        assertEquals("Returned not expected identifier",
-                YangInstanceIdentifier.of(), context.getInstanceIdentifier());
+        final var context = ParserIdentifier.toInstanceIdentifier(null, SCHEMA_CONTEXT, null);
+        assertEquals(YangInstanceIdentifier.of(), context.getInstanceIdentifier());
     }
 
     /**
@@ -203,8 +188,7 @@ public class ParserIdentifierTest {
      */
     @Test
     public void toInstanceIdentifierNullSchemaContextNegativeTest() {
-        assertThrows(NullPointerException.class,
-            () -> ParserIdentifier.toInstanceIdentifier(TEST_IDENT, null, Optional.empty()));
+        assertThrows(NullPointerException.class, () -> ParserIdentifier.toInstanceIdentifier(TEST_IDENT, null, null));
     }
 
     /**
@@ -212,10 +196,8 @@ public class ParserIdentifierTest {
      */
     @Test
     public void toInstanceIdentifierEmptyIdentifierTest() {
-        final InstanceIdentifierContext context = ParserIdentifier.toInstanceIdentifier(
-                "", SCHEMA_CONTEXT, Optional.empty());
-        assertEquals("Returned not expected identifier",
-                YangInstanceIdentifier.of(), context.getInstanceIdentifier());
+        final var context = ParserIdentifier.toInstanceIdentifier("", SCHEMA_CONTEXT, null);
+        assertEquals(YangInstanceIdentifier.of(), context.getInstanceIdentifier());
     }
 
     /**
@@ -223,8 +205,8 @@ public class ParserIdentifierTest {
      */
     @Test
     public void toInstanceIdentifierInvalidIdentifierNegativeTest() {
-        RestconfDocumentedException ex = assertThrows(RestconfDocumentedException.class,
-            () -> ParserIdentifier.toInstanceIdentifier(INVALID_TEST_IDENT, SCHEMA_CONTEXT, Optional.empty()));
+        final var ex = assertThrows(RestconfDocumentedException.class,
+            () -> ParserIdentifier.toInstanceIdentifier(INVALID_TEST_IDENT, SCHEMA_CONTEXT, null));
     }
 
     /**
@@ -233,9 +215,8 @@ public class ParserIdentifierTest {
      */
     @Test
     public void toInstanceIdentifierMountPointInvalidIdentifierNegativeTest() {
-        RestconfDocumentedException ex = assertThrows(RestconfDocumentedException.class,
-            () -> ParserIdentifier.toInstanceIdentifier(INVALID_MOUNT_POINT_IDENT, SCHEMA_CONTEXT,
-                Optional.of(mountPointService)));
+        final var ex = assertThrows(RestconfDocumentedException.class,
+            () -> ParserIdentifier.toInstanceIdentifier(INVALID_MOUNT_POINT_IDENT, SCHEMA_CONTEXT, mountPointService));
     }
 
     /**
@@ -245,9 +226,8 @@ public class ParserIdentifierTest {
      */
     @Test
     public void toInstanceIdentifierMissingMountPointNegativeTest() {
-        RestconfDocumentedException ex = assertThrows(RestconfDocumentedException.class,
-            () -> ParserIdentifier.toInstanceIdentifier("/yang-ext:mount", SCHEMA_CONTEXT,
-                Optional.of(mountPointService)));
+        final var ex = assertThrows(RestconfDocumentedException.class,
+            () -> ParserIdentifier.toInstanceIdentifier("/yang-ext:mount", SCHEMA_CONTEXT, mountPointService));
         final List<RestconfError> errors = ex.getErrors();
         assertEquals(1, errors.size());
         assertEquals("Not expected error type", ErrorType.PROTOCOL, errors.get(0).getErrorType());
@@ -261,8 +241,8 @@ public class ParserIdentifierTest {
      */
     @Test
     public void toInstanceIdentifierMissingMountPointServiceNegativeTest() {
-        RestconfDocumentedException ex = assertThrows(RestconfDocumentedException.class,
-            () -> ParserIdentifier.toInstanceIdentifier("yang-ext:mount", SCHEMA_CONTEXT, Optional.empty()));
+        final var ex = assertThrows(RestconfDocumentedException.class,
+            () -> ParserIdentifier.toInstanceIdentifier("yang-ext:mount", SCHEMA_CONTEXT, null));
         assertEquals("Not expected error type", ErrorType.APPLICATION, ex.getErrors().get(0).getErrorType());
         assertEquals("Not expected error tag", ErrorTag.OPERATION_FAILED, ex.getErrors().get(0).getErrorTag());
     }
@@ -565,8 +545,7 @@ public class ParserIdentifierTest {
      */
     @Test
     public void invokeRpcTest() {
-        final InstanceIdentifierContext result = ParserIdentifier.toInstanceIdentifier(
-                INVOKE_RPC, SCHEMA_CONTEXT, Optional.empty());
+        final var result = ParserIdentifier.toInstanceIdentifier(INVOKE_RPC, SCHEMA_CONTEXT, null);
 
         // RPC schema node
         final QName rpcQName = result.getSchemaNode().getQName();
@@ -587,8 +566,8 @@ public class ParserIdentifierTest {
      */
     @Test
     public void invokeRpcOnMountPointTest() {
-        final InstanceIdentifierContext result = ParserIdentifier.toInstanceIdentifier(
-                MOUNT_POINT_IDENT + "/" + INVOKE_RPC, SCHEMA_CONTEXT, Optional.of(mountPointService));
+        final var result = ParserIdentifier.toInstanceIdentifier(MOUNT_POINT_IDENT + "/" + INVOKE_RPC, SCHEMA_CONTEXT,
+            mountPointService);
 
         // RPC schema node
         final QName rpcQName = result.getSchemaNode().getQName();
@@ -607,8 +586,7 @@ public class ParserIdentifierTest {
      */
     @Test
     public void invokeActionTest() {
-        final InstanceIdentifierContext result = ParserIdentifier
-            .toInstanceIdentifier(INVOKE_ACTION, SCHEMA_CONTEXT, Optional.empty());
+        final var result = ParserIdentifier.toInstanceIdentifier(INVOKE_ACTION, SCHEMA_CONTEXT, null);
 
         // Action schema node
         final QName actionQName = result.getSchemaNode().getQName();
@@ -627,9 +605,8 @@ public class ParserIdentifierTest {
      */
     @Test
     public void invokeActionOnMountPointTest() {
-        final InstanceIdentifierContext result = ParserIdentifier
-            .toInstanceIdentifier(MOUNT_POINT_IDENT + "/" + INVOKE_ACTION, SCHEMA_CONTEXT,
-                Optional.of(mountPointService));
+        final var result = ParserIdentifier.toInstanceIdentifier(MOUNT_POINT_IDENT + "/" + INVOKE_ACTION,
+            SCHEMA_CONTEXT, mountPointService);
 
         // Action schema node
         final QName actionQName = result.getSchemaNode().getQName();