Re: [Axis2 0.95] SERIOUS BUG FIX + Recursive data types and choice particles
Thanks for the quick response. Looking into the issues now On 3/27/06, Chuck Williams <[EMAIL PROTECTED]> wrote: > Thanks Ajith! I've posted a new issue > (http://issues.apache.org/jira/browse/AXIS2-523) with the > patches rather than applying them to the separate issues since I didn't have > the patches separated. Hope this is not too troublesome. > > As I use jira for other Apache projects (e.g., Lucene), I should have known > better. > > I greatly appreciate you efforts and that of the whole Axis2 team! > > Chuck > > > > "Ajith Ranabahu" <[EMAIL PROTECTED]> wrote on 03/26/2006 07:08:46 > PM: > > > > Hi Chuck, > Thanks a lot for the update. I've already added the mentioned issues > to the Jira. Just for the record, it is better if you can attach the > patch into the Jira since Jira has this grant licence thing. So ASF is > safe if the patch came through Jira. > BTW we very much appreciate your efforts with Axis2. Hopefully we'll > be able to have all the features you guys need in Axis2 1.0 release > > Ajith > > On 3/27/06, Chuck Williams <[EMAIL PROTECTED]> wrote: > > > Ajith, > > Thanks for the update. Since I need choice to upgrade to 0.95, I went > ahead and implemented it. > > ** In the course of this, I found a serious issue in 0.95. The > setting of the choice variable in ADBBeanTemplate is checked in, > but with the wrong code. It is always true, which messes up the pull > parser seriously. I.e., for non-choice beans, there are local trackers > and all but one are false, so code that looks for these will miss valid > properties! > > There is another serious issue, in that a bug I reported earlier was > propagated into commons. Specifically, OMStAXWrapper does not obey the > contract of getElementText() -- it does not leave the reader at the end > element. I had to work around that bug in the parser, and hope it gets > fixed. There is a detailed comment with the workaround. > > The attached patches resolve these issues: > > > Correct the improper setting of choice that causes Axis2 to think all adb > beans are choices. > > Implement choice > Fix recursive data types > Probably fix general cases still in the parser for minOccurs=0 (e.g., the > event following an empty array need not be the outer end element) and where > subelements with same name as parent element would not work. (I didn't > trigger these problems with tests, but they seem to be there from looking at > the code -- they are definitely not there with the patch.) > > Fix pull parser for serialization of 0-length arrays > Work around the OMStAXWrapper problem with getElementText() All Axis2 tests > pass, and our application which has complex wsdl runs properly. > > Thanks, > > Chuck > > > Ajith Ranabahu wrote: > Hi Chuck, > Sorry for the late answer but adding choice support is still underway. > We have marked choice support as a requirement for 1.0. > I'll see to that recursive datatypes are handled properly with your pach. > > On 3/26/06, Chuck Williams <[EMAIL PROTECTED]> wrote: > > > This time with the attachment: > > > > Chuck Williams <[EMAIL PROTECTED]> wrote on 03/26/2006 01:41:54 AM: > > > > Hi All, > > Axis2 0.95 still does not handle recursive data types properly. The > SchemaCompiler recurses infinitely and generates a stack overflow. I've > attached my patch to fix this upgraded for 0.95. This is a patch > against modules/codegen/src. > > I see that much of the code to implement choice particles was committed, > but that the new parser does not handle them. I need to get them > working again. Is there already work underway to do this, and/or was an > approach determined? If so, I'd appreciate any information about that. > If not, I'll figure out how to do it with the new parser and send > another patch. > > Thanks, > > Chuck > > > > > > > > -- > Ajith Ranabahu > > > > > > > -- > Ajith Ranabahu > > > -- Ajith Ranabahu
Re: [Axis2 0.95] SERIOUS BUG FIX + Recursive data types and choice particles
Thanks Ajith! I've posted a new issue (http://issues.apache.org/jira/browse/AXIS2-523) with the patches rather than applying them to the separate issues since I didn't have the patches separated. Hope this is not too troublesome. As I use jira for other Apache projects (e.g., Lucene), I should have known better. I greatly appreciate you efforts and that of the whole Axis2 team! Chuck "Ajith Ranabahu" <[EMAIL PROTECTED]> wrote on 03/26/2006 07:08:46 PM: Hi Chuck, Thanks a lot for the update. I've already added the mentioned issues to the Jira. Just for the record, it is better if you can attach the patch into the Jira since Jira has this grant licence thing. So ASF is safe if the patch came through Jira. BTW we very much appreciate your efforts with Axis2. Hopefully we'll be able to have all the features you guys need in Axis2 1.0 release Ajith On 3/27/06, Chuck Williams <[EMAIL PROTECTED]> wrote: Ajith, Thanks for the update. Since I need choice to upgrade to 0.95, I went ahead and implemented it. ** In the course of this, I found a serious issue in 0.95. The setting of the choice variable in ADBBeanTemplate is checked in, but with the wrong code. It is always true, which messes up the pull parser seriously. I.e., for non-choice beans, there are local trackers and all but one are false, so code that looks for these will miss valid properties! There is another serious issue, in that a bug I reported earlier was propagated into commons. Specifically, OMStAXWrapper does not obey the contract of getElementText() -- it does not leave the reader at the end element. I had to work around that bug in the parser, and hope it gets fixed. There is a detailed comment with the workaround. The attached patches resolve these issues: Correct the improper setting of choice that causes Axis2 to think all adb beans are choices. Implement choice Fix recursive data types Probably fix general cases still in the parser for minOccurs=0 (e.g., the event following an empty array need not be the outer end element) and where subelements with same name as parent element would not work. (I didn't trigger these problems with tests, but they seem to be there from looking at the code -- they are definitely not there with the patch.) Fix pull parser for serialization of 0-length arrays Work around the OMStAXWrapper problem with getElementText() All Axis2 tests pass, and our application which has complex wsdl runs properly. Thanks, Chuck Ajith Ranabahu wrote: Hi Chuck, Sorry for the late answer but adding choice support is still underway. We have marked choice support as a requirement for 1.0. I'll see to that recursive datatypes are handled properly with your pach. On 3/26/06, Chuck Williams <[EMAIL PROTECTED]> wrote: This time with the attachment: Chuck Williams <[EMAIL PROTECTED]> wrote on 03/26/2006 01:41:54 AM: Hi All, Axis2 0.95 still does not handle recursive data types properly. The SchemaCompiler recurses infinitely and generates a stack overflow. I've attached my patch to fix this upgraded for 0.95. This is a patch against modules/codegen/src. I see that much of the code to implement choice particles was committed, but that the new parser does not handle them. I need to get them working again. Is there already work underway to do this, and/or was an approach determined? If so, I'd appreciate any information about that. If not, I'll figure out how to do it with the new parser and send another patch. Thanks, Chuck -- Ajith Ranabahu -- Ajith Ranabahu
Re: [Axis2 0.95] SERIOUS BUG FIX + Recursive data types and choice particles
Hi Chuck, Thanks a lot for the update. I've already added the mentioned issues to the Jira. Just for the record, it is better if you can attach the patch into the Jira since Jira has this grant licence thing. So ASF is safe if the patch came through Jira. BTW we very much appreciate your efforts with Axis2. Hopefully we'll be able to have all the features you guys need in Axis2 1.0 release Ajith On 3/27/06, Chuck Williams <[EMAIL PROTECTED]> wrote: > Ajith, > > Thanks for the update. Since I need choice to upgrade to 0.95, I went > ahead and implemented it. > > ** In the course of this, I found a serious issue in 0.95. The > setting of the choice variable in ADBBeanTemplate is checked in, > but with the wrong code. It is always true, which messes up the pull > parser seriously. I.e., for non-choice beans, there are local trackers > and all but one are false, so code that looks for these will miss valid > properties! > > There is another serious issue, in that a bug I reported earlier was > propagated into commons. Specifically, OMStAXWrapper does not obey the > contract of getElementText() -- it does not leave the reader at the end > element. I had to work around that bug in the parser, and hope it gets > fixed. There is a detailed comment with the workaround. > > The attached patches resolve these issues: > > > Correct the improper setting of choice that causes Axis2 to think all adb > beans are choices. > > Implement choice > Fix recursive data types > Probably fix general cases still in the parser for minOccurs=0 (e.g., the > event following an empty array need not be the outer end element) and where > subelements with same name as parent element would not work. (I didn't > trigger these problems with tests, but they seem to be there from looking at > the code -- they are definitely not there with the patch.) > > Fix pull parser for serialization of 0-length arrays > Work around the OMStAXWrapper problem with getElementText() All Axis2 tests > pass, and our application which has complex wsdl runs properly. > > Thanks, > > Chuck > > > Ajith Ranabahu wrote: > Hi Chuck, > Sorry for the late answer but adding choice support is still underway. > We have marked choice support as a requirement for 1.0. > I'll see to that recursive datatypes are handled properly with your pach. > > On 3/26/06, Chuck Williams <[EMAIL PROTECTED]> wrote: > > > This time with the attachment: > > > > Chuck Williams <[EMAIL PROTECTED]> wrote on 03/26/2006 01:41:54 AM: > > > > Hi All, > > Axis2 0.95 still does not handle recursive data types properly. The > SchemaCompiler recurses infinitely and generates a stack overflow. I've > attached my patch to fix this upgraded for 0.95. This is a patch > against modules/codegen/src. > > I see that much of the code to implement choice particles was committed, > but that the new parser does not handle them. I need to get them > working again. Is there already work underway to do this, and/or was an > approach determined? If so, I'd appreciate any information about that. > If not, I'll figure out how to do it with the new parser and send > another patch. > > Thanks, > > Chuck > > > > > > > > -- > Ajith Ranabahu > > > > -- Ajith Ranabahu
Re: [Axis2 0.95] SERIOUS BUG FIX + Recursive data types and choice particles
Ajith, Thanks for the update. Since I need choice to upgrade to 0.95, I went ahead and implemented it. ** In the course of this, I found a serious issue in 0.95. The setting of the choice variable in ADBBeanTemplate is checked in, but with the wrong code. It is always true, which messes up the pull parser seriously. I.e., for non-choice beans, there are local trackers and all but one are false, so code that looks for these will miss valid properties! There is another serious issue, in that a bug I reported earlier was propagated into commons. Specifically, OMStAXWrapper does not obey the contract of getElementText() -- it does not leave the reader at the end element. I had to work around that bug in the parser, and hope it gets fixed. There is a detailed comment with the workaround. The attached patches resolve these issues: Correct the improper setting of choice that causes Axis2 to think all adb beans are choices. Implement choice Fix recursive data types Probably fix general cases still in the parser for minOccurs=0 (e.g., the event following an empty array need not be the outer end element) and where subelements with same name as parent element would not work. (I didn't trigger these problems with tests, but they seem to be there from looking at the code -- they are definitely not there with the patch.) Fix pull parser for serialization of 0-length arrays Work around the OMStAXWrapper problem with getElementText() All Axis2 tests pass, and our application which has complex wsdl runs properly. Thanks, Chuck Ajith Ranabahu wrote: Hi Chuck, Sorry for the late answer but adding choice support is still underway. We have marked choice support as a requirement for 1.0. I'll see to that recursive datatypes are handled properly with your pach. On 3/26/06, Chuck Williams <[EMAIL PROTECTED]> wrote: This time with the attachment: Chuck Williams <[EMAIL PROTECTED]> wrote on 03/26/2006 01:41:54 AM: Hi All, Axis2 0.95 still does not handle recursive data types properly. The SchemaCompiler recurses infinitely and generates a stack overflow. I've attached my patch to fix this upgraded for 0.95. This is a patch against modules/codegen/src. I see that much of the code to implement choice particles was committed, but that the new parser does not handle them. I need to get them working again. Is there already work underway to do this, and/or was an approach determined? If so, I'd appreciate any information about that. If not, I'll figure out how to do it with the new parser and send another patch. Thanks, Chuck -- Ajith Ranabahu diff -urx .svn adb.src.orig/org/apache/axis2/databinding/utils/ADBPullParser.java adb.src.new/org/apache/axis2/databinding/utils/ADBPullParser.java --- adb.src.orig/org/apache/axis2/databinding/utils/ADBPullParser.java 2006-03-26 16:32:21.0 -1000 +++ adb.src.new/org/apache/axis2/databinding/utils/ADBPullParser.java 2006-03-26 16:51:33.0 -1000 @@ -281,12 +281,15 @@ Object object = properties[currentIndex]; if (object instanceof String[]) { +if (((String[])object).length==0) { +currentIndex += 2; +return this.next(); +} + complexStringArrayName = (QName) o; complexObjectArray = object; secondArrayIndex = 0; -complexObjectArray = object; -secondArrayIndex = 0; processingComplexADBNameValuePair = true; // use the simple name value pair processing recursively @@ -297,6 +300,12 @@ } else if (object instanceof Object[]) { + +if (((Object[])object).length==0) { +currentIndex += 2; +return this.next(); +} + secondArrayIndex = 0; complexArray = (Object[]) object; complexArrayQName = (QName) o; Only in adb.src.new/org/apache/axis2/databinding/utils: ADBPullParser.java~ diff -urx .svn codegen.src.orig/org/apache/axis2/schema/SchemaCompiler.java codegen.src.new/org/apache/axis2/schema/SchemaCompiler.java --- codegen.src.orig/org/apache/axis2/schema/SchemaCompiler.java 2006-03-25 12:23:50.0 -1000 +++ codegen.src.new/org/apache/axis2/schema/SchemaCompiler.java 2006-03-25 21:55:26.0 -1000 @@ -381,7 +381,8 @@ //set a name schemaType.setName(generatedTypeName.getLocalPart()); writeComplexType((XmlSchemaComplexType)schemaType, -(BeanWriterMetaInfoHolder)processedAnonymousComplexTypesMap.get(xsElt)); +(BeanWriterMetaInfoHolder)processedAnonymousComplexTypesMap.get(xsElt), +null);