Re: Proposed Final Draft -- Java 8 Implementation


Pavel Bucek
 

:-)

$ grep -r IllegalArgument .
./javax/ws/rs/BadRequestException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/BadRequestException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/BadRequestException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/BadRequestException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/client/Client.java: * @throws IllegalArgumentException in case the supplied string is not a valid URI template.
./javax/ws/rs/client/ClientBuilder.java: * @throws IllegalArgumentException when the value is negative.
./javax/ws/rs/client/ClientBuilder.java: * @throws IllegalArgumentException when the value is negative.
./javax/ws/rs/client/Entity.java: * @throws IllegalArgumentException if the supplied string cannot be parsed
./javax/ws/rs/ClientErrorException.java: * @throws IllegalArgumentException in case the status code is {@code null} or is not from
./javax/ws/rs/ClientErrorException.java: * @throws IllegalArgumentException in case the status code is {@code null} or is not from
./javax/ws/rs/ClientErrorException.java: * @throws IllegalArgumentException in case the status code is not a valid HTTP status code or
./javax/ws/rs/ClientErrorException.java: * @throws IllegalArgumentException in case the status code is not a valid HTTP status code or
./javax/ws/rs/ClientErrorException.java: * @throws IllegalArgumentException in case the response status code is not from the
./javax/ws/rs/ClientErrorException.java: * @throws IllegalArgumentException in case the response status code is not from the
./javax/ws/rs/ClientErrorException.java: * @throws IllegalArgumentException in case the status code is {@code null} or is not from
./javax/ws/rs/ClientErrorException.java: * @throws IllegalArgumentException in case the status code is {@code null} or is not from
./javax/ws/rs/ClientErrorException.java: * @throws IllegalArgumentException in case the status code is not a valid HTTP status code or
./javax/ws/rs/ClientErrorException.java: * @throws IllegalArgumentException in case the status code is not a valid HTTP status code or
./javax/ws/rs/ClientErrorException.java: * @throws IllegalArgumentException in case the response status code is not from the
./javax/ws/rs/ClientErrorException.java: * @throws IllegalArgumentException in case the response status code is not from the
./javax/ws/rs/core/CacheControl.java: * @throws IllegalArgumentException if the supplied string cannot be parsed
./javax/ws/rs/core/Cookie.java: * @throws IllegalArgumentException if name is {@code null}.
./javax/ws/rs/core/Cookie.java: throws IllegalArgumentException {
./javax/ws/rs/core/Cookie.java: throw new IllegalArgumentException("name==null");
./javax/ws/rs/core/Cookie.java: * @throws IllegalArgumentException if name is {@code null}.
./javax/ws/rs/core/Cookie.java: throws IllegalArgumentException {
./javax/ws/rs/core/Cookie.java: * @throws IllegalArgumentException if name is {@code null}.
./javax/ws/rs/core/Cookie.java: throws IllegalArgumentException {
./javax/ws/rs/core/Cookie.java: * @throws IllegalArgumentException if the supplied string cannot be parsed
./javax/ws/rs/core/EntityTag.java: * @throws IllegalArgumentException if value is {@code null}.
./javax/ws/rs/core/EntityTag.java: * @throws IllegalArgumentException if value is {@code null}.
./javax/ws/rs/core/EntityTag.java: throw new IllegalArgumentException("value==null");
./javax/ws/rs/core/EntityTag.java: * @throws IllegalArgumentException if the supplied string cannot be parsed
./javax/ws/rs/core/GenericEntity.java: * @throws IllegalArgumentException if entity is {@code null}.
./javax/ws/rs/core/GenericEntity.java: throw new IllegalArgumentException("The entity must not be null");
./javax/ws/rs/core/GenericEntity.java: * @throws IllegalArgumentException if the entity is not assignable to
./javax/ws/rs/core/GenericEntity.java: throw new IllegalArgumentException("Arguments must not be null.");
./javax/ws/rs/core/GenericEntity.java: throw new IllegalArgumentException("The type is incompatible with the class of the entity.");
./javax/ws/rs/core/GenericType.java: * the following case would throw an {@link IllegalArgumentException}:
./javax/ws/rs/core/GenericType.java: * @throws IllegalArgumentException in case the generic type parameter value is not
./javax/ws/rs/core/GenericType.java: * @throws IllegalArgumentException if genericType is {@code null} or not an instance of
./javax/ws/rs/core/GenericType.java: throw new IllegalArgumentException("Type must not be null");
./javax/ws/rs/core/GenericType.java: throw new IllegalArgumentException("Type parameter " + type.toString() + " not a class or " +
./javax/ws/rs/core/GenericType.java: throw new IllegalArgumentException(e);
./javax/ws/rs/core/GenericType.java: throw new IllegalArgumentException(currentType + " does not specify the type parameter T of GenericType<T>");
./javax/ws/rs/core/Link.java: * @throws IllegalArgumentException if a syntax error is found.
./javax/ws/rs/core/Link.java: * @throws IllegalArgumentException if uri is {@code null}.
./javax/ws/rs/core/Link.java: * @throws IllegalArgumentException if uri is {@code null}.
./javax/ws/rs/core/Link.java: * @throws IllegalArgumentException if path is {@code null}.
./javax/ws/rs/core/Link.java: * @throws IllegalArgumentException if resource is not annotated with {@link javax.ws.rs.Path}
./javax/ws/rs/core/Link.java: * @throws IllegalArgumentException if resource or method is {@code null}, or there is more
./javax/ws/rs/core/Link.java: * @throws IllegalArgumentException if string representation of URI is invalid.
./javax/ws/rs/core/Link.java: * @throws IllegalArgumentException if string representation of URI is invalid.
./javax/ws/rs/core/Link.java: * @throws IllegalArgumentException if string representation of URI is invalid.
./javax/ws/rs/core/Link.java: * @throws IllegalArgumentException if the name is {@code null}.
./javax/ws/rs/core/Link.java: * @throws IllegalArgumentException if the title is {@code null}.
./javax/ws/rs/core/Link.java: * @throws IllegalArgumentException if the type is {@code null}.
./javax/ws/rs/core/Link.java: * @throws IllegalArgumentException if either the name or value are {@code null}.
./javax/ws/rs/core/Link.java: * @throws IllegalArgumentException if there are any URI template parameters
./javax/ws/rs/core/Link.java: * @throws IllegalArgumentException if there are any URI template parameters
./javax/ws/rs/core/MediaType.java: * @throws IllegalArgumentException if the supplied string cannot be parsed
./javax/ws/rs/core/MultivaluedHashMap.java: * @throws IllegalArgumentException if the initial capacity is negative.
./javax/ws/rs/core/MultivaluedHashMap.java: * @throws IllegalArgumentException if the initial capacity is negative
./javax/ws/rs/core/NewCookie.java: * @throws IllegalArgumentException if name is {@code null}.
./javax/ws/rs/core/NewCookie.java: * @throws IllegalArgumentException if name is {@code null}.
./javax/ws/rs/core/NewCookie.java: * @throws IllegalArgumentException if name is {@code null}.
./javax/ws/rs/core/NewCookie.java: * @throws IllegalArgumentException if name is {@code null}.
./javax/ws/rs/core/NewCookie.java: * @throws IllegalArgumentException if name is {@code null}.
./javax/ws/rs/core/NewCookie.java: * @throws IllegalArgumentException if cookie is {@code null}.
./javax/ws/rs/core/NewCookie.java: * @throws IllegalArgumentException if cookie is {@code null}.
./javax/ws/rs/core/NewCookie.java: * @throws IllegalArgumentException if cookie is {@code null}.
./javax/ws/rs/core/NewCookie.java: * @throws IllegalArgumentException if the supplied string cannot be parsed
./javax/ws/rs/core/Request.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/core/Request.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/core/Request.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/core/Request.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/core/Response.java: * @throws IllegalArgumentException if status is {@code null}.
./javax/ws/rs/core/Response.java: * @throws IllegalArgumentException if status is {@code null}.
./javax/ws/rs/core/Response.java: * @throws IllegalArgumentException if status is less than {@code 100} or greater
./javax/ws/rs/core/Response.java: * @throws IllegalArgumentException if status is less than {@code 100} or greater
./javax/ws/rs/core/Response.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/core/Response.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/core/Response.java: * @throws IllegalArgumentException if tag is {@code null}.
./javax/ws/rs/core/Response.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/core/Response.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/core/Response.java: * @throws IllegalArgumentException if status is less than {@code 100} or greater
./javax/ws/rs/core/Response.java: * @throws IllegalArgumentException if status is less than {@code 100} or greater
./javax/ws/rs/core/Response.java: * @throws IllegalArgumentException if status is {@code null}.
./javax/ws/rs/core/Response.java: throw new IllegalArgumentException();
./javax/ws/rs/core/Response.java: * @throws IllegalArgumentException if status is {@code null}.
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if uri is {@code null}.
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if {@code uriTemplate} is not a valid URI template or
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if link is {@code null}
./javax/ws/rs/core/UriBuilder.java: throw new IllegalArgumentException("The provider 'link' parameter value is 'null'.");
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if path is {@code null}.
./javax/ws/rs/core/UriBuilder.java: public static UriBuilder fromPath(String path) throws IllegalArgumentException {
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if resource is not annotated with
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if resource or method is {@code null},
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if the {@code uri} parameter is {@code null}.
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if {@code uriTemplate} is not a valid URI template or
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if scheme is invalid.
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if ssp cannot be parsed or is {@code null}.
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if host is invalid.
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if port is invalid.
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if path is {@code null}.
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if resource is {@code null}, or
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if resource or method is {@code null},
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if method is {@code null} or is
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if segments or any element of segments
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if matrix cannot be parsed.
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if name or values is {@code null}.
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if name is {@code null}.
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if query cannot be parsed.
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if name or values is {@code null}.
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if name is {@code null}.
./javax/ws/rs/core/UriBuilder.java: * In case a {@code null} template name or value is entered a {@link IllegalArgumentException}
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if the resolved template name or value is {@code null}.
./javax/ws/rs/core/UriBuilder.java: * In case a {@code null} template name or value is entered a {@link IllegalArgumentException}
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if the resolved template name or value is {@code null}.
./javax/ws/rs/core/UriBuilder.java: * In case a {@code null} template name or encoded value is entered a {@link IllegalArgumentException}
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if the resolved template name or encoded value is {@code null}.
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if the name-value map or any of the names or values
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if the name-value map or any of the names or values
./javax/ws/rs/core/UriBuilder.java: throws IllegalArgumentException;
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if the name-value map or any of the names or values
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if there are any URI template parameters
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if there are any URI template parameters
./javax/ws/rs/core/UriBuilder.java: throws IllegalArgumentException, UriBuilderException;
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if there are any URI template parameters
./javax/ws/rs/core/UriBuilder.java: throws IllegalArgumentException, UriBuilderException;
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if there are any URI template parameters
./javax/ws/rs/core/UriBuilder.java: throws IllegalArgumentException, UriBuilderException;
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if there are any URI template parameters
./javax/ws/rs/core/UriBuilder.java: throws IllegalArgumentException, UriBuilderException;
./javax/ws/rs/core/UriBuilder.java: * @throws IllegalArgumentException if there are any URI template parameters
./javax/ws/rs/core/UriBuilder.java: throws IllegalArgumentException, UriBuilderException;
./javax/ws/rs/core/Variant.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/core/Variant.java: throw new IllegalArgumentException("mediaType, language, encoding all null");
./javax/ws/rs/core/Variant.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/core/Variant.java: throw new IllegalArgumentException("mediaType, language, encoding all null");
./javax/ws/rs/core/Variant.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/core/Variant.java: throw new IllegalArgumentException("mediaType, language, encoding all null");
./javax/ws/rs/core/Variant.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/core/Variant.java: throw new IllegalArgumentException("mediaType, language, encoding all null");
./javax/ws/rs/core/Variant.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/core/Variant.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/core/Variant.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/ext/ParamConverter.java: * @throws IllegalArgumentException if the supplied string cannot be
./javax/ws/rs/ext/ParamConverter.java: * @throws IllegalArgumentException if the supplied object cannot be
./javax/ws/rs/ext/RuntimeDelegate.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/ext/RuntimeDelegate.java: throws IllegalArgumentException, UnsupportedOperationException;
./javax/ws/rs/ext/RuntimeDelegate.java: * @throws java.lang.IllegalArgumentException
./javax/ws/rs/ext/RuntimeDelegate.java: throws IllegalArgumentException;
./javax/ws/rs/ext/RuntimeDelegate.java: * @throws IllegalArgumentException if the supplied string cannot be
./javax/ws/rs/ext/RuntimeDelegate.java: * @throws IllegalArgumentException if the supplied object cannot be
./javax/ws/rs/ForbiddenException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/ForbiddenException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/ForbiddenException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/ForbiddenException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/InternalServerErrorException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/InternalServerErrorException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/InternalServerErrorException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/InternalServerErrorException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotAcceptableException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotAcceptableException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotAcceptableException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotAcceptableException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotAllowedException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotAllowedException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotAllowedException.java: * @throws IllegalArgumentException in case the allowed methods varargs are {@code null}.
./javax/ws/rs/NotAllowedException.java: * @throws IllegalArgumentException in case the allowed methods varargs are {@code null}.
./javax/ws/rs/NotAllowedException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotAllowedException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotAllowedException.java: throw new IllegalArgumentException("Response does not contain required 'Allow' HTTP header.");
./javax/ws/rs/NotAuthorizedException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotAuthorizedException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotAuthorizedException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotAuthorizedException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotFoundException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotFoundException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotFoundException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotFoundException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotSupportedException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotSupportedException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotSupportedException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/NotSupportedException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/RedirectionException.java: * @throws IllegalArgumentException in case the status code is {@code null} or is not from
./javax/ws/rs/RedirectionException.java: * @throws IllegalArgumentException in case the status code is {@code null} or is not from
./javax/ws/rs/RedirectionException.java: * @throws IllegalArgumentException in case the status code is not a valid HTTP status code or
./javax/ws/rs/RedirectionException.java: * @throws IllegalArgumentException in case the status code is not a valid HTTP status code or
./javax/ws/rs/RedirectionException.java: * @throws IllegalArgumentException in case the response status code is not from the
./javax/ws/rs/RedirectionException.java: * @throws IllegalArgumentException in case the response status code is not from the
./javax/ws/rs/ServerErrorException.java: * @throws IllegalArgumentException in case the status code is {@code null} or is not from
./javax/ws/rs/ServerErrorException.java: * @throws IllegalArgumentException in case the status code is {@code null} or is not from
./javax/ws/rs/ServerErrorException.java: * @throws IllegalArgumentException in case the status code is not a valid HTTP status code or
./javax/ws/rs/ServerErrorException.java: * @throws IllegalArgumentException in case the status code is not a valid HTTP status code or
./javax/ws/rs/ServerErrorException.java: * @throws IllegalArgumentException in case the response status code is not from the
./javax/ws/rs/ServerErrorException.java: * @throws IllegalArgumentException in case the response status code is not from the
./javax/ws/rs/ServerErrorException.java: * @throws IllegalArgumentException in case the status code is {@code null} or is not from
./javax/ws/rs/ServerErrorException.java: * @throws IllegalArgumentException in case the status code is {@code null} or is not from
./javax/ws/rs/ServerErrorException.java: * @throws IllegalArgumentException in case the status code is not a valid HTTP status code or
./javax/ws/rs/ServerErrorException.java: * @throws IllegalArgumentException in case the status code is not a valid HTTP status code or
./javax/ws/rs/ServerErrorException.java: * @throws IllegalArgumentException in case the response status code is not from the
./javax/ws/rs/ServerErrorException.java: * @throws IllegalArgumentException in case the response status code is not from the
./javax/ws/rs/ServiceUnavailableException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/ServiceUnavailableException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/ServiceUnavailableException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/ServiceUnavailableException.java: * @throws IllegalArgumentException in case the status code set in the response
./javax/ws/rs/sse/Sse.java: throw new IllegalArgumentException("Parameter 'data' must not be null.");
./javax/ws/rs/sse/Sse.java: throw new IllegalArgumentException("Parameter 'data' must not be null.");
./javax/ws/rs/sse/Sse.java: throw new IllegalArgumentException("Parameter 'name' must not be null.");
./javax/ws/rs/sse/SseEventSource.java: * @throws IllegalArgumentException when the provided parameter is {@code null}.
./javax/ws/rs/sse/SseEventSource.java: * @throws IllegalArgumentException when the any of the provided parameters is {@code null}.
./javax/ws/rs/sse/SseEventSource.java: * @throws IllegalArgumentException when the any of the provided parameters is {@code null}.
./javax/ws/rs/WebApplicationException.java: * @throws IllegalArgumentException if status is {@code null}.
./javax/ws/rs/WebApplicationException.java: * @throws IllegalArgumentException if status is {@code null}.
./javax/ws/rs/WebApplicationException.java: * @throws IllegalArgumentException if status is {@code null}.
./javax/ws/rs/WebApplicationException.java: throws IllegalArgumentException {
./javax/ws/rs/WebApplicationException.java: throws IllegalArgumentException {
./javax/ws/rs/WebApplicationException.java: * @throws IllegalArgumentException if the response validation failed.
./javax/ws/rs/WebApplicationException.java: throw new IllegalArgumentException(String.format("Invalid response status code. Expected [%d], was [%d].",
./javax/ws/rs/WebApplicationException.java: * @throws IllegalArgumentException if the response validation failed.
./javax/ws/rs/WebApplicationException.java: throw new IllegalArgumentException(String.format(

On 08/07/2017 12:24, Markus KARG wrote:
Pavel, actually looking at the rest of the *API* (as you suggested) I did not find declaration of IAE, as it is solely part of the *implementation* -- it is rather undocumented that in particular IAE is to be thrown. Hence, as it is undocumented, you could not only replace it by NPE at any time in the RI (and such actually fulfil the expectation of the programmer when reading the JavaDocs), but also any other implementation could never had thrown IAE ever -- but possibly currently throws NPE. So to make your argument valid, we effectively must declare IAE in the JAX-RS JavaDocs -- and I really don't want that...

Due to the scarce time, it is ok to keept the status quo. But I don't buy your argument. ;-)

-Markus

-----Original Message-----
From: jaxrs-spec@javaee.groups.io [mailto:jaxrs-spec@javaee.groups.io] On Behalf Of Pavel Bucek
Sent: Freitag, 7. Juli 2017 18:06
To: jaxrs-spec@javaee.groups.io
Subject: Re: [jaxrs] Proposed Final Draft -- Java 8 Implementation

Well, if you look at the rest of the API, the pattern is to use IAE even when parameter is null, so .. being consistent with existing API wins over anything else..


On 07/07/2017 17:15, Markus KARG wrote:
So it is by intention that you still use IllegalArgumentException
instead of NPE. Understood. :-)

-----Original Message-----
From: jaxrs-spec@javaee.groups.io [mailto:jaxrs-spec@javaee.groups.io]
On Behalf Of Pavel Bucek
Sent: Freitag, 7. Juli 2017 08:11
To: jaxrs-spec@javaee.groups.io
Subject: Re: [jaxrs] Proposed Final Draft -- Java 8 Implementation

Hi Markus,

I'm sorry I'm responding so late, I must have missed this email.

The main issue with Object.requireNonNull is that it throws a NPE instead of IAE, so we can't really use it on most of places - and I believe checking the value and throwing the exception would be much faster than calling Object.requireNonNull, catching the exception, etc..

Regards,
Pavel


On 24/06/2017 00:01, Markus KARG wrote:
A target of JAX-RS 2.1 is support for Java 8. So I wonder why still idioms of the pre-8 age are used in the API implementation instead of Java 8 idioms. For example:

default OutboundSseEvent newEvent(String data) {
if (data == null) {
throw new IllegalArgumentException("Parameter 'data' must not be null.");
}

return newEventBuilder().data(String.class, data).build();
}

This rather looks like Java 7 style, because since Java 8 this typically would be done with Objects utility:

default OutboundSseEvent newEvent(String data) {
Objects.requireNonNull(data, "Parameter 'data' must not be null.");
return newEventBuilder().data(String.class, data).build();
}

(BTW It is simply a question of style whether one would even inline
the check instead of using two code lines, since requireNonNull
actually is function.)

The result not only is a smaller binary but also faster execution, as less custom byte code will get created, verified and loaded. Hence the shared requireNonNull method is much earlier eligible for native compilation.

-Markus

-----Original Message-----
From: jaxrs-spec@javaee.groups.io
[mailto:jaxrs-spec@javaee.groups.io]
On Behalf Of Pavel Bucek
Sent: Donnerstag, 22. Juni 2017 13:23
To: jaxrs-spec@javaee.groups.io
Subject: [jaxrs] Proposed Final Draft

Dear experts,

we'd like to announce that Proposed Final Draft was published on JCP
JSR
370 page [1].

I'd like to encourage you all to review provided artifacts and let us know if you have any feedback.

Thanks and regards,
Pavel & Santiago

[1] https://jcp.org/en/jsr/detail?id=370















Join jaxrs-spec@javaee.groups.io to automatically receive all group messages.