Add support for injecting Optional<T> parameter types

In  jaxrs

Overview

Currently, The parameter type supports the following construct (from RESTEasy document):

The parameter type you inject into can be any primitive type, a String, or any Java object that has a constructor that takes a String parameter, or a static valueOf method that takes a String as a parameter.

This proposal is to support a series of java.util.Optional types as a wrapper object types. This will give users the ability to use optional typed parameters, and eliminate all null checks by using methods like Optional.orElse().

Please note that @PathParam is an exception for which Optional is not available. The reason is that Optional for the @PathParam use case would just be a NO-OP, since an element of the path cannot be omitted.

Issue Metadata

Issue:

QE Contacts:

Testing By

[X] Engineering

[] QE

Affected Projects or Components:

  • WildFly

  • RESTEasy

Requirements

  • RESTEasy will offer a mechanism to support a series of java.util.Optional types as a wrapper object types. This will give users the ability to use optional typed parameters, and eliminate all null checks by using methods like Optional.orElse().

  • Default behavior won’t change.

  • WildFly will allow using the new RESTEasy functionality.

Test Plan

The tests for this feature will be stored in the RESTEasy testsuite.

Community Documentation

Documentation should be coming as part of the RESTEasy component documentation.