Stefan,
Thank you for the detailed test case! I assume you were running your
tests against the HiveMind 1.0 codebase, because the tests don't fail
if you test against HiveMind 1.1-alpha1. This problem was fixed with
the overhaul of the autowiring in BuilderFactory, which now also
supports constructor parameter autowiring.
Let me know if you have more problems with this.
Regards,
--knut
On Mon, 24 Jan 2005 00:36:20 -0800, Liebig, Stefan
<[EMAIL PROTECTED]> wrote:
> Knut,
>
> here is my �little� HiveMindTestCase (7 files):
>
> playground.IPing.java:
> package playground;
> public interface IPing {
> String ping();
> }
>
> playground.IPingHolder.java:
> package playground;
> import playground.IPing;
> public interface IPingHolder {
> IPing getPing();
> }
> playground.ObjectProviderMock.java:
> package playground;
> import org.apache.hivemind.Location;
> import org.apache.hivemind.internal.Module;
> import org.apache.hivemind.service.ObjectProvider;
> public class ObjectProviderMock implements ObjectProvider {
> public static Class propertyType;
> public ObjectProviderMock() {
> super();
> }
> /**
> * Interprets the locator as a service id, and passes it to
> * [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> Module#getService(String,
> Class)}.
> */
> public Object provideObject( Module contributingModule, Class propertyType,
> String locator, Location location ) {
> ObjectProviderMock.propertyType = propertyType;
> return new Ping();
> }
> }
>
> playground.ObjectProviderTest.java:
> package playground;
> import org.apache.hivemind.Registry;
> import org.apache.hivemind.test.HiveMindTestCase;
> public class ObjectProviderTest extends HiveMindTestCase {
> public void testPingHolderConstructor() throws Exception {
> Registry registry = buildFrameworkRegistry( "objectprovidertest.xml" );
> IPingHolder service = (IPingHolder) registry.getService(
> "playground.PingHolderConstructor", IPingHolder.class );
> service.getPing().ping();
> assertSame( IPing.class, ObjectProviderMock.propertyType );
> }
> public void testPingHolderSetter() throws Exception {
> Registry registry = buildFrameworkRegistry( "objectprovidertest.xml" );
> IPingHolder service = (IPingHolder) registry.getService(
> "playground.PingHolderSetter", IPingHolder.class );
> service.getPing().ping();
> assertSame( IPing.class, ObjectProviderMock.propertyType );
> }
> }
>
> playground.Ping.java:
> package playground;
> public class Ping implements IPing {
> public Ping() {
> super();
> }
> public String ping() {
> return "ping..";
> }
> }
>
> playground.PingHolder.java:
> package playground;
> import playground.IPing;
> public class PingHolder implements IPingHolder {
> private IPing ping;
> /**
> */
> public PingHolder() {
> super();
> }
> /**
> * @param ping
> */
> public PingHolder( IPing ping ) {
> super();
> this.ping = ping;
> }
> /**
> * @see playground.IPingHolder#getPing()
> */
> public IPing getPing() {
> return ping;
> }
> /**
> * @param ping The ping to set.
> */
> public void setPing( IPing ping ) {
> this.ping = ping;
> }
> }
>
> playground.objectprovidertest.xml:
> <?xml version="1.0"?>
> <module id="playground" version="1.0.0">
> <contribution configuration-id="hivemind.ObjectProviders">
> <provider prefix="test" service-id="ObjectProviderMock"/>
> </contribution>
> <service-point id="ObjectProviderMock"
> interface="org.apache.hivemind.service.ObjectProvider">
> <create-instance class="playground.ObjectProviderMock"/>
> </service-point>
>
> <service-point id="Ping" interface="playground.IPing">
> <create-instance class="playground.Ping"/>
> </service-point>
> <service-point id="PingHolderConstructor" interface="playground.IPingHolder">
> <invoke-factory>
> <construct class="playground.PingHolder">
> <object>test:Ping</object>
> </construct>
> </invoke-factory>
> </service-point>
>
> <service-point id="PingHolderSetter" interface="playground.IPingHolder">
> <invoke-factory>
> <construct class="playground.PingHolder">
> <set-object property="ping" value="test:Ping"/>
> </construct>
> </invoke-factory>
> </service-point>
>
> </module>
>
> Stefan
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]