users@jersey.java.net

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

From: naresh <baliga_naresh_at_yahoo.com>
Date: Fri, 20 Mar 2015 12:02:23 -0700 (MST)

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.