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

The Schemas can be downloaded from:-

http://docs.oasis-open.org/ubl/os-UBL-2.0.zip

In the xsd directory you will find the UBL-Invoice-2.0.xsd that I was trying
to load.

I am running on Linux, so I set the base location to:-

  setBaseSchemaLocation(System.getProperty("user.dir"));

I did also try adding in a "/" on the end just in case.

in the CustomClassGenerator just before I call:-

  Source source = super.resolveSchema(sourceXSD, namespace, schemaLocation);

David

On Thursday 10 July 2008, David McCann wrote:
> What are you setting as your base location?  Also, you may want to
> forward me the schemas you are trying to load.
>
> --Dave
>
> David Goodenough wrote:
> > Any thoughts on how to get around this problem?
> >
> > David
> >
> > On Wednesday 09 July 2008, David Goodenough wrote:
> >> 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.unmarshalExceptio
> >>n(X MLMarshalException.java:91) at
> >> org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SA
> >>XUn marshaller.java:550) at
> >> org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SA
> >>XUn marshaller.java:458) at
> >> org.eclipse.persistence.oxm.XMLUnmarshaller.unmarshal(XMLUnmarshaller.ja
> >>va: 447) at
> >> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getSchema(SDOTypesG
> >>ene rator.java:2018) at
> >> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getSchema(SDOTypesG
> >>ene rator.java:2027) at
> >> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getSchema(SDOTypesG
> >>ene rator.java:1999) at
> >> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.define(SDOTypesGene
> >>rat or.java:108) at
> >> org.eclipse.persistence.sdo.helper.SDOClassGenerator.generate(SDOClassGe
> >>ner ator.java:209) at
> >> org.eclipse.persistence.sdo.helper.SDOClassGenerator.generate(SDOClassGe
> >>ner ator.java:175) at
> >> uk.co.linkchoose.eclipselink.sdoCompiler.CustomClassGenerator.<init>(Cus
> >>tom ClassGenerator.java:21) at
> >> uk.co.linkchoose.eclipselink.sdoCompiler.CustomClassGenerator.main(Custo
> >>mCl assGenerator.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(FtpURLConnectio
> >>n.j ava:352) at
> >> com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEnt
> >>ity (XMLEntityManager.java:653) at
> >> com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocV
> >>ers ion(XMLVersionDetector.java:186) at
> >> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML1
> >>1Co nfiguration.java:771) at
> >> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML1
> >>1Co nfiguration.java:737) at
> >> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.jav
> >>a:1 07) at
> >> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Abstr
> >>act SAXParser.java:1132) at
> >> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.pars
> >>e(S AXParserImpl.java:533) at
> >> org.eclipse.persistence.internal.oxm.record.XMLReader.parse(XMLReader.ja
> >>va: 103) at
> >> org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SA
> >>XUn marshaller.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:CommonAggregateCompone
> >>>>>>>n ts - 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.MalformedURLExc
> >>>>>>>e pt 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.resolveSch
> >>>>>>>e ma ( De faultSchemaResolver.java:55) at
> >>>>>>> org.eclipse.persistence.sdo.helper.SchemaResolverWrapper.resolveSch
> >>>>>>>e ma ( Sc hemaResolverWrapper.java:61) at
> >>>>>>> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getReferencedS
> >>>>>>>c he m a( SDOTypesGenerator.java:2056) at
> >>>>>>> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getSchema(SDOT
> >>>>>>>y pe s Ge nerator.java:2025) at
> >>>>>>> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getSchema(SDOT
> >>>>>>>y pe s Ge nerator.java:1999) at
> >>>>>>> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.define(SDOType
> >>>>>>>s Ge n er ator.java:108) at
> >>>>>>> org.eclipse.persistence.sdo.helper.SDOClassGenerator.generate(SDOCl
> >>>>>>>a ss G en erator.java:209) at
> >>>>>>> org.eclipse.persistence.sdo.helper.SDOClassGenerator.generate(SDOCl
> >>>>>>>a ss G en erator.java:175) at
> >>>>>>> org.eclipse.persistence.sdo.helper.SDOClassGenerator.main(SDOClassG
> >>>>>>>e ne 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:Invoi
> >>>>>>>c e- 2 "
> >>>>>>> xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
> >>>>>>>
> >>>>>>> xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggre
> >>>>>>>g at e Co mponents-2"
> >>>>>>>
> >>>>>>> xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasic
> >>>>>>>C om p on ents-2"
> >>>>>>>
> >>>>>>> xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedData
> >>>>>>>T yp e sS chemaModule:2"
> >>>>>>> xmlns:ccts="urn:un:unece:uncefact:documentation:2"
> >>>>>>>
> >>>>>>> xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExten
> >>>>>>>s io n Co mponents-2"
> >>>>>>>
> >>>>>>> xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDa
> >>>>>>>t at y pe s-2" elementFormDefault="qualified"
> >>>>>>>     attributeFormDefault="unqualified"
> >>>>>>>     version="2.0">
> >>>>>>> <!-- ===== Imports ===== -->
> >>>>>>>   <xsd:import
> >>>>>>> namespace="urn:oasis:names:specification:ubl:schema:xsd:CommonAggre
> >>>>>>>g at 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
> >>
> >> _______________________________________________
> >> 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