Re: [Axis2 0.95] SERIOUS BUG FIX + Recursive data types and choice particles

2006-03-26 Thread Ajith Ranabahu
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

2006-03-26 Thread Chuck Williams




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

2006-03-26 Thread Ajith Ranabahu
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

2006-03-26 Thread Chuck Williams




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);