axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sedukhin, Igor" <>
Subject RE: Default type mapping (another attempt)
Date Fri, 22 Feb 2002 15:31:34 GMT
Glen, so then if we change it to <foo xsi:type="java:org.apache.axis.mypackage.MyClass">,
then do you agree it's good to have the "deployment-free" typemapping in Axis?
I'm not sure it's going to interop well with .NET... With the current  <> mapping it interops just fine...
Also I thought XML Schema suggests that XML namespaces resemble packages in OO model, aren't
Axis may become too Java centric in its introp if we ignore this, IMO.

-- Igor Sedukhin .. ( 
-- (631) 342-4325 .. 1 CA Plaza, Islandia, NY 11788 

-----Original Message-----
From: Glen Daniels [] 
Sent: Friday, February 22, 2002 10:00 AM
To: ''
Subject: RE: Default type mapping (another attempt)

I don't think this is the right solution to this.
IMO, we shouldn't map java types to individual namespaces per package, but if we want a "deployment-free"
typemapping (i.e. one where the QName of the type gives us enough info to figure out the java
type), we should go with a syntax like:
<foo xsi:type="java:org.apache.axis.mypackage.MyClass">....
This seems way cleaner to me, and will interoperate, if we do it right, with GLUE and WASP
and other java toolkits which use this pattern.

-----Original Message-----
From: Sedukhin, Igor []
Sent: Friday, February 22, 2002 9:37 AM
To: ''
Subject: Default type mapping (another attempt)

I'm trying it again. 

The WSDL2Java and Java2WSDL take care of properly mapping  <> namespaces back to and from packages (see code fragments
below). SOAP processing pipeline does not. It always assumes the typemappings must have been
provided by the service deployer. I'd like to make an attempt to sligtly modify DefaultTypeMappingsImpl
to take care of this by default.

I know we had discussion before, but it has faded out and there was no coherent +1 or -1 on
this. So let me try to start my +1.

Here is the code in WSDL2Java and java2WSDL that I was referring to 
=== in axis.wsdl.fromJava.Types.getTypeQName(Class type) === 
                String pkg = getPackageNameFromFullName(type.getName()); 
                String lcl = getLocalNameFromFullName(type.getName()); 

                String ns = namespaces.getCreate(pkg); 
                String pre = namespaces.getCreatePrefix(ns); 
                String localPart = lcl.replace('$', '_'); 
                qName = new javax.xml.rpc.namespace.QName(ns, localPart); 

=== in axis.wsdl.toJava.Utils.makePackageName(String namespace) === 
        //convert illegal java identifier 
        hostname = hostname.replace('-', '_'); 

        // tokenize the hostname and reverse it 
        StringTokenizer st = new StringTokenizer( hostname, "." ); 
        String[] words = new String[ st.countTokens() ]; 
        for(int i = 0; i < words.length; ++i) 
            words[i] = st.nextToken(); 

        StringBuffer sb = new StringBuffer(80); 
        for(int i = words.length-1; i >= 0; --i) { 
            String word = words[i]; 
            if (JavaUtils.isJavaKeyword(word)) { 
                word = JavaUtils.makeNonJavaKeyword(word); 
            // seperate with dot 
            if( i != words.length-1 ) 

            // convert digits to underscores 
            if( Character.isDigit(word.charAt(0)) ) 
            sb.append( word ); 
        return sb.toString(); 

-- Igor Sedukhin .. ( 
-- (631) 342-4325 .. 1 CA Plaza, Islandia, NY 11788 

View raw message