Keith, No problem. It's a huge package, and I don't know of a lot of things in the architecture. My patch solved my problems, but, of course, as the community we would appreciate more generalized solutions.
Also, I'll use 'diff -u' next time. Ozgur -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Keith Visco Sent: Tuesday, February 19, 2002 12:27 AM To: [EMAIL PROTECTED] Subject: Re: [castor-dev] fix for bug 838 Hi Ozgur, I believe your patch is incorrect. It appears to fix the problem for this specific example, but in reality it doesn't fix the problem and actually causes other problems. The descriptors are already being checked in the proper order. The XMLFieldDescriptor takes higher priority over the ClassDescriptor. The real problem is that the generated source code is using the incorrect namespace in the generated field descriptor. Thanks for trying to fix the problem however. I'll see if I can get the real fix into the builder package. I appreciate your continued contributions. Thanks, --Keith Ozgur Balsoy wrote: > > I have checked this bug with the today's (2/18/02) CVS copy, and it is > still there. (http://bugzilla.exolab.org/show_bug.cgi?id=838) > > I think the problem is the following: > > In this section (lines 951-956) of Marshaller, there are two > descriptors: descriptor and classDesc. The former belongs to the current > or parent element while the latter is searched for a child element. The > current namespace decision is ill-structured because if the parent > element has a namespace defined, this code disregards the child's > namespace. It assumes they are the same. However, if the child element > is from another namespace it is not reflected here. > > This is a similar example to the one submitted on the bug report. > > <?xml version="1.0"?> > <x2:TwoThing xmlns:x1="bugtest1" xmlns:x2="bugtest2"> > <x2:OneThing>HELLO</x2:OneThing> > </x2:TwoThing> > > This is after the patch: > > <?xml version="1.0"?> > <x2:TwoThing xmlns:x1="bugtest1" xmlns:x2="bugtest2"> > <x1:OneThing>HELLO</x1:OneThing> > </x2:TwoThing> > > The following is my patch for this problem. This problem also exists for > unbounded content models because each XXXXItem classes generated by > SourceGen assumes that XXXXItem classes are in the same namespace and > wrongfully set child elements' namespaces. > > Ozgur > > cvs diff Marshaller.java (in directory > C:\java\castor\castor\src\main\org\exolab\castor\xml\) > Index: Marshaller.java > =================================================================== > RCS file: > /cvs/castor/castor/src/main/org/exolab/castor/xml/Marshaller.java,v > retrieving revision 1.93 > diff -r1.93 Marshaller.java > 951,952c951,952 > < String nsPrefix = descriptor.getNameSpacePrefix(); > < if (nsPrefix == null) nsPrefix = > classDesc.getNameSpacePrefix(); > --- > > String nsPrefix = classDesc.getNameSpacePrefix(); > > if (nsPrefix == null) nsPrefix = > descriptor.getNameSpacePrefix(); > 954,955c954,955 > < String nsURI = descriptor.getNameSpaceURI(); > < if (nsURI == null) nsURI = classDesc.getNameSpaceURI(); > --- > > String nsURI = classDesc.getNameSpaceURI(); > > if (nsURI == null) nsURI = descriptor.getNameSpaceURI(); > > ----------------------------------------------------------- > If you wish to unsubscribe from this mailing, send mail to > [EMAIL PROTECTED] with a subject of: > unsubscribe castor-dev ----------------------------------------------------------- If you wish to unsubscribe from this mailing, send mail to [EMAIL PROTECTED] with a subject of: unsubscribe castor-dev ----------------------------------------------------------- If you wish to unsubscribe from this mailing, send mail to [EMAIL PROTECTED] with a subject of: unsubscribe castor-dev
