Hmmmm.... given that the reflection package experienced a major refactoring between 1.3.1 and 1.4.1 I don't think mixing and matching classes between the two jars is a worthwhile expenditure of time. We may end up spending more time getting a 1.3.1/1.4.1 franken-jar working than actually solving our problem. I'm pretty satisfied that when we change the JDK we point to (and recompile), our code stops working.
I did look at the modification notes and the developers suggest that they completely reworked the BeanInfo code for performance. I'm not sure how that is causing our problem though. I have one of my developers digging into this. If we get to the bottom of it or discover anything new, I'll share it here. thanks for the suggestions thus far. > -----Original Message----- > From: Drew Zimber [mailto:drew.zimber@;shaws.com] > Sent: Thursday, November 14, 2002 3:03 PM > To: 'Struts Users Mailing List' > Subject: RE: IndexOutOfBounds error, Struts 1.1b2, J2SDK 1.4.1 > > > > > if you think thats the case, you could crack open the jar files for 1.3.x, > take out the reflection classes and replace them in the 1.4.1 jar. > > If that works then look at the modification notes in the 1.4.1 source, see > what they did and email the developers directly. > > dz > > -----Original Message----- > From: Jim Krygowski [mailto:james.krygowski@;shaws.com] > Sent: Thursday, November 14, 2002 2:49 PM > To: Struts Users Mailing List > Subject: RE: IndexOutOfBounds error, Struts 1.1b2, J2SDK 1.4.1 > > > The usage of "displaySections[0]" comes from struts itself when it > disassembles the request to determine which HTML form field values map to > what Bean properties. The identification of PropertyDescriptor vs > IndexedPropertyDescriptor is solely the realm of > BeanInfo.getPropertyDescriptor. You can see this at work in PropertyUtils > method public static PropertyDescriptor[] getPropertyDescriptors(Class > beanClass). > > So no matter what struts thinks about names, it's really all up to Java's > reflection capabilities. This is why I feel that we've got a > potential JDK > 1.4.1 issue here. > > > > > > > > -----Original Message----- > > From: Karr, David [mailto:david.karr@;attws.com] > > Sent: Thursday, November 14, 2002 2:40 PM > > To: Struts Users Mailing List > > Subject: RE: IndexOutOfBounds error, Struts 1.1b2, J2SDK 1.4.1 > > > > > > So you're telling me that in both test cases, the "name" value is > > "displaySections", and in the "before" test case, you get back an > > IndexedPropertyDescriptor, and in the "after" test case, you get > > back a PropertyDescriptor? I'm not that familiar with this code, > > but I don't see how you could get back an > > IndexedPropertyDescriptor, no matter what JDK version you're > > using. If your name value was "displaySections[<number>]" then > > you should get an IndexedPropertyDescriptor, otherwise a > > PropertyDescriptor. > > > > > -----Original Message----- > > > From: Jim Krygowski [mailto:james.krygowski@;shaws.com] > > > > > > As you suggested I delved into getDisplaySections. I found > > > that my "name" > > > value, displaySections, was inappropriately identified as an > > > PropertyDescriptor even though it is defined as an ArrayList > > > with get and > > > set methods that handle the ArrayList datatype. The funny > > > thing is that the > > > propertyType attribute of the PropertyDescriptor is ArrayList for the > > > displaySections node. > > > > > > Given this new info, what do you think is going on here? > > > > > > > > > > -----Original Message----- > > > > From: Karr, David [mailto:david.karr@;attws.com] > > > > Sent: Thursday, November 14, 2002 2:03 PM > > > > To: Struts Users Mailing List > > > > Subject: RE: IndexOutOfBounds error, Struts 1.1b2, J2SDK 1.4.1 > > > > > > > > > > > > Step through the "getPropertyDescriptor()" method, which is > > > > called just before that check. That's what makes the decision on > > > > what type to return. What is the value of "name"? > > > > > > > > > -----Original Message----- > > > > > From: Jim Krygowski [mailto:james.krygowski@;shaws.com] > > > > > Sent: Thursday, November 14, 2002 10:43 AM > > > > > To: Struts Users Mailing List > > > > > Subject: RE: IndexOutOfBounds error, Struts 1.1b2, J2SDK 1.4.1 > > > > > > > > > > > > > > > Been doing some research since my last post. Here's the > > > setup, same > > > > > application code, same struts jars, same app server switching > > > > > between JDK > > > > > 1.3.1 and 1.4.1: > > > > > > > > > > When processing a submit, in the PropertyUtils the following > > > > > check is made > > > > > in the getIndexedProperty method on or around line 468: > > > > > > > > > > if (descriptor instanceof IndexedPropertyDescriptor) { > > > > > > > > > > With JDK 1.3.1 running descriptor is indeed an > > > > > IndexedPropertyDescriptor, > > > > > but with JDK 1.4.1 I get a java.beans.PropertyDescriptor, so > > > > > the code passes > > > > > by the block that should handle the property I've passed an > > > > > onto a block of > > > > > code that results in the IndexOutOfBoundsException. > > > > > > > > > > This seems like a 1.4.1 induced bug. Should I log it in > > > > > Bugzilla? Has > > > > > anyone else seen this bug? > > > > > > > > > > > > > > > > > > > > > -----Original Message----- > > > > > > From: Jim Krygowski [mailto:james.krygowski@;shaws.com] > > > > > > Sent: Thursday, November 14, 2002 11:32 AM > > > > > > To: Struts Users Mailing List > > > > > > Subject: IndexOutOfBounds error, Struts 1.1b2, J2SDK 1.4.1 > > > > > > > > > > > > > > > > > > Hi all- > > > > > > > > > > > > we have an application originally written to struts 1.1b2 and > > > > > > J2SDK 1.3.1_03 > > > > > > that was working fine. Recently, we've been given the signal to > > > > > > upgrade to > > > > > > J2SDK 1.4.1. Fine, but now we're finding that our form > > > > > posts are failing > > > > > > with IndexOutOfBoundsException. I've traced through the Struts > > > > > > source with > > > > > > a debugger and found the problem in this block of > > > > > PropertyUtils code: > > > > > > > > > > > > // Call the property getter and return the value > > > > > > Object value = readMethod.invoke(bean, new Object[0]); > > > > > > if (!value.getClass().isArray()) { > > > > > > if (!(value instanceof java.util.List)) { > > > > > > throw new > > > > > IllegalArgumentException("Property '" + name > > > > > > + "' is not indexed"); > > > > > > } else { > > > > > > //get the List's value > > > > > > return ((java.util.List) value).get(index); > > > > > > } > > > > > > } else { > > > > > > //get the array's value > > > > > > return (Array.get(value, index)); > > > > > > } > > > > > > > > > > > > It seems to me that the line: > > > > > > > > > > > > return ((java.util.List) value).get(index) > > > > > > > > > > > > fails because the form bean just got created by Struts and > > > > > hasn't been > > > > > > populated yet. However, it works just fine when I > > > switch back to > > > > > > JDK 1.3.1. > > > > > > > > > > > > Anyone got any suggestions as to what might be happening? > > > > > > > > > > > > > > > > > > -- > > > > > > To unsubscribe, e-mail: > > > > > <mailto:struts-user-unsubscribe@;jakarta.apache.org> > > > > > For additional commands, e-mail: > > > > > <mailto:struts-user-help@;jakarta.apache.org> > > > > > > > > > > > > > > > > > > > > -- > > > > > To unsubscribe, e-mail: > > > > <mailto:struts-user-unsubscribe@;jakarta.apache.org> > > > > For additional commands, e-mail: > > > <mailto:struts-user-help@;jakarta.apache.org> > > > > > > -- > > > To unsubscribe, e-mail: > > > <mailto:struts-user-unsubscribe@;jakarta.apache.org> > > > For additional commands, e-mail: > > > <mailto:struts-user-help@;jakarta.apache.org> > > > > > > > > > > > > -- > > > To unsubscribe, e-mail: > > <mailto:struts-user-unsubscribe@;jakarta.apache.org> > > For additional commands, e-mail: > <mailto:struts-user-help@;jakarta.apache.org> > > -- > To unsubscribe, e-mail: > <mailto:struts-user-unsubscribe@;jakarta.apache.org> > For additional commands, e-mail: > <mailto:struts-user-help@;jakarta.apache.org> > > > > -- > To unsubscribe, e-mail: > <mailto:struts-user-unsubscribe@;jakarta.apache.org> > For additional commands, e-mail: > <mailto:struts-user-help@;jakarta.apache.org> > > > -- > To unsubscribe, e-mail: <mailto:struts-user-unsubscribe@;jakarta.apache.org> For additional commands, e-mail: <mailto:struts-user-help@;jakarta.apache.org> -- To unsubscribe, e-mail: <mailto:struts-user-unsubscribe@;jakarta.apache.org> For additional commands, e-mail: <mailto:struts-user-help@;jakarta.apache.org>

