Hi all,

If I have a protected method in some circumstances on a Seam component I get an 
error when the method is called via a cglib proxy.
I get this exception thrown out of the cglib MethodProxy class.


  |                     throw new IllegalArgumentException("Protected method: " 
+ sig1);
  | 

The class structure involved..


  | @Scope( ScopeType.STATELESS )
  | public abstract class ScreenActionComponent
  | {
  |     public abstract void execute( ScreenActionMetadata 
screenActionMetadata, ScreenActionContext screenActionContext );
  | 
  |     public abstract ScreenActionMetadata[] getScreenActionMetadata( 
ScreenActionContext screenActionContext );
  | }
  | 


  | public abstract class SingleItemScreenAction extends ScreenActionComponent
  | {
  |     public final void execute( ScreenActionMetadata screenActionMetadata, 
ScreenActionContext screenActionContext )
  |     {
  |         execute( screenActionContext );
  |     }
  | 
  |     public final ScreenActionMetadata[] getScreenActionMetadata( 
ScreenActionContext screenActionContext )
  |     {
  |         if ( isValidSelection( screenActionContext ) )
  |             return new ScreenActionMetadata[]{ new 
DefaultScreenActionMetadata( getDisplay(), getTooltip(), getImage() ) };
  |         else
  |             return new ScreenActionMetadata[ 0 ];
  |     }
  | 
  |     protected abstract void execute( ScreenActionContext 
screenActionContext );
  |     protected abstract boolean isValidSelection( ScreenActionContext 
screenActionContext );
  |     protected abstract String getDisplay();
  |     protected abstract String getTooltip();
  |     protected abstract String getImage();
  | }
  | 


  | @Name( "deleteEntityScreenAction" )
  | public class DeleteEntityScreenAction extends SingleItemScreenAction
  | {
  |     @In
  |     private Session referenceSession;
  | 
  |     public void execute( ScreenActionContext screenActionContext )
  |     {
  |         // TODO
  |     }
  | 
  |     public boolean isValidSelection( ScreenActionContext 
screenActionContext )
  |     {
  |         return !screenActionContext.getSelection().isEmpty();
  |     }
  | 
  |     protected final String getDisplay()
  |     {
  |         return "Delete";
  |     }
  | 
  |     protected final String getTooltip()
  |     {
  |         return "Logically deletes the selected items";
  |     }
  | 
  |     protected final String getImage()
  |     {
  |         // TODO:
  |         return null;
  |     }
  | }
  | 

Without the final modifiers on the DeleteEntityScreenAction getXXX methods I 
get the above exception when they are called from 
SingleItemScreenAction.getScreenActionMetadata().  But obviously with the final 
modifier I get no interception/bijection etc.

Wondered if this is a known limitation in cglib or not.

Cheers.

Mike.


View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4016602#4016602

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4016602
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to