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

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.unmarshalException(X
>MLMarshalException.java:91) at
> org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUn
>marshaller.java:550) at
> org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUn
>marshaller.java:458) at
> org.eclipse.persistence.oxm.XMLUnmarshaller.unmarshal(XMLUnmarshaller.java:
>447) at
> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getSchema(SDOTypesGene
>rator.java:2018) at
> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getSchema(SDOTypesGene
>rator.java:2027) at
> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getSchema(SDOTypesGene
>rator.java:1999) at
> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.define(SDOTypesGenerat
>or.java:108) at
> org.eclipse.persistence.sdo.helper.SDOClassGenerator.generate(SDOClassGener
>ator.java:209) at
> org.eclipse.persistence.sdo.helper.SDOClassGenerator.generate(SDOClassGener
>ator.java:175) at
> uk.co.linkchoose.eclipselink.sdoCompiler.CustomClassGenerator.<init>(Custom
>ClassGenerator.java:21) at
> uk.co.linkchoose.eclipselink.sdoCompiler.CustomClassGenerator.main(CustomCl
>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(FtpURLConnection.j
>ava:352) at
> com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity
>(XMLEntityManager.java:653) at
> com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVers
>ion(XMLVersionDetector.java:186) at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Co
>nfiguration.java:771) at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Co
>nfiguration.java:737) at
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:1
>07) at
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Abstract
>SAXParser.java:1132) at
> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(S
>AXParserImpl.java:533) at
> org.eclipse.persistence.internal.oxm.record.XMLReader.parse(XMLReader.java:
>103) at
> org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUn
>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:CommonAggregateComponen
> > >>>>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.MalformedURLExce
> > >>>>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.resolveSche
> > >>>>ma ( De faultSchemaResolver.java:55) at
> > >>>> org.eclipse.persistence.sdo.helper.SchemaResolverWrapper.resolveSche
> > >>>>ma ( Sc hemaResolverWrapper.java:61) at
> > >>>> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getReferencedSc
> > >>>>he m a( SDOTypesGenerator.java:2056) at
> > >>>> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getSchema(SDOTy
> > >>>>pe s Ge nerator.java:2025) at
> > >>>> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.getSchema(SDOTy
> > >>>>pe s Ge nerator.java:1999) at
> > >>>> org.eclipse.persistence.sdo.helper.SDOTypesGenerator.define(SDOTypes
> > >>>>Ge n er ator.java:108) at
> > >>>> org.eclipse.persistence.sdo.helper.SDOClassGenerator.generate(SDOCla
> > >>>>ss G en erator.java:209) at
> > >>>> org.eclipse.persistence.sdo.helper.SDOClassGenerator.generate(SDOCla
> > >>>>ss G en erator.java:175) at
> > >>>> org.eclipse.persistence.sdo.helper.SDOClassGenerator.main(SDOClassGe
> > >>>>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:Invoic
> > >>>>e- 2 " xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
> > >>>>
> > >>>> xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggreg
> > >>>>at e Co mponents-2"
> > >>>>
> > >>>> xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicC
> > >>>>om p on ents-2"
> > >>>>
> > >>>> xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataT
> > >>>>yp e sS chemaModule:2"
> > >>>> xmlns:ccts="urn:un:unece:uncefact:documentation:2"
> > >>>>
> > >>>> xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtens
> > >>>>io n Co mponents-2"
> > >>>>
> > >>>> xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDat
> > >>>>at y pe s-2" elementFormDefault="qualified"
> > >>>>     attributeFormDefault="unqualified"
> > >>>>     version="2.0">
> > >>>> <!-- ===== Imports ===== -->
> > >>>>   <xsd:import
> > >>>> namespace="urn:oasis:names:specification:ubl:schema:xsd:CommonAggreg
> > >>>>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




Back to the top