[ http://jira.codehaus.org/browse/QDOX-205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=212839#action_212839 ]
Lukasz Dywicki commented on QDOX-205: ------------------------------------- Robert - yes you answer resolved first problem - the getSuperClass returns correct type with generic information.. After your response I also found resolution of no generic information about implemented interfaces in "GenericControllerImpl": {code:lang=java} source = builder.addSource(new File("GenericControllerImpl.java")); System.out.println(source.getClasses()[0].getImplements()[0].asType()); // Type contains actualArgumentTypes {code} The problem I still have is type level variables - to get this kind of information from Type I have to access actualArgumentTypes in Type class: {code:lang=java} Field declaredField = tz.getClass().getDeclaredField("actualArgumentTypes"); declaredField.setAccessible(true); return (Type[]) declaredField.get(tz); {code} Is there any other way of getting this stuff? Second thing is - how to get generic class type variables? Code below don't contain any information about generic declaration and I can't find any method in JavaClass to check if class is generic. {code:lang=java} source = builder.addSource(new File("GenericController.java")); source.getClasses()[0].asType().getGenericValue(); {code} Regards, Lukasz > Broken inheritance hierarchy when using generic parent class > ------------------------------------------------------------ > > Key: QDOX-205 > URL: http://jira.codehaus.org/browse/QDOX-205 > Project: QDox > Issue Type: Bug > Affects Versions: 1.10.1 > Reporter: Lukasz Dywicki > > I have two classes where first (GenericControllerImpl) is some generic > purpose controller with common CRUD methods. Second class > (GroupControllerImpl) extends parent to add some REST methods. > With QDox I can't resolve type variables from GenericControllerImpl. > JavaClass returned after parsing GroupControllerImpl also has no parent class. > Code > {code:lang=java|title=Test code} > JavaDocBuilder builder = new JavaDocBuilder(); > JavaSource source = builder.addSource(new > File("GroupControllerImpl.java")); > System.out.println(source.getClasses()[0].getParentClass()); > source = builder.addSource(new File("GenericControllerImpl.java")); > > System.out.println(source.getClasses()[0].getImplementedInterfaces()[0].asType()); > {code} > Classes looks next: > {code:lang=java|title=GroupControllerImpl} > package org.code_house.web; > import org.code_house.dataaccess.GroupDAO; > import org.code_house.domain.Group; > import org.springframework.beans.factory.annotation.Autowired; > import org.springframework.web.bind.annotation.ModelAttribute; > import org.springframework.web.bind.annotation.RequestMapping; > public class GroupControllerImpl extends > GenericControllerImpl<Group, Long, GroupDAO> { > @Autowired > public void setUserDao(GroupDAO dao) { > this.dao = dao; > } > @RequestMapping("/x") > @ModelAttribute("test") > public Boolean doSomething() { > return null; > } > } > {code} > {code:lang=java|title=GenericControllerImpl.java} > package org.code_house.web; > import java.util.List; > import org.code_house.dataaccess.GenericDAO; > import org.springframework.beans.factory.InitializingBean; > import org.springframework.util.Assert; > import org.springframework.web.bind.annotation.PathVariable; > import org.springframework.web.bind.annotation.RequestBody; > import org.springframework.web.bind.annotation.RequestMapping; > public abstract class GenericControllerImpl<T, K, D extends GenericDAO<T, K>> > implements GenericController<T, K>, InitializingBean { > protected D dao; > @RequestMapping > public T create(@RequestBody T object) { > dao.create(object); > return object; > } > @RequestMapping > public Boolean update(@PathVariable K id, @RequestBody T object) { > dao.update(object); > return true; > } > @RequestMapping > public T read(@PathVariable K id) { > return dao.readById(id); > } > @RequestMapping > public Boolean remove(@PathVariable K id) { > return dao.deleteById(id); > } > @RequestMapping > public List<T> getAllRecords() { > return dao.getAll(); > } > public void afterPropertiesSet() { > Assert.notNull(dao); > } > } > {code} -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email