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

Reply via email to