Hello Sean, (sorry for the double E-Mail)

> I gets some similar validation error from the DefaultValidationEventHandler.
> It seems JAXB is does the validation by inspecting the Settings class
> instead of reaching out to find the actual .xsd file. This might be the
> reason why unmarshaling returns a incomplete Setting object(packed with
> default values).

Did you re-generate the code in org.jooq.conf? Specifically, the
package-info.java should now read:

@javax.xml.bind.annotation.XmlSchema(namespace =
"http://www.jooq.org/xsd/jooq-runtime-3.0.0.xsd";, elementFormDefault =
javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package org.jooq.conf;

As you can see, the elementFormDefault has found its way into the annotations

> As you may have already been aware, the Settings class probably also needs
> to by fixed in some way so that the unmarshaling can work correctly. Let me
> know if I am understanding anything wrong here.

Your code example seems to have worked for me. What's the error you're getting?

> Also, I am kind new to GitHub, is there a way I can pack and use the current
> master copy before JOOQ 3.0 actually got released.

You should install Maven and build all the jooq deliverables. Another
option is to wait for me to publish a SNAPSHOT on the Sonatype
repositories. I do so infrequently (around once a week...). The
snapshot repositories are located here:
https://oss.sonatype.org/content/repositories/snapshots/org/jooq/

Cheers
Lukas

2012/12/18 Sean Qiu <[email protected]>:
> Lukas,
>
> Thanks for taking some actions on the issue I reported. I really appreciate
> that.
>
> When I was testing with unmarshaling the settings xml file with JAXB with
> the following piece of code:
>
> JAXBContext jc;
>
> Unmarshaller u;
>
> Settings s;
>
> try {
>
> jc = JAXBContext.newInstance( "org.jooq.conf");
>
> u = jc.createUnmarshaller();
>
> u.setEventHandler(new
> javax.xml.bind.helpers.DefaultValidationEventHandler());
>
> JAXBElement<Settings> j = (JAXBElement<Settings>) u.unmarshal( new File(
> "./jooq-runtime.xml" ) ); // ok
>
> s = j.getValue();
>
> } catch (JAXBException e1) {
>
> // TODO Auto-generated catch block
>
> e1.printStackTrace();
>
> }
>
>
> I gets some similar validation error from the DefaultValidationEventHandler.
> It seems JAXB is does the validation by inspecting the Settings class
> instead of reaching out to find the actual .xsd file. This might be the
> reason why unmarshaling returns a incomplete Setting object(packed with
> default values).
>
>
> As you may have already been aware, the Settings class probably also needs
> to by fixed in some way so that the unmarshaling can work correctly. Let me
> know if I am understanding anything wrong here.
>
>
> Also, I am kind new to GitHub, is there a way I can pack and use the current
> master copy before JOOQ 3.0 actually got released.
>
>
> Thanks,
>
> Sean
>
>
>
> On Fri, Dec 14, 2012 at 5:56 AM, Lukas Eder <[email protected]> wrote:
>>
>> Hello Sean,
>>
>> This is fixed on GitHub master and will be included in jOOQ 3.0
>>
>> Cheers
>> Lukas
>>
>> 2012/12/13 Lukas Eder <[email protected]>:
>> > Hello Sean,
>> >
>> > I'm CC'ing this message to the user group, as I think it may be of
>> > interest to a larger audience.
>> > So far, I hadn't validated jOOQ's code generation / runtime
>> > configuration against the XSD specification that I have published.
>> > You're probably right, elementFormDefault="qualified" should be
>> > specified as such. I have registered #2008 for this:
>> > https://github.com/jOOQ/jOOQ/issues/2008
>> >
>> > Cheers
>> > Lukas
>> >
>> > 2012/12/13 Sean Qiu <[email protected]>:
>> >> Hello Lukas,
>> >>
>> >> I've been using JOOQ with one of our projects. Everything has been
>> >> working great and I like it a lot.
>> >> There is one issue I did ran into to lately which is about loading
>> >> schema mapping configuration from the xml file into a Settings object.
>> >>
>> >> When I follow the xml example you have in the manual and validate
>> >> against "http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd";, it fails.
>> >>
>> >> Here the xml contents I got:
>> >>
>> >> <settings xmlns="http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd";>
>> >>         <renderMapping>
>> >>                 <schemata>
>> >>                         <schema>
>> >>                                 <input>dev</input>
>> >>                                 <output>my_schema</output>
>> >>                                 <tables>
>> >>                                         <table>
>> >>                                                 <input>table</input>
>> >>
>> >> <output>my_table</output>
>> >>                                         </table>
>> >>                                 </tables>
>> >>                         </schema>
>> >>                 </schemata>
>> >>         </renderMapping>
>> >> </settings>
>> >>
>> >> The error message is:Error - Line 2, 17: org.xml.sax.SAXParseException;
>> >> lineNumber: 2; columnNumber: 17; cvc-complex-type.2.4.a: Invalid content 
>> >> was
>> >> found starting with element 'renderMapping'. One of '{renderSchema,
>> >> renderMapping, renderNameStyle, renderKeywordStyle, renderFormatted,
>> >> statementType, executeLogging, executeListeners,
>> >> executeWithOptimisticLocking, attachRecords}' is expected.
>> >>
>> >> If I add elementFormDefault="qualified" in the xsd file you provide,
>> >> the validation will succeed.
>> >>
>> >> I got the same error either when doing the validation on
>> >> http://www.utilities-online.info/xsdvalidation/#.UMlnoKWVtAS
>> >> or when I am unmarshaling the settings in Java and with JAXB debug mode
>> >> turned on.
>> >>
>> >>  So my question is has anyone else ran into the same issue as I did,
>> >> and if it is possible to add the elementFormDefault="qualified" option 
>> >> into
>> >> the xsd file.
>> >>
>> >> Thanks,
>> >> Sean
>> >>
>> >>
>
>
>
>
> --
> Sean

Reply via email to