My mistake, the @Inject in the My class needs to be a

org.apache.tapestry5.ioc.annotations.Inject;
or
org.apache.tapestry5.ioc.annotations.InjectResource;

Probably as (already stated - I think), the T5 @Inject uses a
MasterObjectProvider whereas the javax @Inject just looks up Services
- which the Logger isn't... ???

Steve.

On 15 June 2012 01:14, Steve Eynon <steve.ey...@alienfactory.co.uk> wrote:
> Just tried it on T5.3.3 and it worked fine with both @Inject annotations...
>
> Though I wouldn't advise injecting services into your module - that
> just seems... well, weird!
>
> Steve.
>
>
> On 15 June 2012 01:00, Muhammad Gelbana <m.gelb...@gmail.com> wrote:
>> Well thanks, that was my mistake !
>> Although now I tried calling the logger in a method called in the
>> contribute registry startup static method and still tapestry didn't resolve
>> it:
>>
>> public class *AppModule* {
>>
>> @Inject
>> private IMy my;
>> public static void bind(ServiceBinder binder) {
>> binder.bind(IMy.class, My.class);
>> }
>>
>> public void contributeRegistryStartup(OrderedConfiguration<Runnable>
>> configuration, final Logger log) {
>> my.a();
>> }
>> }
>>
>> package com.t5logging.services;
>> import javax.inject.Inject;
>> import org.slf4j.Logger;
>>
>> public class My implements IMy {
>>
>> @Inject
>> private Logger log;
>>
>> public My() {
>> }
>>
>> public void a() {
>> System.out.println(log);
>> log.info("Logging again");
>> }
>> }
>>
>> This still throws a service not implemented exception:
>> Running Jetty 6.1.26
>> .
>> //Saving some time
>> .
>> [DEBUG] AppModule.IMy Creating proxy for service IMy
>> [DEBUG] AppModule.IMy Loading class com.t5logging.services.My.
>> [DEBUG] AppModule.IMy Marking class com.t5logging.services.My to be
>> (re-)loaded
>> [DEBUG] AppModule.IMy BEGIN Analyzing com.t5logging.services.My
>> [DEBUG] AppModule.IMy   END Analyzing com.t5logging.services.My
>> [ERROR] ioc.Registry No service implements the interface org.slf4j.Logger.
>> [ERROR] ioc.Registry Operations trace:
>> [ERROR] ioc.Registry [ 1] Realizing service RegistryStartup
>> [ERROR] ioc.Registry [ 2] Instantiating service RegistryStartup
>> implementation via
>> org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger, List)
>> (at RegistryStartup.java:36) via
>> org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
>> TapestryIOCModule.java:49)
>> [ERROR] ioc.Registry [ 3] Creating plan to instantiate
>> org.apache.tapestry5.ioc.internal.services.RegistryStartup via public
>> org.apache.tapestry5.ioc.internal.services.RegistryStartup(org.slf4j.Logger,java.util.List)
>> [ERROR] ioc.Registry [ 4] Determining injection value for parameter #2
>> (java.util.List)
>> [ERROR] ioc.Registry [ 5] Collecting ordered configuration for service
>> RegistryStartup
>> [ERROR] ioc.Registry [ 6] Invoking
>> com.t5logging.services.AppModule.contributeRegistryStartup(OrderedConfiguration,
>> Logger) (at AppModule.java:39)
>> [ERROR] ioc.Registry [ 7] Reloading class com.t5logging.services.My.
>> [ERROR] ioc.Registry [ 8] Creating plan to instantiate
>> com.t5logging.services.My via public com.t5logging.services.My()
>> [ERROR] ioc.Registry [ 9] Calculating possible injection value for field
>> com.t5logging.services.My.log (org.slf4j.Logger)
>> [ERROR] ioc.Registry [10] Resolving object of type org.slf4j.Logger using
>> MasterObjectProvider
>> [ERROR] TapestryIOCModule.RegistryStartup Construction of service
>> RegistryStartup failed: Error invoking service contribution method
>> com.t5logging.services.AppModule.contributeRegistryStartup(OrderedConfiguration,
>> Logger): No service implements the interface org.slf4j.Logger.
>> java.lang.RuntimeException: Error invoking service contribution method
>> com.t5logging.services.AppModule.contributeRegistryStartup(OrderedConfiguration,
>> Logger): No service implements the interface org.slf4j.Logger.
>> at
>> org.apache.tapestry5.ioc.internal.ContributionDefImpl.invokeMethod(ContributionDefImpl.java:130)
>> at
>> org.apache.tapestry5.ioc.internal.ContributionDefImpl.contribute(ContributionDefImpl.java:80)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl$9.run(RegistryImpl.java:630)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:48)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:47)
>> at
>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:76)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.addToOrderedConfiguration(RegistryImpl.java:626)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.getOrderedConfiguration(RegistryImpl.java:480)
>> at
>> org.apache.tapestry5.ioc.internal.ServiceResourcesImpl$2.invoke(ServiceResourcesImpl.java:110)
>> at
>> org.apache.tapestry5.ioc.internal.ServiceResourcesImpl$2.invoke(ServiceResourcesImpl.java:107)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
>> at
>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
>> at
>> org.apache.tapestry5.ioc.internal.ServiceResourcesImpl.getOrderedConfiguration(ServiceResourcesImpl.java:105)
>> at
>> org.apache.tapestry5.ioc.internal.AbstractServiceCreator.getOrderedConfiguration(AbstractServiceCreator.java:123)
>> at
>> org.apache.tapestry5.ioc.internal.AbstractServiceCreator.access$200(AbstractServiceCreator.java:35)
>> at
>> org.apache.tapestry5.ioc.internal.AbstractServiceCreator$1.findResource(AbstractServiceCreator.java:103)
>> at
>> org.apache.tapestry5.ioc.internal.util.DelegatingInjectionResources.findResource(DelegatingInjectionResources.java:38)
>> at
>> org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateInjection(InternalUtils.java:231)
>> at
>> org.apache.tapestry5.ioc.internal.util.InternalUtils.access$000(InternalUtils.java:50)
>> at
>> org.apache.tapestry5.ioc.internal.util.InternalUtils$4.invoke(InternalUtils.java:289)
>> at
>> org.apache.tapestry5.ioc.internal.util.InternalUtils$4.invoke(InternalUtils.java:286)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
>> at
>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
>> at
>> org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParameters(InternalUtils.java:293)
>> at
>> org.apache.tapestry5.ioc.internal.util.InternalUtils$23.invoke(InternalUtils.java:1488)
>> at
>> org.apache.tapestry5.ioc.internal.util.InternalUtils$23.invoke(InternalUtils.java:1483)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
>> at
>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
>> at
>> org.apache.tapestry5.ioc.internal.util.InternalUtils.createConstructorConstructionPlan(InternalUtils.java:1480)
>> at
>> org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.getPlan(ConstructorServiceCreator.java:52)
>> at
>> org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:61)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
>> at
>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
>> at
>> org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29)
>> at
>> org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46)
>> at
>> org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:63)
>> at
>> org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:54)
>> at
>> org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
>> at
>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
>> at
>> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:66)
>> at
>> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54)
>> at $Runnable_452bb13e0afc.delegate(Unknown Source)
>> at $Runnable_452bb13e0afc.run(Unknown Source)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.performRegistryStartup(RegistryImpl.java:322)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryWrapper.performRegistryStartup(RegistryWrapper.java:80)
>> at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:118)
>> at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
>> at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>> at
>> org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:713)
>> at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
>> at
>> org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
>> at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
>> at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
>> at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>> at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
>> at org.mortbay.jetty.Server.doStart(Server.java:224)
>> at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>> at runjettyrun.Bootstrap.main(Bootstrap.java:82)
>> Caused by: org.apache.tapestry5.ioc.internal.OperationException: No service
>> implements the interface org.slf4j.Logger.
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:121)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:88)
>> at
>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
>> at
>> org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl.provide(MasterObjectProviderImpl.java:45)
>> at $MasterObjectProvider_452bb13e0adc.provide(Unknown Source)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.getObject(RegistryImpl.java:868)
>> at
>> org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getObject(ObjectLocatorImpl.java:57)
>> at
>> org.apache.tapestry5.ioc.internal.util.InternalUtils$25.run(InternalUtils.java:1567)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:48)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:47)
>> at
>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:76)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1116)
>> at
>> org.apache.tapestry5.ioc.internal.util.InternalUtils.extendPlanForInjectedFields(InternalUtils.java:1534)
>> at
>> org.apache.tapestry5.ioc.internal.util.InternalUtils.access$200(InternalUtils.java:50)
>> at
>> org.apache.tapestry5.ioc.internal.util.InternalUtils$23.invoke(InternalUtils.java:1496)
>> at
>> org.apache.tapestry5.ioc.internal.util.InternalUtils$23.invoke(InternalUtils.java:1483)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
>> at
>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
>> at
>> org.apache.tapestry5.ioc.internal.util.InternalUtils.createConstructorConstructionPlan(InternalUtils.java:1480)
>> at
>> org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.getPlan(ConstructorServiceCreator.java:52)
>> at
>> org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:61)
>> at
>> org.apache.tapestry5.ioc.internal.ReloadableServiceImplementationObjectCreator.createInstance(ReloadableServiceImplementationObjectCreator.java:52)
>> at
>> org.apache.tapestry5.ioc.internal.AbstractReloadableObjectCreator$1.invoke(AbstractReloadableObjectCreator.java:127)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
>> at
>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1121)
>> at
>> org.apache.tapestry5.ioc.internal.AbstractReloadableObjectCreator.createInstance(AbstractReloadableObjectCreator.java:121)
>> at
>> org.apache.tapestry5.ioc.internal.AbstractReloadableObjectCreator.createObject(AbstractReloadableObjectCreator.java:113)
>> at $IMy_452bb13e0aff.delegate(Unknown Source)
>> at $IMy_452bb13e0aff.a(Unknown Source)
>> at $IMy_452bb13e0afd.a(Unknown Source)
>> at
>> com.t5logging.services.AppModule.contributeRegistryStartup(AppModule.java:39)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>> at java.lang.reflect.Method.invoke(Unknown Source)
>> at
>> org.apache.tapestry5.ioc.internal.ContributionDefImpl.invokeMethod(ContributionDefImpl.java:120)
>> ... 69 more
>> Caused by: java.lang.RuntimeException: No service implements the interface
>> org.slf4j.Logger.
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.getServiceByTypeAlone(RegistryImpl.java:661)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.getServiceByTypeAndMarkers(RegistryImpl.java:681)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:640)
>> at
>> org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getService(ObjectLocatorImpl.java:47)
>> at
>> org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl$1.invoke(MasterObjectProviderImpl.java:60)
>> at
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
>> ... 108 more
>> 2012-06-14 18:55:47.604:WARN::failed app: java.lang.RuntimeException:
>> Exception constructing service 'RegistryStartup': Error invoking service
>> contribution method
>> com.t5logging.services.AppModule.contributeRegistryStartup(OrderedConfiguration,
>> Logger): No service implements the interface org.slf4j.Logger.
>> 2012-06-14 18:55:47.604:WARN::Failed startup of context
>> org.mortbay.jetty.webapp.WebAppContext@135f0a
>> {/,E:\Workspace\Eclipse\TapestryLogging\src\main\webapp}
>> java.lang.RuntimeException: Exception constructing service
>> 'RegistryStartup': Error invoking service contribution method
>> com.t5logging.services.AppModule.contributeRegistryStartup(OrderedConfiguration,
>> Logger): No service implements the interface org.slf4j.Logger.
>> at
>> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:75)
>> at
>> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54)
>> at $Runnable_452bb13e0afc.delegate(Unknown Source)
>> at $Runnable_452bb13e0afc.run(Unknown Source)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryImpl.performRegistryStartup(RegistryImpl.java:322)
>> at
>> org.apache.tapestry5.ioc.internal.RegistryWrapper.performRegistryStartup(RegistryWrapper.java:80)
>> at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:118)
>> at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
>> at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>> at
>> org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:713)
>> at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
>> at
>> org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
>> at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
>> at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
>> at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>> at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
>> at org.mortbay.jetty.Server.doStart(Server.java:224)
>> at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>> at runjettyrun.Bootstrap.main(Bootstrap.java:82)
>> 2012-06-14 18:55:47.637:INFO::Started SelectChannelConnector@0.0.0.0:80
>>
>>
>> On Thu, Jun 14, 2012 at 6:26 PM, Steve Eynon <steve.ey...@alienfactory.co.uk
>>> wrote:
>>
>>> Yeah, this isn't a T5 thing - it's Java!
>>>
>>>   @Inject
>>>   private Logger log;
>>>
>>>   public My() {
>>>        log.info("Logger injected in service using @javax.inject.Inject");
>>>   }
>>>
>>> T5 can't do field injection until it's constructed the class. But when
>>> T5 constructs the class you access the field --> NPE!
>>>
>>> Steve.
>>>
>>>
>>> On 15 June 2012 00:11, Taha Siddiqi <tawus.tapes...@gmail.com> wrote:
>>> > I don't think you can use "@Inject"ed value in the constructor.
>>> >
>>> > The constructor is called first and then injection is done. As you are
>>> accessing the service in constructor, at this point the field injection has
>>> not been done. And as Logger has not been build by the registry, you get
>>> Service not implemented error..
>>> >
>>> > regards
>>> > Taha
>>> >
>>> > On Jun 14, 2012, at 9:25 PM, Muhammad Gelbana wrote:
>>> >
>>> >> <TapestryLogging.zip>
>>> >
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>>
>>>
>>
>>
>> --
>> *Regards,*
>> *Muhammad Gelbana
>> Java Developer*

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to