I dont think its a good idea to enforce namespaces to be mapped forcefully to Java packages, even though thats the most commonly desired option in an all java environment. I think the XML namespaces and the Java namespaces (read packages) _should_ be and will be required to be loosely coupled which would necessitate additional metadata - presumably in deployment.

IMHO, the java based XML namespaces (java:) could be a fallback option but there should be a mode of configuring, at a more granular level, the namespace mappings. This, along with WSDL targetnamespace specifications (also having similar issues), could be rolled into a global namespace registry/directory now provided by the WSDD repository.

One implementation option would be allowing the default serializers to take in additional namespace information from config/deployment. This would ensure that the command line options in Java2WSDL and WSDL2Java are manifested and stored and not lost.

Mukund Balasubramanian

Sedukhin, Igor wrote:
[EMAIL PROTECTED]"> Message
Glen,
 
Moreover, <foo xsi:type="java:org.apache.axis.mypackage.MyClass"> will contradict JAXRPC 0.7 PRD2 Appendix 18.
 
The same spec also says

The JAX-RPC specification requires the namespace definitions in the WSDL document

to be mapped in an application specific manner. A Java to WSDL mapping tool is

required to support the configuration of the namespace definitions in the mapped WSDL

document.

So why not do it just so for Axis in an automatic manner (like now, plus fix) and then other WS frameworks would do it at their own peril.
 
I just don't see why it would hurt anyone using Axis today...

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

-----Original Message-----
From: Sedukhin, Igor
Sent: Friday, February 22, 2002 10:32 AM
To: [EMAIL PROTECTED]
Subject: RE: Default type mapping (another attempt)

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  http://my.app.corp.etc mapping it interops just fine...
 
Also I thought XML Schema suggests that XML namespaces resemble packages in OO model, aren't they?
Axis may become too Java centric in its introp if we ignore this, IMO.

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

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

-1
 
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:
 
 
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.
 
--Glen
-----Original Message-----
From: Sedukhin, Igor [mailto:[EMAIL PROTECTED]]
Sent: Friday, February 22, 2002 9:37 AM
To: '[EMAIL PROTECTED]'
Subject: Default type mapping (another attempt)

I'm trying it again.

The WSDL2Java and Java2WSDL take care of properly mapping http://my.app.corp.etc namespaces back to and from etc.corp.app.my 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 )
                sb.append('.');

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

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




Reply via email to