W3C home > Mailing lists > Public > www-ws-desc@w3.org > January 2003

Re: HTML version of operation name proposal

From: Sanjiva Weerawarana <sanjiva@watson.ibm.com>
Date: Fri, 31 Jan 2003 07:27:48 +0600
Message-ID: <00e801c2c8c7$f8f0e860$b300a8c0@lankabook2>
To: "Roberto Chinnici" <roberto.chinnici@sun.com>
Cc: "Martin Gudgin" <mgudgin@microsoft.com>, <www-ws-desc@w3.org>

Hi Roberto,

> You were asking Gudge, but I hope you don't mind if I try
> to answer your questions.

Yes of course!

> >Now, what are the operations available in {nsuri-2}pt2? Can you
> >please indicate both the name and targetnamespace properties of
> >each of the operations?
> >
> There's three of them:
>   operation {nsuri-1}o1;
>   operation {nsuri-1}o2;
>   operation {nsuri-2}o3;

OK.

> Yes, it is legal. In short, the qualified name of an operation must be
> unique.
> It's just like before, but instead of saying "the name must be unique"
> we now
> say "the qualified name must be unique".

If the qualified name of an operation must be unique, then we have
created an arbitrary restriction by saying operations cannot
be referred to be QNames. Furthermore, the entire portType concept
is really meaningless now because its just a wrapper and the name
of the portType is simply irrelevant.

In effect, if we accept this proposal we would have made operations
top level components!

> >If legal, what are the values of the TNS and name properties of
> >all the operations available via pt3?
> >
> operation {nsuri-1}o1;
> operation {nsuri-1}o2;
> operation {nsuri-3}o1;

So this really doesn't address the requirement from the grid
folks that started this thread - that of wanting to re-use an
operation name during subtyping. This proposal in effect makes
operation names be more complicated, but leaves them global.

IMO the only way to meet the requirement that the grid folks
brought up is to re-introduce operation overloading. Otherwise
any way you cut it the operation names become global. All this
new proposal does is define a way to make them global by bringing
in the target namespace to the operation name.

We removed operation overloading before we introduced inheritance.
I think we need to revisit that decision and bring it back.

> >Finally, how does all this look when bound to a language (like
> >Java)? I'd like to understand how the targetnamespace properties
> >of an operation name will be represented in the language binding.
> >Yes, I know we don't do language binding, but someone does.
> >
> Hmmm, wonder who that someone might be!  ;-)

I had named you in my email first, but then I thought I'll
remove it ;-).

> I guess you'll have to come up with identifiers that reflect the
> combination of
> namespace name and local part.

This is the answer I expected. This is nothing short of disgusting!

Spse nsuri-1 was http://www.sun.com/services/s1 and nsuri-2 was
http://www.microsoft.com/services/s2 (now imagine that- MSFT
extending a Sun defined service!). I forget the name mangling
rules u defined in JAX-RPC, but you'd end up with something like
the following for {nsuri-2}pt2:

====
package com.sun.www.services.s1;

public interface pt1 {
  public typeX1 www_sun_com_services_s1_o1 (...);
  public typeX2 www_sun_com_services_s1_o2 (...);
}
====

====
package com.microsoft.com.services.s2;
import com.sun.www.services.s1.pt1;

public interface pt2 extends pt1 {
  public typeX3 www_microsoft_com_services_s2_o3 (...);
}
====

How can that be considered user-friendly and acceptable? The user
of this interface in effect must know exactly which super portType
defined every single operation in order to figure out the name
of the operation.

> In most cases, everything will be fine,
> in some
> cases tools will come up with bad defaults and humans will override them.

No, humans cannot override the JAX-RPC defined mapping; otherwise
that mapping is no longer a contract I can rely on. That is, if I
do dynamic lookup of a proxy, then that better not have changed
the names or all hell will break loose. Do you not agree??

> Notice also that the problem exists today, even without overloading: if
you
> have an operation called "foo-bar" and the dash ('-') is not valid in
> identifiers,
> you'll have to map it to something else (fooBar, foobar, foox2DBar,
> foo45Bar,
> foo$2D$Bar), but no matter how clever you are you might get a conflict
> with another operation (called, e.g. "fooBar", or "foobar", or...).

Yes of course this problem exists today. However, I hope that
you'd agree that that is an entirely different level of the
problem than the one we are considering creating.

Finally, given that this proposal does not solve the original
problem (that of wanting a subtype to define an operation with
the same name), what problem does this solve?

Sanjiva.
Received on Thursday, 30 January 2003 20:30:36 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:58:22 GMT