users@jersey.java.net

[Jersey] Re: Jersey 2.17 NPE while processing declarative hyperlinking for BigDecimal and BigInteger

From: Jakub Podlesak <jakub.podlesak_at_oracle.com>
Date: Mon, 23 Mar 2015 13:00:20 +0100

Hi Naresh,

This should have been fixed already in Jersey 2.18-SNAPSHOT version with
https://github.com/jersey/jersey/pull/149/ <https://github.com/jersey/jersey/pull/149/>

Please allow some time to have this propagated to the publicly available
Jersey maven artifacts, or just wait for the 2.18 release (which would happen
in about 2-4 weeks from now).

HTH,

~Jakub

> On 20 Mar 2015, at 20:02, naresh <baliga_naresh_at_yahoo.com> wrote:
>
> Hi,
>
> I have declarative hyperlinking enabled.
>
> I have a BigDecimal and a BigInteger in my representation and I am seeing
> the following stack trace when the content is returned:
> Mar 20, 2015 9:31:24 AM org.glassfish.jersey.linking.FieldProcessor
> processLinks
> INFO: [failed to localize] warning.linkfilter.processing([I)
> java.lang.NullPointerException
> at
> org.glassfish.jersey.linking.FieldProcessor.processLinks(FieldProcessor.java:105)
> at
> org.glassfish.jersey.linking.FieldProcessor.processMember(FieldProcessor.java:178)
> at
> org.glassfish.jersey.linking.FieldProcessor.processLinks(FieldProcessor.java:158)
> at
> org.glassfish.jersey.linking.FieldProcessor.processMember(FieldProcessor.java:178)
> at
> org.glassfish.jersey.linking.FieldProcessor.processLinks(FieldProcessor.java:158)
> at
> org.glassfish.jersey.linking.FieldProcessor.processMember(FieldProcessor.java:178)
> at
> org.glassfish.jersey.linking.FieldProcessor.processLinks(FieldProcessor.java:158)
> at
> org.glassfish.jersey.linking.FieldProcessor.processMember(FieldProcessor.java:178)
> at
> org.glassfish.jersey.linking.FieldProcessor.processLinks(FieldProcessor.java:150)
> at
> org.glassfish.jersey.linking.FieldProcessor.processMember(FieldProcessor.java:178)
> at
> org.glassfish.jersey.linking.FieldProcessor.processLinks(FieldProcessor.java:158)
> at
> org.glassfish.jersey.linking.FieldProcessor.processLinks(FieldProcessor.java:85)
> at
> org.glassfish.jersey.linking.ResponseLinkFilter.filter(ResponseLinkFilter.java:88)
>
>
> The problem seems to be here while traversing the BigDecimal or BigInteger
> for injecting links:
> org.glassfish.jersey.linking.FieldProcessor#processLinks(java.lang.Object,
> java.lang.Object, java.lang.Object, java.util.Set<java.lang.Object>,
> javax.ws.rs.core.UriInfo,
> org.glassfish.jersey.linking.mapping.ResourceMappingContext)
> Line 105:
> if (instance.getClass().getPackage().getName().equals("java.lang")) {
> return;
> }
>
>
> where instance.getClass() = "class [I" and instance.getClass().getPackage()
> == null leading to the NPE.
>
>
> While processing both the BigDecimal and BigInteger, the
> final int[] mag
> component of BigInteger causes the problem.
>
> Upon examining the code it looks like either the code in
>
> org.glassfish.jersey.linking.FieldProcessor#processLinks(java.lang.Object,
> java.lang.Object, java.lang.Object, java.util.Set<java.lang.Object>,
> javax.ws.rs.core.UriInfo,
> org.glassfish.jersey.linking.mapping.ResourceMappingContext)
> Line 105:
> if (instance.getClass().getPackage().getName().equals("java.lang")) {
> return;
> }
>
> needs to also not process the package java.Math along with java.lang.
>
> Or, the code in
>
> org.glassfish.jersey.linking.FieldProcessor#fieldSuitableForIntrospection
>
> needs to account for int[].
>
> In general, it appears primitive data type arrays break the declarative
> hyperlinking code. Which is fine, except I'm trying to return a BigDecimal
> and a BigInteger here.
>
> Any help would be appreciated.
>
>
>
>
> --
> View this message in context: http://jersey.576304.n2.nabble.com/Jersey-2-17-NPE-while-processing-declarative-hyperlinking-for-BigDecimal-and-BigInteger-tp7583204.html
> Sent from the Jersey mailing list archive at Nabble.com.