[jboss-jira] [JBoss JIRA] Moved: (JBREFLECT-14) AbstractBeanInfoFactory throws StringIndexOutOfBoundsException for short method names

Adrian Brock (JIRA) jira-events at lists.jboss.org
Thu Feb 28 11:14:57 EST 2008


     [ http://jira.jboss.com/jira/browse/JBREFLECT-14?page=all ]

Adrian Brock moved JBMICROCONT-229 to JBREFLECT-14:
---------------------------------------------------

              Project: JBoss Reflection  (was: JBoss MicroContainer)
                  Key: JBREFLECT-14  (was: JBMICROCONT-229)
          Component/s: BeanInfo
                           (was: Container)
        Fix Version/s: JBossReflection.2.0.0.CR1
                           (was: JBossMC-2.0.0.CR1)
    Affects Version/s:     (was:  JBossMC-2.0.0.Beta7)

> AbstractBeanInfoFactory throws StringIndexOutOfBoundsException for short method names
> -------------------------------------------------------------------------------------
>
>                 Key: JBREFLECT-14
>                 URL: http://jira.jboss.com/jira/browse/JBREFLECT-14
>             Project: JBoss Reflection
>          Issue Type: Bug
>          Components: BeanInfo
>            Reporter: Brian Stansberry
>         Assigned To: Adrian Brock
>             Fix For: JBossReflection.2.0.0.CR1
>
>
> Creating a bean of a type that contains a method whose name is 2 chars or less results in the following:
> java.lang.StringIndexOutOfBoundsException: String index out of range: -1
> 	at java.lang.String.substring(String.java:1768)
> 	at java.lang.String.substring(String.java:1735)
> 	at org.jboss.beans.info.plugins.AbstractBeanInfoFactory.getUpperPropertyName(AbstractBeanInfoFactory.java:93)
> 	at org.jboss.beans.info.plugins.AbstractBeanInfoFactory.getBeanProperties(AbstractBeanInfoFactory.java:234)
> 	at org.jboss.beans.info.plugins.AbstractBeanInfoFactory.getBeanInfo(AbstractBeanInfoFactory.java:141)
> 	at org.jboss.config.plugins.AbstractConfiguration.getBeanInfo(AbstractConfiguration.java:71)
> 	at org.jboss.kernel.plugins.config.AbstractKernelConfig.getBeanInfo(AbstractKernelConfig.java:55)
> 	at org.jboss.kernel.plugins.config.AbstractKernelConfigurator.getBeanInfo(AbstractKernelConfigurator.java:65)
> 	at org.jboss.kernel.plugins.config.AbstractKernelConfigurator.getBeanInfo(AbstractKernelConfigurator.java:84)
> 	at org.jboss.kernel.plugins.dependency.PreInstallAction.installActionInternal(PreInstallAction.java:62)
> 	at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.installAction(KernelControllerContextAction.java:135)
> 	at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.installAction(KernelControllerContextAction.java:46)
> 	at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
> 	at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
> 	at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
> 	at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:327)
> 	at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1309)
> 	at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:734)
> 	at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:862)
> 	at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:784)
> 	at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:574)
> 	at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:398)
> 	at org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:69)
>         ...
> This is from attempt to create an instance of org.jgroups.JChannel, which includes a method named up().
> Problem is in AbstractBeanInfoFactory:
> protected static String getUpperPropertyName(String name)
> {
>       int start = 3;
>       if (name.startsWith("is"))
>          start = 2;
>       
>       return name.substring(start);
> }
> A simple fix is to make the first line
> int start = Math.min(3, name.length);
> which will result in a return value of "" from name.substring(start) if name is 3 chars or less.
> Alternatively, change getBeanProperties() to not call getUpperPropertyName() until it has already determined the method is a getter or a setter.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list