:-) Interesting. Thanks for the education, Craig.
On Wed, Jul 30, 2008 at 11:42 AM, Craig L Russell <[EMAIL PROTECTED]>wrote:
> I think I know what the problem is with the xml, independent of the
> discussion of validating versus non-validating parser.
>
> Here are three versions:
>
> a) <xml-mapping-metadata-complete>
> </xml-mapping-metadata-complete>
> b)
> <xml-mapping-metadata-complete></xml-mapping-metadata-complete>
> c) <xml-mapping-metadata-complete/>
>
> The original, a), has a child consisting of "<cr><lf> ". So
> it's not empty.
>
> The second, b) is empty.
>
> The third, c), which is the fix that Kevin applied, is also empty.
>
> So the fix is correct, but not the only fix that would work.
>
> Craig
>
>
> On Jul 30, 2008, at 8:31 AM, Kevin Sutter wrote:
>
> Exactly, Mike. But, as we talked yesterday, when does this version of
>> Xerxes get incorporated into the Sun JDK? Having the Sun JDK use a
>> non-validating parser and the IBM JDK use a validating parser will
>> continue
>> to introduce inconsistencies (as documented in OPENJPA-513).
>>
>> Kevin
>>
>> On Wed, Jul 30, 2008 at 9:25 AM, Michael Dick <[EMAIL PROTECTED]
>> >wrote:
>>
>> FWIW this may be related to the way we disable validation based on the
>>> version of xerces that is in use :
>>>
>>> There's a specific check in XMLDataParser which disables validation based
>>> on
>>> the version of xerces found on the classpath.
>>>
>>> static {
>>> try {
>>> // check for Xerces version 2.0.2 to see if we need to disable
>>> // schema validation, which works around the bug reported at:
>>> // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4708859
>>> _schemaBug = "Xerces-J 2.0.2".equals(Class.forName
>>> ("org.apache.xerces.impl.Version").getField("fVersion").
>>> get(null));
>>> } catch (Throwable t) {
>>> // Xerces might not be available
>>> _schemaBug = false;
>>> }
>>> }
>>> :
>>> :
>>> if (schemaSource != null && _schemaBug) {
>>> if (_log != null && _log.isTraceEnabled())
>>> _log.trace(_loc.get("parser-schema-bug"));
>>> schemaSource = null;
>>> }
>>> boolean validating = _validating && (getDocType() != null
>>> || schemaSource != null);
>>> :
>>> :
>>> _sourceName = sourceName;
>>> SAXParser parser = XMLFactory.getSAXParser(validating, true);
>>> Object schema = null;
>>> if (validating) {
>>> schema = schemaSource;
>>> if (schema == null && getDocType() != null)
>>> xml = new DocTypeReader(xml, getDocType());
>>> }
>>>
>>> I haven't done all my homework to verify that this is the case, but
>>> explain
>>> the difference between JDKs.
>>>
>>> -mike
>>>
>>> On Wed, Jul 30, 2008 at 8:12 AM, Kevin Sutter <[EMAIL PROTECTED]>
>>> wrote:
>>>
>>> Craig,
>>>> If you would have asked me before seeing the error, I would have thought
>>>> the
>>>> same thing. But, with the original xml, I received the following error
>>>> from
>>>> the validating parser in the IBM JDK:
>>>>
>>>> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.516
>>>> sec
>>>> <<< FAILURE!
>>>>
>>>>
>>>> testMapping(org.apache.openjpa.persistence.jdbc.unique.TestUniqueConstraintWithXMLDescriptor)
>>>
>>>> Time elapsed: 1.437 sec <<< ERROR!
>>>> <openjpa-1.2.0-SNAPSHOT-r422266:680481M nonfatal general error>
>>>> org.apache.openjpa.persistence.PersistenceException:
>>>> org.xml.sax.SAXException:
>>>>
>>>>
>>>> file:/C:/eclipse.workspaces/3.2.2/openjpa-trunk-committed/openjpa-persistence-jdbc/target/test-classes/org/apache/openjpa/persistence/jdbc/unique/orm.xml
>>>
>>>> [Location: Line: 27, C: 35]: org.xml.sax.SAXParseException:
>>>> cvc-complex-type.2.1: Element 'xml-mapping-metadata-complete' must have
>>>>
>>> no
>>>
>>>> character or element information item [children], because the type's
>>>> content
>>>> type is empty.
>>>> at
>>>> org.apache.openjpa.persistence.PersistenceMetaDataFactory.parseXML(Pe
>>>> rsistenceMetaDataFactory.java:249)
>>>> :
>>>> :
>>>>
>>>> I surmised from this error that the problem was due to the split xml
>>>> tag.
>>>> The XSD has this element defined as follows:
>>>>
>>>> <xsd:element name="xml-mapping-metadata-complete" type="orm:emptyType"
>>>> minOccurs="0"/>
>>>>
>>>> So, I changed it to the single line version and the problem went away.
>>>>
>>>> Kevin
>>>>
>>>> On Mon, Jul 28, 2008 at 4:31 PM, Craig L Russell <[EMAIL PROTECTED]
>>>>
>>>>> wrote:
>>>>>
>>>>
>>>> Hi Kevin,
>>>>>
>>>>> Just for my information, what's wrong with the original xml:
>>>>>
>>>>> <persistence-unit-metadata>
>>>>>
>>>>>> - <xml-mapping-metadata-complete>
>>>>>> - </xml-mapping-metadata-complete>
>>>>>> + <xml-mapping-metadata-complete/>
>>>>>> </persistence-unit-metadata>
>>>>>>
>>>>>>
>>>>>
>>>>> I understand these statements (before versus after) are legal and
>>>>> equivalent. But I'm always looking to improve my understanding.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Craig
>>>>>
>>>>> On Jul 28, 2008, at 1:26 PM, [EMAIL PROTECTED] wrote:
>>>>>
>>>>> Author: kwsutter
>>>>>
>>>>>> Date: Mon Jul 28 13:26:21 2008
>>>>>> New Revision: 680481
>>>>>>
>>>>>> URL: http://svn.apache.org/viewvc?rev=680481&view=rev
>>>>>> Log:
>>>>>> OPENJPA-668. Fixed up the orm.xml file that was used for testing so
>>>>>>
>>>>> that
>>>>
>>>>> it could pass the validation of the IBM JDK parser.
>>>>>>
>>>>>> Modified:
>>>>>>
>>>>>>
>>>>>>
>>>> openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/unique/orm.xml
>>>
>>>>
>>>>>> Modified:
>>>>>>
>>>>>>
>>>> openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/unique/orm.xml
>>>
>>>> URL:
>>>>>>
>>>>>>
>>>>
>>> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/unique/orm.xml?rev=680481&r1=680480&r2=680481&view=diff
>>>
>>>>
>>>>>>
>>>>>>
>>>> ==============================================================================
>>>
>>>> ---
>>>>>>
>>>>>>
>>>> openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/unique/orm.xml
>>>
>>>> (original)
>>>>>> +++
>>>>>>
>>>>>>
>>>> openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/unique/orm.xml
>>>
>>>> Mon Jul 28 13:26:21 2008
>>>>>> @@ -23,8 +23,7 @@
>>>>>> version="1.0">
>>>>>>
>>>>>> <persistence-unit-metadata>
>>>>>> - <xml-mapping-metadata-complete>
>>>>>> - </xml-mapping-metadata-complete>
>>>>>> + <xml-mapping-metadata-complete/>
>>>>>> </persistence-unit-metadata>
>>>>>>
>>>>>>
>>>>>> @@ -76,10 +75,8 @@
>>>>>>
>>>>>> <many-to-many name="bs">
>>>>>> <join-table
>>>>>>
>>>>> name="UNIQUE_JOINTABLE_XML">
>>>
>>>> - <join-column name="FK_A_XML"
>>>>>> referenced-column-name="aid" nullable="false">
>>>>>> - </join-column>
>>>>>> - <inverse-join-column
>>>>>> name="FK_B_XML" referenced-column-name="bid" nullable="false">
>>>>>> - </inverse-join-column>
>>>>>> + <join-column name="FK_A_XML"
>>>>>> referenced-column-name="aid" nullable="false"/>
>>>>>> + <inverse-join-column
>>>>>> name="FK_B_XML" referenced-column-name="bid" nullable="false"/>
>>>>>> <unique-constraint>
>>>>>>
>>>>>> <column-name>FK_A_XML</column-name>
>>>>>>
>>>>>> <column-name>FK_B_XML</column-name>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Craig L Russell
>>>>> Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
>>>>> 408 276-5638 mailto:[EMAIL PROTECTED]
>>>>> P.S. A good JDO? O, Gasp!
>>>>>
>>>>>
>>>>>
>>>>
>>>
> Craig L Russell
> Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
> 408 276-5638 mailto:[EMAIL PROTECTED]
> P.S. A good JDO? O, Gasp!
>
>