I wrote an object provider for injecting web services into another service.
This hivemind fragment shows it declaration:
<service-point id="PingHolder"
interface="de.compeople.spirit.communication.base.mikrokernel.objectprovider.IPingHolder">
<invoke-factory>
<construct
class="de.compeople.spirit.communication.base.mikrokernel.objectprovider.PingHolder"
autowire-services="false">
<object>web-service:Ping</object>
</construct>
</invoke-factory>
</service-point>
A web service has a logical name (Ping) and its type is derived from the
injected property/contructor parameter.
This provider works quite well, but while debugging I recognised that the
provideObject() method within the object provider
is called twice. And I have no idea why. From eclipse I have the two
stacktraces where it stops (breakpoint) in the object provider:
Thread [main] (Suspended (breakpoint at line 42 in
de.compeople.spirit.communication.base.microkernel.objectprovider.WebServiceObjectProvider))
de.compeople.spirit.communication.base.microkernel.objectprovider.WebServiceObjectProvider.provideObject(org.apache.hivemind.internal.Module,
java.lang.Class, java.lang.String, org.apache.hivemind.Location) line: 42
$ObjectProvider_1027bec98d2.provideObject(org.apache.hivemind.internal.Module,
java.lang.Class, java.lang.String, org.apache.hivemind.Location) line: not
available
org.apache.hivemind.service.impl.ObjectTranslator.translate(org.apache.hivemind.internal.Module,
java.lang.Class, java.lang.String, org.apache.hivemind.Location) line: 75
$Translator_1027bec98c2.translate(org.apache.hivemind.internal.Module,
java.lang.Class, java.lang.String, org.apache.hivemind.Location) line: not
available
org.apache.hivemind.service.impl.BuilderPropertyFacet.getFacetValue(org.apache.hivemind.ServiceImplementationFactoryParameters,
java.lang.Class) line: 41
org.apache.hivemind.service.impl.BuilderFactoryLogic.instantiateExplicitConstructorInstance(java.lang.Class,
java.util.List) line: 135
===========
org.apache.hivemind.service.impl.BuilderFactoryLogic.instantiateCoreServiceInstance()
line: 112
org.apache.hivemind.service.impl.BuilderFactoryLogic.createService() line: 77
org.apache.hivemind.service.impl.BuilderFactory.createCoreServiceImplementation(org.apache.hivemind.ServiceImplementationFactoryParameters)
line: 42
org.apache.hivemind.impl.InvokeFactoryServiceConstructor.constructCoreServiceImplementation()
line: 84
org.apache.hivemind.impl.servicemodel.SingletonServiceModel(org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl).constructCoreServiceImplementation()
line: 106
org.apache.hivemind.impl.servicemodel.SingletonServiceModel(org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl).constructNewServiceImplementation()
line: 156
org.apache.hivemind.impl.servicemodel.SingletonServiceModel(org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl).constructServiceImplementation()
line: 138
org.apache.hivemind.impl.servicemodel.SingletonServiceModel.getActualServiceImplementation()
line: 68
$IPingHolder_1027bec98eb._service() line: not available
$IPingHolder_1027bec98eb.getPing() line: not available
$IPingHolder_1027bec98ea.getPing() line: not available
de.compeople.spirit.communication.base.mikrokernel.objectprovider.WebServiceObjectProviderUsageTest.testBuildWebServiceWithoutTimeoutAndConstructorInjection()
line: 39
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method,
java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object,
java.lang.Object[]) line: 39
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object,
java.lang.Object[]) line: 25
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line:
585
de.compeople.spirit.communication.base.mikrokernel.objectprovider.WebServiceObjectProviderUsageTest(junit.framework.TestCase).runTest()
line: 154
de.compeople.spirit.communication.base.mikrokernel.objectprovider.WebServiceObjectProviderUsageTest(junit.framework.TestCase).runBare()
line: 127
junit.framework.TestResult$1.protect() line: 106
junit.framework.TestResult.runProtected(junit.framework.Test,
junit.framework.Protectable) line: 124
junit.framework.TestResult.run(junit.framework.TestCase) line: 109
de.compeople.spirit.communication.base.mikrokernel.objectprovider.WebServiceObjectProviderUsageTest(junit.framework.TestCase).run(junit.framework.TestResult)
line: 118
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(java.lang.String[],
java.lang.String) line: 598
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run() line: 354
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(java.lang.String[])
line: 219
Thread [main] (Suspended (breakpoint at line 42 in
de.compeople.spirit.communication.base.microkernel.objectprovider.WebServiceObjectProvider))
de.compeople.spirit.communication.base.microkernel.objectprovider.WebServiceObjectProvider.provideObject(org.apache.hivemind.internal.Module,
java.lang.Class, java.lang.String, org.apache.hivemind.Location) line: 42
$ObjectProvider_1027bec98d3.provideObject(org.apache.hivemind.internal.Module,
java.lang.Class, java.lang.String, org.apache.hivemind.Location) line: not
available
$ObjectProvider_1027bec98d2.provideObject(org.apache.hivemind.internal.Module,
java.lang.Class, java.lang.String, org.apache.hivemind.Location) line: not
available
org.apache.hivemind.service.impl.ObjectTranslator.translate(org.apache.hivemind.internal.Module,
java.lang.Class, java.lang.String, org.apache.hivemind.Location) line: 75
$Translator_1027bec98c2.translate(org.apache.hivemind.internal.Module,
java.lang.Class, java.lang.String, org.apache.hivemind.Location) line: not
available
org.apache.hivemind.service.impl.BuilderPropertyFacet.getFacetValue(org.apache.hivemind.ServiceImplementationFactoryParameters,
java.lang.Class) line: 41
org.apache.hivemind.service.impl.BuilderPropertyFacet.isAssignableToType(org.apache.hivemind.ServiceImplementationFactoryParameters,
java.lang.Class) line: 54
org.apache.hivemind.service.impl.BuilderFactoryLogic.instantiateExplicitConstructorInstance(java.lang.Class,
java.util.List) line: 132
===========
org.apache.hivemind.service.impl.BuilderFactoryLogic.instantiateCoreServiceInstance()
line: 112
org.apache.hivemind.service.impl.BuilderFactoryLogic.createService() line: 77
org.apache.hivemind.service.impl.BuilderFactory.createCoreServiceImplementation(org.apache.hivemind.ServiceImplementationFactoryParameters)
line: 42
org.apache.hivemind.impl.InvokeFactoryServiceConstructor.constructCoreServiceImplementation()
line: 84
org.apache.hivemind.impl.servicemodel.SingletonServiceModel(org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl).constructCoreServiceImplementation()
line: 106
org.apache.hivemind.impl.servicemodel.SingletonServiceModel(org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl).constructNewServiceImplementation()
line: 156
org.apache.hivemind.impl.servicemodel.SingletonServiceModel(org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl).constructServiceImplementation()
line: 138
org.apache.hivemind.impl.servicemodel.SingletonServiceModel.getActualServiceImplementation()
line: 68
$IPingHolder_1027bec98eb._service() line: not available
$IPingHolder_1027bec98eb.getPing() line: not available
$IPingHolder_1027bec98ea.getPing() line: not available
de.compeople.spirit.communication.base.mikrokernel.objectprovider.WebServiceObjectProviderUsageTest.testBuildWebServiceWithoutTimeoutAndConstructorInjection()
line: 39
sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method,
java.lang.Object, java.lang.Object[]) line: not available [native method]
sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object,
java.lang.Object[]) line: 39
sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object,
java.lang.Object[]) line: 25
java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line:
585
de.compeople.spirit.communication.base.mikrokernel.objectprovider.WebServiceObjectProviderUsageTest(junit.framework.TestCase).runTest()
line: 154
de.compeople.spirit.communication.base.mikrokernel.objectprovider.WebServiceObjectProviderUsageTest(junit.framework.TestCase).runBare()
line: 127
junit.framework.TestResult$1.protect() line: 106
junit.framework.TestResult.runProtected(junit.framework.Test,
junit.framework.Protectable) line: 124
junit.framework.TestResult.run(junit.framework.TestCase) line: 109
de.compeople.spirit.communication.base.mikrokernel.objectprovider.WebServiceObjectProviderUsageTest(junit.framework.TestCase).run(junit.framework.TestResult)
line: 118
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(java.lang.String[],
java.lang.String) line: 598
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run() line: 354
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(java.lang.String[])
line: 219
As you can see the object provider is reached from two different points within
BuilderFactoryLogic.instantiateExplicitConstructorInstance at line 132 and line
135 (marked with ===== in the stacktraces). Everything �before� is the same.
I am using 1.1 alpha 2.
Stefan
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]