Atul Kumar created WINK-383:
-------------------------------
Summary: java.lang.ClassCastException while using generic
List/Asset classes
Key: WINK-383
URL: https://issues.apache.org/jira/browse/WINK-383
Project: Wink
Issue Type: Bug
Components: Common, Server
Affects Versions: 1.2
Environment: Windows 7, Websphere Application Server 8.5, Rational
Software Architect 8.5.1
Reporter: Atul Kumar
Priority: Blocker
Hi,
I was trying to use Generics in the JAXB-annotated list classes.
In the application, there are different types of 'Members'. So, I tried
creating a generic MemberList class and a corresponding MemberListAsset class.
On invoking the resource method, the path is resolved correctly, but it throws
following exception:
[ERROR ] SRVE0777E: Exception thrown by application class
'org.apache.wink.common.internal.providers.entity.xml.AbstractJAXBProvider.findXmlJavaTypeAdapter():590'
java.lang.ClassCastException:
sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl incompatible with
java.lang.Class
at
org.apache.wink.common.internal.providers.entity.xml.AbstractJAXBProvider.findXmlJavaTypeAdapter(AbstractJAXBProvider.java:590)
at
org.apache.wink.common.internal.providers.entity.xml.AbstractJAXBProvider.getXmlJavaTypeAdapter(AbstractJAXBProvider.java:573)
at
org.apache.wink.common.internal.providers.entity.xml.AbstractJAXBProvider.marshalWithXmlAdapter(AbstractJAXBProvider.java:546)
at
org.apache.wink.common.internal.providers.entity.xml.JAXBXmlProvider.writeTo(JAXBXmlProvider.java:176)
at
org.apache.wink.common.internal.providers.entity.AssetProvider.writeTo(AssetProvider.java:108)
at
org.apache.wink.server.internal.handlers.FlushResultHandler.handleResponse(FlushResultHandler.java:199)
at
org.apache.wink.server.handlers.AbstractHandler.handleResponse(AbstractHandler.java:38)
at
org.apache.wink.server.handlers.ResponseHandlersChain.handle(ResponseHandlersChain.java:26)
at
org.apache.wink.server.handlers.ResponseHandlersChain.handle(ResponseHandlersChain.java:22)
at
org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:75)
at
org.apache.wink.server.handlers.AbstractHandler.handleResponse(AbstractHandler.java:39)
at
org.apache.wink.server.handlers.ResponseHandlersChain.handle(ResponseHandlersChain.java:26)
at
org.apache.wink.server.handlers.ResponseHandlersChain.handle(ResponseHandlersChain.java:22)
at
org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:75)
at
org.apache.wink.server.handlers.AbstractHandler.handleResponse(AbstractHandler.java:39)
at
org.apache.wink.server.handlers.ResponseHandlersChain.handle(ResponseHandlersChain.java:26)
at
org.apache.wink.server.handlers.ResponseHandlersChain.handle(ResponseHandlersChain.java:22)
at
org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:75)
at
org.apache.wink.server.internal.log.Responses.handleResponse(Responses.java:90)
at
org.apache.wink.server.handlers.ResponseHandlersChain.handle(ResponseHandlersChain.java:26)
at
org.apache.wink.server.handlers.ResponseHandlersChain.handle(ResponseHandlersChain.java:22)
at
org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:75)
at
org.apache.wink.server.handlers.AbstractHandlersChain.run(AbstractHandlersChain.java:60)
at
org.apache.wink.server.internal.RequestProcessor.handleRequestWithoutFaultBarrier(RequestProcessor.java:212)
at
org.apache.wink.server.internal.RequestProcessor.handleRequest(RequestProcessor.java:154)
at
org.apache.wink.server.internal.servlet.RestServlet.service(RestServlet.java:124)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1221)
at [internal classes]
********************************************************
MemberList.java
********************************************************
package entities.tr.collections;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "MemberList")
public class MemberList <T_Member> {
List<T_Member> reviewMember;
public MemberList() {
}
public MemberList(List<T_Member> review) {
this.reviewMember = review;
}
public List<T_Member> getReviewMembers() {
return reviewMember;
}
public void add(T_Member revMember){
this.reviewMember.add(revMember);
}
}
****************************************************
MemberListAsset.java
****************************************************
package com.ibm.tr.assets;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.apache.wink.common.annotations.Asset;
import entities.tr.collections.MemberList;
import entities.tr.review.ReviewGroupMember;
import entities.tr.review.ReviewMember;
@Asset
public class MemberListAsset {
private List<ReviewMember> reviewMemberList;
private List<ReviewGroupMember> reviewGroupMemberList;
public void setReviewMemberList(List<ReviewMember> reviewMemberList) {
this.reviewMemberList = new
ArrayList<ReviewMember>(reviewMemberList.size());
this.reviewMemberList.addAll(reviewMemberList);
}
public void setReviewGroupMemberList(List<ReviewGroupMember>
reviewGroupMemberList) {
this.reviewGroupMemberList = new
ArrayList<ReviewGroupMember>(reviewGroupMemberList.size());
this.reviewGroupMemberList.addAll(reviewGroupMemberList);
}
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public MemberList<ReviewMember> getReviewMemberList() {
return new
entities.tr.collections.MemberList<ReviewMember>(reviewMemberList);
}
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public MemberList<ReviewGroupMember> getReviewGroupMemberList() {
return new
entities.tr.collections.MemberList<ReviewGroupMember>(reviewGroupMemberList);
}
}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira