OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

sca-j message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [sca-j] JAVA-1: Moving the Domain URI from getService() to newInstance()


What I had in mind was the following:

package org.oasisopen.sca.client;

import java.net.URI;
import java.util.Properties;

public abstract class SCAClientFactory {

     protected static SCAClientFactoryFinder defaultFactoryFinder;
     private URI domainURI;

     private SCAClientFactory() {
     }

     protected SCAClientFactory(URI domainURI) {
         this.domainURI = domainURI;
     }

     protected URI getDomainURI() {
         return domainURI;
     }

     public static SCAClient newInstance() {
         return newInstance(null, null, domainURI);
     }

     public static SCAClient newInstance(Properties properties) {
         return newInstance(properties, null, domainURI);
     }

     public static SCAClient newInstance(ClassLoader classLoader) {
         return newInstance(null, classLoader, domainURI);
     }

     public static SCAClient newInstance(Properties properties,
                                         ClassLoader classLoader
                                         URI domainURI) {
         final SCAClientFactoryFinder finder =
             defaultFactoryFinder != null ? defaultFactoryFinder :
             new SCAClientFactoryFinderImpl();
         final SCAClientFactory factory
             = finder.find(properties, classLoader, domainURI);
         return factory.createSCAClient();
     }

     protected abstract SCAClient createSCAClient();
}

The protected method getDomainURI() allows the vendor-specific
subclass code to access the URI that was passed on the one-arg
constructor.  IMO this should not be a public method because it is
part of the SPI, not the API.

   Simon

Mike Edwards wrote:
> 
> Simon,
> 
> I had not gone in for the enforcement of the one arg constructor in the 
> vendor ClientFactory classes, although
> the default FactoryFinder assumed its presence:
> 
>             Constructor<? *extends* SCAClientFactory> URIConstructor =
>                     factoryImplClass.getConstructor(domainURI.getClass());
> 
> 
> I can buy the argument for enforcement in the way you suggest and add 
> the required constructor methods
> to SCAClientFactory.
> 
> What is the argument for the protected getDomainURI() method on 
> SCAClientFactory?  I can more easily see the argument
> for a public version of such a method, although it did not seem 
> essential, which is why I left it out (to keep it as simple as possible)
> 
> Yours,  Mike.
> 
> Strategist - Emerging Technologies, SCA & SDO.
> Co Chair OASIS SCA Assembly TC.
> IBM Hursley Park, Mail Point 146, Winchester, SO21 2JN, Great Britain.
> Phone & FAX: +44-1962-818014    Mobile: +44-7802-467431  
> Email:  mike_edwards@uk.ibm.com
> 
> Simon Nash <oasis@cjnash.com> wrote on 25/06/2009 11:31:24:
>  > Mike Edwards wrote:
>  > >
>  > > Folks,
>  > >
>  > > I've done a pass at implementing Simon's thoughts in spec form here:
>  > >
>  > > http://www.oasis-open.org/apps/org/workgroup/sca-j/download.php/
>  > 33076/sca-javacaa-1.1-spec-cd02-rev3%20Issue1%20rev%207.doc
>  > >
>  > > http://www.oasis-open.org/apps/org/workgroup/sca-j/download.php/
>  > 33077/sca-javacaa-1.1-spec-cd02-rev3%20Issue1%20rev%207.pdf
>  > >
>  > I took a quick look through this and I don't see anything to support
>  > the following requirement from my previous email about this:
>  >
>  > To make this work in the VendorA/VendorB situation that we have
>  > been discussing, it would be necessary to also do one of the
>  > following:
>  >   a) add additional methods setDomainURI() and getDomainURI() to
>  >      the SCAClientFactory abstract class
>  >   b) require every factory to have a one-argument constructor that
>  >      takes the domain URI as an argument.  This could be enforced by
>  >      putting a private no-argument constructor and a protected
>  >      one-argument contructor on the SCAClientFactory abstract class,
>  >      together with a protected concrete getDomainURI() method that
>  >      returns the domain URI.
>  > Of these two options, my preference is for b).
>  >
>  > Please refer to my previous email for more detail on why this
>  > is needed.
>  >
> 
> 
> 
> ------------------------------------------------------------------------
> 
> /
> /
> 
> /Unless stated otherwise above:
> IBM United Kingdom Limited - Registered in England and Wales with number 
> 741598.
> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU/
> 
> 
> 
> 
> 
> 




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]