[jboss-user] [JBoss Seam] - Reflections uses wrong argument causing IllegalArgumentExcep
boevink
do-not-reply at jboss.com
Wed Feb 6 06:35:48 EST 2008
Hi,
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!
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4126955#4126955
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4126955
More information about the jboss-user
mailing list