[jboss-user] [JBoss Microcontainer Development] - Issues using Javassist TypeInfoFactory in other projects

Kabir Khan do-not-reply at jboss.com
Tue Mar 30 11:35:25 EDT 2010


Kabir Khan [http://community.jboss.org/people/kabir.khan%40jboss.com] replied to the discussion

"Issues using Javassist TypeInfoFactory in other projects"

To view the discussion, visit: http://community.jboss.org/message/534679#534679

--------------------------------------------------------------
It looks like ReflectMethodImpl.setMethod() and ReflectFieldImpl.setField() do that already:
RMI:
   public void setMethod(Method method)
   {
      boolean isDeclaringClassPublic = true;
      if (method != null)
      {
         accessCheck(Modifier.isPublic(method.getModifiers()));
         isDeclaringClassPublic = isDeclaringClassPublic(method);
         accessCheck(isDeclaringClassPublic);
      }
 
      this.method = method;
 
      if (method != null && (isPublic() == false || isDeclaringClassPublic == false))
         setAccessible();
   }


RFI:
   public void setField(Field field)
   {
      if (field != null)
         accessCheck(Modifier.isPublic(field.getModifiers()));
 
      this.field = field;
 
      if (isPublic() == false && field != null)
         setAccessible();
   }


Commenting out the whole block which threw the exception for JavassistMethodInfo, and setAccessible=true for ReflectMethodInfoImpl, works with both modes

org.jboss.test.kernel.deployment.support.StaticInjector:

   private void injectToMethod(Class<?> clazz, String method, Object value, Class<?> signature, boolean isPublic) throws Throwable
   {
      ClassInfo classInfo = configurator.getClassInfo(clazz);
      MethodInfo mi = Config.findMethodInfo(classInfo, method, new String[]{signature.getName()}, true, isPublic);
//      if (isPublic == false)
//      {
//         // TODO - move this into Reflection?
//         if (mi instanceof ReflectMethodInfoImpl)
//         {
//            ReflectMethodInfoImpl rmi = (ReflectMethodInfoImpl)mi;
//            Method  m = rmi.getMethod();
//            m.setAccessible(true);
//         }
//         else
//            throw new IllegalArgumentException("Cannot set accessible on method info: " + mi);
//      }
      mi.invoke(null, new Object[]{value});
   }



 
 
 

--------------------------------------------------------------

Reply to this message by going to Community
[http://community.jboss.org/message/534679#534679]

Start a new discussion in JBoss Microcontainer Development at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2115]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20100330/c9714522/attachment.html 


More information about the jboss-user mailing list