Hi,
Here is my opinion about the three options:
1) -0.5 on A)
2) +1 on B)
3) -0.5 on C)
A) violates the SCA assembly spec.
2535 ... New interface types, implementation types and binding types that
are defined using
2536 this extensibility model, which are not part of these SCA
specifications must be defined in
2537 namespaces other than the SCA namespace.
C) IMO, the composite file should conform to the XSD defined by the SCA
spec. The example listed under C) is not a valid SCA composite definition.
We can make the "http://www.osoa.org/xmlns/sca/1.0" as the default namespace
to avoid the repeating prefixes.
B) is right usage of XML namespaces.
Hopefully, the SCA tooling can help ease the XML namespace declarations.
Thanks,
Raymond
----- Original Message -----
From: "Jean-Sebastien Delfino" <[EMAIL PROTECTED]>
To: <tuscany-dev@ws.apache.org>
Sent: Sunday, August 19, 2007 5:07 PM
Subject: Re: [jira] Closed: (TUSCANY-1053) Use a Tuscany namespace for all
non-spec'd Tuscany extensions
Luciano Resende wrote:
Sebastien wrote :
IMO application developers shouldn't have to suffer from the
complexity of XML...
How about supporting composites without namespace declarations at all?
I'm trying to understand all the proposals here, what would be the
side effects of going with your proposal ? This seems like simple, and
simple is good...
Before getting into the side effects, here are three examples:
[A] What we have right now, standard SCA extensions and tuscany extensions
sharing the standard SCA namespace
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://bigbank"
xmlns:bb="http://bigbank"
name="BigBank">
<component name="AccountServiceComponent">
<service name="AccountService">
<binding.jsonrpc uri="/AccountJSONService"/>
<binding.ws
wsdlElement="http://bigbank#wsdl.port(AccountService/AccountServiceSoap)"/>
<binding.sca/>
</service>
<implementation.java class="bigbank.account.AccountServiceImpl"/>
<reference name="accountDataService"
target="AccountDataServiceComponent"/>
<reference name="calculatorService">
<binding.rmi host="localhost" port="8099"
serviceName="CalculatorRMIService"/>
</reference>
<reference name="stockQuoteService">
<binding.ws
wsdlElement="http://stockquote#wsdl.port(StockQuoteService/StockQuoteSoapPort)"/>
</reference>
<property name="currency">EURO</property>
</component>
<component name="AccountFeedComponent">
<service name="Collection">
<binding.rss uri="/rss"/>
<binding.atom uri="/atom"/>
</service>
<implementation.java class="bigbank.account.feed.AccountFeedImpl"/>
<reference name="accountService" target="AccountServiceComponent"/>
</component>
<component name="AccountDataServiceComponent">
<implementation.composite name="bb:AccountData"/>
</component>
<component name="WebResourceComponent">
<service name="Resource">
<binding.resource uri="/"/>
</service>
<implementation.resource location="web"/>
</component>
</composite>
(B) What IMO is a more correct use of XML namespaces, standard SCA
extensions in the standard SCA namespace, and Tuscany extensions in a
Tuscany namespace
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
xmlns:t="http://incubator.apache.org/xmlns/tuscany/1.0"
targetNamespace="http://bigbank"
xmlns:bb="http://bigbank"
name="BigBank">
<component name="AccountServiceComponent">
<service name="AccountService">
<t:binding.jsonrpc uri="/AccountJSONService"/>
<binding.ws
wsdlElement="http://bigbank#wsdl.port(AccountService/AccountServiceSoap)"/>
<binding.sca/>
</service>
<implementation.java class="bigbank.account.AccountServiceImpl"/>
<reference name="accountDataService"
target="AccountDataServiceComponent"/>
<reference name="calculatorService">
<t:binding.rmi host="localhost" port="8099"
serviceName="CalculatorRMIService"/>
</reference>
<reference name="stockQuoteService">
<binding.ws
wsdlElement="http://stockquote#wsdl.port(StockQuoteService/StockQuoteSoapPort)"/>
</reference>
<property name="currency">EURO</property>
</component>
<component name="AccountFeedComponent">
<service name="Collection">
<t:binding.rss uri="/rss"/>
<t:binding.atom uri="/atom"/>
</service>
<implementation.java class="bigbank.account.feed.AccountFeedImpl"/>
<reference name="accountService" target="AccountServiceComponent"/>
</component>
<component name="AccountDataServiceComponent">
<implementation.composite name="bb:AccountData"/>
</component>
<component name="WebResourceComponent">
<service name="Resource">
<t:binding.resource uri="/"/>
</service>
<implementation.resource location="web"/>
</component>
</composite>
[C] What an application developer could write if we allowed namespaces to
be omitted
<composite
name="BigBank">
<component name="AccountServiceComponent">
<service name="AccountService">
<binding.jsonrpc uri="/AccountJSONService"/>
<binding.ws
wsdlElement="http://bigbank#wsdl.port(AccountService/AccountServiceSoap)"/>
<binding.sca/>
</service>
<implementation.java class="bigbank.account.AccountServiceImpl"/>
<reference name="accountDataService"
target="AccountDataServiceComponent"/>
<reference name="calculatorService">
<binding.rmi host="localhost" port="8099"
serviceName="CalculatorRMIService"/>
</reference>
<reference name="stockQuoteService">
<binding.ws
wsdlElement="http://stockquote#wsdl.port(StockQuoteService/StockQuoteSoapPort)"/>
</reference>
<property name="currency">EURO</property>
</component>
<component name="AccountFeedComponent">
<service name="Collection">
<binding.rss uri="/rss"/>
<binding.atom uri="/atom"/>
</service>
<implementation.java class="bigbank.account.feed.AccountFeedImpl"/>
<reference name="accountService" target="AccountServiceComponent"/>
</component>
<component name="AccountDataServiceComponent">
<implementation.composite name="AccountData"/>
</component>
<component name="WebResourceComponent">
<service name="Resource">
<binding.resource uri="/"/>
</service>
<implementation.resource location="web"/>
</component>
</composite>
Now here are a few "side effects" :)
Option [A]
- I cannot validate this composite against the standard SCA schemas (it'll
show errors in my XSD aware XML editor) our Tuscany extensions violate the
standard SCA namespace
- I have one less namespace and prefix declaration to care about
Option [B]
- I can validate this composite against the standard SCA schemas, as the
Tuscany extensions match the xsd:any namespace="##other" extensibility
points in the SCA schema
- I have one more namespace and prefix declaration to write covering the
Tuscany extensions
Option [C]
- I don't need to worry about namespaces, which are usually long and error
prone, writing the composite is simpler
- I cannot validate this composite against the standard SCA schemas as it
does not declare namespaces
My preference is to do both:
- [B], be correct with respect to our usage of XML schema, to make people
who care about XML schema validation and use XML schema tools happy
- and [C] allow people who don't like namespaces to not have to write them
Why do I like [C] as well? Here are a few examples:
<html>
<body>
Hello! I can write XML without namespaces, isn't that nice?
</body>
</html>
An axis2.xml configuration file
http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/resources/org/apache/tuscany/sca/binding/axis2/engine/config/axis2.xml
An MS WCF configuration
http://msdn2.microsoft.com/en-us/library/ms735103.aspx
A Tomcat server.xml file
http://tomcat.apache.org/tomcat-6.0-doc/default-servlet.html
All work without namespaces...
--
Jean-Sebastien
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]