[cddlm] what to do about <import namespace>

Guilherme Mauro Germoglio Barbosa / Projeto Ourgrid - Projeto Ourgrid/LSD guiga at dsc.ufcg.edu.br
Wed Mar 22 11:41:21 CST 2006


Steve Loughran wrote:

>
> I just had the phone conf thing turned on, but nobody dialled in, so 
> we didnt get an opportunity to talk about <import namespace>. That's 
> OK. it has given me more time to deal with SOAP problems. For the 
> curious, I am abandoning Axis2 because all it brings to the table is 
> pain. They've done some fancy new classloader stuff, which, coupled 
> with the preponderance of the code to catch and inadequately log 
> exceptions, means you can spend forever debugging it.
>
> Instead we will be using the long-promised Alpine SOAP stack :) I'm 
> still trying to have something ready by the end of the week, even if 
> it is just the portal. One problem will be the AddFile() operation, 
> because implementing attachments will be tricky.
>
> Returning to the other troublespot: what are we to do about <import 
> namespace>?
>
> This is what I have filed in the CDL issue tracker, under 
> https://forge.gridforum.org/tracker/?aid=1782
>
> Need to clarify the semantics of <import namespace>
> ===================================
>
> The CDL specification, on the topic of <import namespace>, doesnt 
> cover what to do if stuff is already is in a namespace, and implies 
> that all attributes and elements in the list also get pulled in.
>
> As a consequence, when something gets imported into a namespace, 
> everything inside it gets moved
> into the new namespace, so is no longer accessible to components that 
> are trying to resolve it
> using the local name.
>
> To show this as an example, (from 
> /cdl/valid/set_09_import_namespace/cddlm-cdl-2005-09-0001.xml )
>
> At http://cddlm.org/test1.cdl there is a file with no namespace
>
> <cdl:cdl>
>   <cdl:configuration>
>     <WebServer>
>       <hostname>localhost</hostname>
>       <port>80</port>
>     </WebServer>
>   </cdl:configuration>
> </cdl:cdl>
>
> this is imported into a new namespace
>
> <cdl:cdl xmlns:test1="http://cddlm.org/test1.cdl">
>   <cdl:import location="http://cddlm.org/test1.cdl"
>       namespace="http://cddlm.org/test1.cdl"
>       />
>   <cdl:system>
>     <MyServer cdl:extends="test1:WebServer">
>       <hostname>www.cddlm.org</hostname>
>     </MyServer>
>   </cdl:system>
> </cdl:cdl>
>
>
> Now, what do we end up with? Is it (1)
>
>   <cdl:system xmlns:test1="http://cddlm.org/test1.cdl">
>     <MyServer>
>       <hostname>www.cddlm.org</hostname>
>       <port>80</port>
>     </MyServer>
>   </cdl:system>
>
> Or is it (2)
>
>   <cdl:system xmlns:test1="http://cddlm.org/test1.cdl">
>     <MyServer>
>       <hostname>www.cddlm.org</hostname>
>       <test1:hostname>www.cddlm.org</test1:hostname>
>       <test1:port>80</test1:port>
>     </MyServer>
>   </cdl:system>
>
> (2) is the literal interpretation of the specification, and it is 
> wrong, because nested elements are now in the wrong namespace for 
> their implementation classes to be able to read.
>
> Solutions
>
>  -pull the whole namespace stuff out, tell people to use their own 
> namespaces for scoping.
>   and stick to <import>
>
>  -restrict namespace scope to the qnames of the toplevel elements. 
> Leave stuff already in namespaces
>  alone.
>
> What have other projects done?
>

Our implementation resolves this import issue using the literal 
interpretation of the specification, so we end up with (2).


> I looked at how Ant's ability to <typedef> a task or type into a 
> namespace. It only acts on the supplied tasks and types in the local 
> namespace, and maps all attributes into the same xmlns. For
> nested elements it does something devious and allows either namespaced 
> or local declarations in
>
> <taskdef name="myecho" uri="antlib://ex.org.package" />
>
>
> this would make the following things identical, assuming
> xmlns:m="antlib://ex.org.package"
>
>
> <m:echo level="info" >
>   <message>text here</message>
> </m:echo>
>
> and
>
> <m:echo m:level="info">
>  <m:message>text here</m:message>
> </m:echo>
>
> That is: stuff inside the new task is both inside the new namespace, 
> and in the ##local namespace. Ant pulls this off because it does its 
> O/X mapping from the outside, going from XML elements to java methods, 
> and can do loose matching of QNames to methods.
>
>
> We dont have that option in CDL, so need a better solution
>
> ----------------------
>
> As an aside, there are a currently 6 outstanding defects in the tracker:
>
> https://forge.gridforum.org/tracker/?atid=734&group_id=130&func=browse
>
> I believe this is the official way to file issues against a spec, but 
> if it would be better for me to file pointers to the items in a 
> different tracker as part of the public review, I can do that.
>
Unfortunately, my profile has no permissions to comment on the CDL Spec 
Revisions. Can you make me able to do this? I want to add a comment on 
https://forge.gridforum.org/tracker/?aid=1545 . My user name is: germoglio
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3253 bytes
Desc: S/MIME Cryptographic Signature
Url : http://www.ogf.org/pipermail/cddlm-wg/attachments/20060322/4fb1b840/attachment.bin 


More information about the cddlm-wg mailing list