On 30/09/15 16:20, Deva Sagar wrote:
Hi Georgiy,
I think both Miran and I are referring to the mention of
SAAJMetaFactory in the bullet list about the public newInstance()
method. The Javadoc of the SAAJMetaFactory class still describes it as
an SPI and it is accessible from package-info. This is no different
from the current public Javadocs.
Thanks,
Deva
On Sep 30, 2015, at 9:16 AM, Georgiy Rakov <georgiy.ra...@oracle.com
<mailto:georgiy.ra...@oracle.com>> wrote:
On 29.09.2015 17:43, Deva Sagar wrote:
Hi Miran,
Sorry for the delay in responding to this - I was busy with WLS
release close down, and now I have moved to a different job in the
cloud organization outside of WLS and web services.
Regarding your question in #3 - I think Georgiy made a good
observation about SAAJMetaFactory - making a public newInstance
method as you suggest would make it agree with the package-info, but
does not correspond to the API specification. The package-info in
Java SE 8 API docs says "SAAJMetaFactory is a service provider
interface. There are no public methods on this class.” If we put in
a public newInstance() method, it does not agree with this statement
in API Javadoc. It might be better in my opinion to
remove SAAJMetaFactory mention from package-info.java unless there
is a good reason to keep it.
Hello,
according to my understanding the idea of SAAJMetaFactory is for SPI
developer to subclass it and thus to create a custom SAAJMetaFactory
implementation.
Yes, it's current state - the only description of lookup/instantiation
user SAAJMetaFactory is statement that it is service provider interaface
(stays unchanged):
https://docs.oracle.com/javase/8/docs/api/javax/xml/soap/SAAJMetaFactory.html
Service loader is the only specification here.
Afterwards user should configure SAAJ API in order it could use that
custom implementation.
User configuration controls discovery of implementation when used
newInstance method on other factories (MessageFactory, SOAPFactory,
SOAPConnectionFactory). If no implementation found, the fallback is user
(or default) SAAJMetaFactory.newXXXFactory()
But if SAAJMetaFactory mention from package-info.java is removed
there will be actually no spec defining how to configure SAAJ API for
using custom SAAJMetaFactory, or do I miss spec defining it?
No, there is still statement about service provider interface.
BTW: from this perspective referring to SAAJMetaFactory newInstance
method in spec is not relevant since it's SAAJ API implementation
internal machinery.
Yes, it is internal.
Actually I thing SAAJ API is pretty complicated already, so not adding
another spec for SAAJMetaFactory discovery is good idea ...
Thanks
Miran
So I believe if SAAJMetaFactory mention from package-info.java is
removed the process of SAAJMetaFactory instantiation should be
described somehow in another place and without mentioning newInstance
method. Maybe it's worth rather modifying than removing this
mentioning in package-info.java?
Thanks,
Georgiy.
The rest of your changes look ok to me. Also cc’ing Chen for any
additional comments
Deva
On Sep 29, 2015, at 9:45 AM, Miroslav Kos <miroslav....@oracle.com>
wrote:
On 25/09/15 20:24, Georgiy Rakov wrote:
Hello Miroslav,
sorry for delay, was busy due to deadlines.
I think it's just spec I am to review. Some comments for the
moment please see below:
1. package-info.java:
* <li>Checks if a system property with the same name as the factory
class is set (/_*i.e.*_/
* {@code javax.xml.soap.SOAPFactory}).
I guess "e.g." is meant, that is "for example"?
Sure, thanks.
2. SAAJMetaFactory.java:
Following is specified normatively:
62 * <p>Property {@code javax.xml.soap.MetaFactory} used in previous
63 * specifications (up to 1.3) is still supported, but it is strongly
recommended to migrate to new property
64 * {@code javax.xml.soap.SAAJMetaFactory}.
while in package-info.java: the same idea is specified as API note
that is non-normatively:
* @apiNote
* <p>For {@link javax.xml.soap.SAAJMetaFactory}, property {@code
javax.xml.soap.MetaFactory} used in previous
* specifications (up to 1.3) is still supported, but it is strongly
recommended to migrate to new property
* {@code javax.xml.soap.SAAJMetaFactory}.
*/
I believe this idea should be specified everywhere the same way
that is either normatively or non-normatively. If it's to be
defined normatively more details should be specified I believe.
Made non-normative.
3. SAAJMetaFactory.getInstance method is package private. So:
- This method is not supposed to be used by users, is it?
- The javadoc of this method isn't actually a public
specification. Thus Oracle claims nothing by it and external Java
SE implementers are not required to follow this JavaDoc, that is
this JavaDoc is intended to be used internally only, isn't it?
I understand that this was before, but It looks very strange. Is
this really not a mistake? BTW: this method and spec are not
visible in API JavaDoc
<https://docs.oracle.com/javase/8/docs/api/javax/xml/soap/SAAJMetaFactory.html>.
It looks like a mistake moreover because public specification
defined in package-info.java being reviewed refers to it:
* There are several factories defined in the SAAJ API to discover and load
specific implementation:
*
* <ul>
* <li>{@link javax.xml.soap.SOAPFactory}
* <li>{@link javax.xml.soap.MessageFactory}
* <li>{@link javax.xml.soap.SOAPConnectionFactory}
/_** <li>{@link javax.xml.soap.SAAJMetaFactory}*_/
* </ul>
*
* These factories define {@code/_*newInstance()*_/} method which uses a
common lookup procedure to determine
* the implementation class:
It's good catch - it looks like error. An easy fix would be change
the method to newInstance and make it public - Deva, would you agree?
http://cr.openjdk.java.net/~mkos/8131334/specdiff.04/index.html
Anyway those are changes to API - should I withdraw
http://ccc.us.oracle.com/8131334 and create new one?
Thanks
Miran
Thank you,
Goergiy.
On 25.09.2015 16:34, Miroslav Kos wrote:
Ping ...
On 11/09/15 17:57, Miroslav Kos wrote:
Hi again,
would somebody find a time to review?
Thanks
Miran
On 20/08/15 16:17, Miroslav Kos wrote:
Hi everybody,
I am sending changes for review for
JDK-8131334: SAAJ Plugability Layer: using java.util.ServiceLoader
JBS: https://bugs.openjdk.java.net/browse/JDK-8131334
webrev: http://cr.openjdk.java.net/~mkos/8131334/jaxws.01/
It's about migrating to standard java.util.ServiceLoader. This
part of service discovery was implemented previously "own" way.
There are some changes in javadoc and implementation has been
refactored in order to use same code as in JAX-WS and JAX-B.
Testing - I run JAX-WS unit tests (JAX-WS standalone repo),
JCK9 + new tests specificaly developed for testing service
discovery in SAAJ.
Thanks
Miran