[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]