Reflections uses wrong argument causing IllegalArgumentExcep
boevink Feb 6, 2008 6:35 AMHi,
I'm trying to use an abstract class for some stateful beans that use a lot of similair functionality.
But I'm having a lot of trouble using in-/outjections in combination with reflection.
My abstract class:
package common.selectableMap;
//imports....
@Scope(ScopeType.CONVERSATION)
public abstract class AbstractMap
{
@Logger protected Log log;
@In FacesMessages facesMessages;
@In(create=true) protected Map<String, String> messages;
@PersistenceContext (type=PersistenceContextType.EXTENDED)
private EntityManager em;
protected EntityQuery resultList;
protected Map<Serializable, Boolean> checkedEntities;
@Destroy @Remove
public abstract void destroy();
@Begin(join=true)
public void begin()
{
log.info("abstractMap begin: " + getClass().getName());
if (checkedEntities == null)
{
checkedEntities = new HashMap<Serializable, Boolean>();
}
}
}
The 'resultList' and 'checkedEntities' attributes are reflected by the subclass and will be in-/outjected by the subclass.
My subclass:
package common.selectableMap;
// imports....
@Stateful
@Name("userMap")
public class UserMap extends AbstractMap implements MapManager
{
@Override
@Destroy @Remove
public void destroy() {
}
@Out (scope=ScopeType.CONVERSATION, value="checkUsers")
public Map<Serializable, Boolean> getCheckedEntities() {
return checkedEntities;
}
public void setCheckedEntities(Map<Serializable, Boolean> checkedEntities) {
this.checkedEntities = checkedEntities;
}
@In (required=false, value="resultList", scope=ScopeType.CONVERSATION)
public EntityQuery getResultList() {
return resultList;
}
public void setResultList(Object resultList) {
}
}
This however causes an exception when using them:
Caused by: java.lang.IllegalArgumentException: Could not invoke method by reflection: UserMap.getResultList() with parameters: (null) on: nl.wkm.orionglobe.web.entity.common.selectableMap.UserMap at org.jboss.seam.util.Reflections.invoke(Reflections.java:31) at org.jboss.seam.Component.setPropertyValue(Component.java:1765) ... 119 more Caused by: java.lang.IllegalArgumentException: wrong number of arguments at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.seam.util.Reflections.invoke(Reflections.java:21) ... 120 more
Why does the UserMap.getResultList() get called with a 'null' parameter?
(It realy is, as I've checked while debugging)
It should not use a parameter at all!