Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] MalformedURLException in sdo-compiler

Well we get a bit further, I now get:-

Local Exception Stack:
Exception [EclipseLink-25004] (Eclipse Persistence Services - 1.0 (Build 1.0 - 
20080707)): org.eclipse.persistence.exceptions.XMLMarshalException
Exception Description: An error occurred unmarshalling the document
Internal Exception: java.net.UnknownHostException: ..
        at 
org.eclipse.persistence.exceptions.XMLMarshalException.unmarshalException(XMLMarshalException.java:91)
        at 
org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:550)
        at 
org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:458)
        at 
org.eclipse.persistence.oxm.XMLUnmarshaller.unmarshal(XMLUnmarshaller.java:447)
        at 
org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getSchema(SDOTypesGenerator.java:2018)
        at 
org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getSchema(SDOTypesGenerator.java:2027)
        at 
org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getSchema(SDOTypesGenerator.java:1999)
        at 
org.eclipse.persistence.sdo.helper.SDOTypesGenerator.define(SDOTypesGenerator.java:108)
        at 
org.eclipse.persistence.sdo.helper.SDOClassGenerator.generate(SDOClassGenerator.java:209)
        at 
org.eclipse.persistence.sdo.helper.SDOClassGenerator.generate(SDOClassGenerator.java:175)
        at 
uk.co.linkchoose.eclipselink.sdoCompiler.CustomClassGenerator.<init>(CustomClassGenerator.java:21)
        at 
uk.co.linkchoose.eclipselink.sdoCompiler.CustomClassGenerator.main(CustomClassGenerator.java:48)
Caused by: java.net.UnknownHostException: ..
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
        at java.net.Socket.connect(Socket.java:519)
        at java.net.Socket.connect(Socket.java:469)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
        at sun.net.NetworkClient.openServer(NetworkClient.java:118)
        at sun.net.ftp.FtpClient.openServer(FtpClient.java:488)
        at sun.net.ftp.FtpClient.openServer(FtpClient.java:475)
        at 
sun.net.www.protocol.ftp.FtpURLConnection.connect(FtpURLConnection.java:270)
        at 
sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(FtpURLConnection.java:352)
        at 
com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:653)
        at 
com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
        at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
        at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
        at 
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
        at 
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1132)
        at 
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:533)
        at 
org.eclipse.persistence.internal.oxm.record.XMLReader.parse(XMLReader.java:103)
        at 
org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:544)
        ... 10 more

lots of times.

David
On Wednesday 09 July 2008, David McCann wrote:
> Please let me know if my workaround suggestion helped.  I am looking
> into your issue regarding our default resolver now, and will update the
> bug shortly.
>
> --dave
>
> ------------------------------------------------------------------------
>
> David Goodenough wrote:
> > That is to say how do I do this using the command sdo-compiler.sh?
> >
> > Also why does the else below (and that in the default one) use new URL
> > when surely it should use new URI?
> >
> > David
> >
> > On Wednesday 09 July 2008, David Goodenough wrote:
> >> How do I use this in the sdo-compiler?
> >>
> >> David
> >>
> >> On Wednesday 09 July 2008, David McCann wrote:
> >>> Hey David,
> >>>
> >>> To handle this scenario you will need to implement a SchemaResolver
> >>> (org.eclipse.persistence.sdo.helper package) that can load the doc
> >>> based on the relative path.  To do this, you can simply extend the
> >>> default resolver we provide
> >>> (org.eclipse.persistence.sdo.helper.DefaultSchemaResolver) and override
> >>> the resolveSchema(Source, String, String) method to handle this case.
> >>> Note that the schema resolver is passed in as a parameter in the define
> >>> method on the delegator.
> >>>
> >>> Here's an example of a custom resolver:
> >>>
> >>>     public class CyclicSchemaResolver extends DefaultSchemaResolver {
> >>>         public Source resolveSchema(Source sourceXSD, String namespace,
> >>>     String schemaLocation) {
> >>>             if (schemaLocation != null && !schemaLocation.equals("")) {
> >>>                 return super.resolveSchema(sourceXSD, namespace,
> >>>     schemaLocation);
> >>>             }
> >>>             schemaLocation = namespace.equals("uri") ? "Cyclic1.xsd" :
> >>>     "Cyclic2.xsd";
> >>>             URL schemaUrl = null;
> >>>             try {
> >>>                 if (getBaseSchemaLocation() != null) {
> >>>                     // Attempt to resolve the schema location against
> >>>     the base location
> >>>                     URI baseUri = new URI(getBaseSchemaLocation());
> >>>                     URI resolvedUri = baseUri.resolve(schemaLocation);
> >>>                     schemaUrl = resolvedUri.toURL();
> >>>                 } else {
> >>>                     schemaUrl = new URL(schemaLocation);
> >>>                 }
> >>>             } catch (Exception e) {
> >>>                 return null;
> >>>             }
> >>>             return new StreamSource(schemaUrl.toExternalForm());
> >>>         }
> >>>     }
> >>>
> >>> Please let me know if you have any questions.
> >>>
> >>> --Dave
> >>> -----------------------------------------------------------------------
> >>>-
> >>>
> >>> David Goodenough wrote:
> >>>> I am trying to run the sdo-compiler against some of the OASIS xsd
> >>>> files but when I try I get a MalformedURLException when resolving
> >>>> schemas.
> >>>>
> >>>> This is using 1.0M11.
> >>>>
> >>>> The first exception I get is:-
> >>>>
> >>>> [EL Warning]: 2008.07.09 11:41:48.932--Thread(Thread[main,5,main])--An
> >>>> java.net.MalformedURLException occurred processing referenced schema
> >>>> with uri
> >>>> urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents
> >>>>- 2 with schemaLocation
> >>>> ../common/UBL-CommonAggregateComponents-2.0.xsd. [EL Finest]:
> >>>> 2008.07.09
> >>>> 11:41:48.947--Thread(Thread[main,5,main])--java.net.MalformedURLExcept
> >>>>i on
> >>>>
> >>>> : no protocol: ../common/UBL-CommonAggregateComponents-2.0.xsd
> >>>>
> >>>>         at java.net.URL.<init>(URL.java:567)
> >>>>         at java.net.URL.<init>(URL.java:464)
> >>>>         at java.net.URL.<init>(URL.java:413)
> >>>>         at
> >>>> org.eclipse.persistence.sdo.helper.DefaultSchemaResolver.resolveSchema
> >>>>( De faultSchemaResolver.java:55) at
> >>>> org.eclipse.persistence.sdo.helper.SchemaResolverWrapper.resolveSchema
> >>>>( Sc hemaResolverWrapper.java:61) at
> >>>> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getReferencedSche
> >>>>m a( SDOTypesGenerator.java:2056) at
> >>>> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getSchema(SDOType
> >>>>s Ge nerator.java:2025) at
> >>>> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getSchema(SDOType
> >>>>s Ge nerator.java:1999) at
> >>>> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.define(SDOTypesGe
> >>>>n er ator.java:108) at
> >>>> org.eclipse.persistence.sdo.helper.SDOClassGenerator.generate(SDOClass
> >>>>G en erator.java:209) at
> >>>> org.eclipse.persistence.sdo.helper.SDOClassGenerator.generate(SDOClass
> >>>>G en erator.java:175) at
> >>>> org.eclipse.persistence.sdo.helper.SDOClassGenerator.main(SDOClassGene
> >>>>r at or.java:111)
> >>>>
> >>>> Looking at the relevant line in the xsd file, it starts:-
> >>>>
> >>>> <?xml version="1.0" encoding="UTF-8"?>
> >>>> <!--
> >>>>   Document Type:     Invoice
> >>>>   Generated On:      Tue Oct 03 2:26:38 P3 2006
> >>>>
> >>>> -->
> >>>> <!-- ===== xsd:schema Element With Namespaces Declarations ===== -->
> >>>> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> >>>>
> >>>> targetNamespace="urn:oasis:names:specification:ubl:schema:xsd:Invoice-
> >>>>2 " xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
> >>>>
> >>>> xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregat
> >>>>e Co mponents-2"
> >>>>
> >>>> xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicCom
> >>>>p on ents-2"
> >>>>
> >>>> xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTyp
> >>>>e sS chemaModule:2" xmlns:ccts="urn:un:unece:uncefact:documentation:2"
> >>>>
> >>>> xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensio
> >>>>n Co mponents-2"
> >>>>
> >>>> xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatat
> >>>>y pe s-2" elementFormDefault="qualified"
> >>>>     attributeFormDefault="unqualified"
> >>>>     version="2.0">
> >>>> <!-- ===== Imports ===== -->
> >>>>   <xsd:import
> >>>> namespace="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregat
> >>>>e Co mponents-2"
> >>>> schemaLocation="../common/UBL-CommonAggregateComponents-2.0.xsd"/>
> >>>>
> >>>> and I think it is complaining about schemaLocation.
> >>>>
> >>>> I guess this is because of the lack of a protocol.
> >>>>
> >>>> I am using Sun Java 6 on linux, using its default XML code.
> >>>>
> >>>> Perhaps the code in DefaultSchemaResolver needs to trap this exception
> >>>> and try adding file:/// to the front of the URL.  I do not know
> >>>> whether this is really a fault with the OASIS xsd file but they have
> >>>> been in the field for a while and I am sure of XML parsers generally
> >>>> objected to this it would have been picked up as a problem.
> >>>>
> >>>> In fact looking at the code, should DefaultSchemaResolver.java line 55
> >>>> which currently reads:-
> >>>>
> >>>>                 schemaUrl = new URL(schemaLocation);
> >>>>
> >>>> read instead:-
> >>>>
> >>>> 		schemaUrl = new URI(schemaLocation).toUrl();
> >>>>
> >>>> as the javadoc for URI says that it can handle this kind of
> >>>> specification without a protocol.
> >>>>
> >>>> David
> >>>> _______________________________________________
> >>>> eclipselink-users mailing list
> >>>> eclipselink-users@xxxxxxxxxxx
> >>>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
> >>
> >> _______________________________________________
> >> eclipselink-users mailing list
> >> eclipselink-users@xxxxxxxxxxx
> >> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
> >
> > _______________________________________________
> > eclipselink-users mailing list
> > eclipselink-users@xxxxxxxxxxx
> > https://dev.eclipse.org/mailman/listinfo/eclipselink-users




Back to the top