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.