[ 
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


Reply via email to