On Dec 16, 2013, at 8:13 AM, Aki Yoshida <[email protected]> wrote:

> Hi Dan,
> just saw CXF-5181 which switched to use the relative paths for imports.
> [CXF-5181] Use relative paths in imports so blueprint validation can
> work without long startup delays and internet access.
> 
> But in this patch, those schemas were also added to the namespace
> handler's schema mapping. So I suppose those schemas can get loaded
> locally even when the locations are kept as absolute as long as if you
> are not using an older Aries BP core like 0.3.2. I'll check on this.
> 

You likely need BP 1.2.   A couple of the schemas import the xml schema and it 
didn’t seem right to put the import for that anyplace in CXF.  You’d likely get 
into a situation where multiple bundles would need to have it registered.   
Thus, that schema was added to BP:

https://issues.apache.org/jira/browse/ARIES-1118


Dan



> regards, aki
> 
> 
> 
> 2013/12/16 Aki Yoshida <[email protected]>:
>> Hi Dan,
>> thanks for your input.
>> 
>> In that case, I will go ahead and update the local schemas to use the
>> absolute URLs for the imports.
>> As most imports are already using the absolute URLs and they are
>> working also for offline, if some issue occurs after this change, that
>> likely just means we forgot to include that particular URL in the BP's
>> ns-handler's schema map. Then, we can fix it there.
>> 
>> regards, aki
>> 
>> 2013/12/13 Daniel Kulp <[email protected]>:
>>> 
>>> Aki,
>>> 
>>> Most of the flipping to relative locations was to work around namespace 
>>> handler issues in Blueprint.   I think those issues are now fixed in the 
>>> latest blueprint, but I’m not sure if the latest Karaf releases have been 
>>> updated yet.  If not, we could always start pushing them a bit harder.  :-)
>>> 
>>> If we can verify the various situations in blueprint won’t go off to the 
>>> internet to grab schemas, we could revert them back.
>>> 
>>> Dan
>>> 
>>> 
>>> On Dec 11, 2013, at 6:06 AM, Aki Yoshida <[email protected]> wrote:
>>> 
>>>> I noticed a problem of loading a certain xsd schema in spring and I
>>>> identified the cause. But as I remember that we have had a few rounds
>>>> of changes in the past and I would like to ask you if the suggested
>>>> fix makes sense.
>>>> 
>>>> The problem occurs when I try to look up the schema for namespace
>>>> "http://www.w3.org/ns/ws-policy"; and I have its schemaloc in my
>>>> beans.xml correctly set to "http://www.w3.org/2007/02/ws-policy.xsd";
>>>> 
>>>> And as this location is given in the rt-ws-policy's catalog file which
>>>> maps this location to its local resource file
>>>> "schemas/ws-policy-200702.xsd". So far, it's fine.
>>>> 
>>>> and this local schema resource has the following import:
>>>> <xs:import
>>>>     
>>>> namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
>>>>     schemaLocation="oasis-200401-wss-wssecurity-secext-1.0.xsd" />
>>>> 
>>>> and here it hits the problem because the schema processor thinks this
>>>> schema to be imported is located at
>>>> http://www.w3.org/2007/02/oasis-200401-wss-wssecurity-secext-1.0.xsd,
>>>> as the parent schema "ws-policy.xsd" was supposed to be located at
>>>> "http://www.w3.org/2007/02/";
>>>> and tries to load  it from there and results in
>>>> 
>>>> Caused by: java.io.FileNotFoundException:
>>>> http://www.w3.org/2007/02/oasis-200401-wss-wssecurity-utility-1.0.xsd
>>>> at 
>>>> sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1457)
>>>> at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown 
>>>> Source)
>>>> at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown 
>>>> Source)
>>>> at org.apache.xerces.impl.xs.opti.SchemaParsingConfig.parse(Unknown Source)
>>>> at org.apache.xerces.impl.xs.opti.SchemaParsingConfig.parse(Unknown Source)
>>>> at org.apache.xerces.impl.xs.opti.SchemaDOMParser.parse(Unknown Source)
>>>> ... 58 more
>>>> 
>>>> The real schema is located at
>>>> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
>>>> and this location is also given in rt-ws-policy's catalog file and
>>>> mapped to its local
>>>> schemas/oasis-200401-wss-wssecurity-secext-1.0.xsd.
>>>> 
>>>> One way to fix this issue is to change the way the schemaLocation is
>>>> resolved after a catalog look up occurs that switches the location so
>>>> that in the above case,
>>>> schemaLocation="oasis-200401-wss-wssecurity-secext-1.0.xsd" will
>>>> resolve directly to
>>>> "schemas/oasis-200401-wss-wssecurity-secext-1.0.xsd" instead to its
>>>> logical location
>>>> "http://www.w3.org/2007/02/oasis-200401-wss-wssecurity-utility-1.0.xsd";.
>>>> But I find this approach is somehow invasive.
>>>> 
>>>> The better approach would be to always use the absolute location URLs
>>>> in the schemaLocation attribute of "import"s. In contrast, for
>>>> "include"s, we can keep the local URLs because the namespace nor the
>>>> location path is not switched.
>>>> 
>>>> I think the original schemas always had the absolute URLs for their
>>>> imports. So, making this change means that we can put the unmodified
>>>> schemas in the local resources folder and let the catalog and
>>>> blueprint handler to do the resolution.
>>>> 
>>>> Should we make this change or will there be some concern or
>>>> alternative approach?
>>>> 
>>>> thanks.
>>>> regards, aki
>>> 
>>> --
>>> Daniel Kulp
>>> [email protected] - http://dankulp.com/blog
>>> Talend Community Coder - http://coders.talend.com
>>> 

-- 
Daniel Kulp
[email protected] - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com

Reply via email to