Re: Spring annotations fail to inject into webmodels

2009-09-12 Thread pieter claassen
My abstract basewebmodel constructor from which all my webmodels inherit
marks inself for Spring injection but still no injection takes place. Any
suggestions where I can look?

Can I run the injection in the constructor of an abstract model from which I
inherit all my webmodels? I cannot see why not?

Thanks in advanced.
P



BaseWebModel.java
=
...
public BaseWebModel(Long id) {
this.id = id;
InjectorHolder.getInjector().inject(this);
}

here is an example of my TemplateWebModel that uses @SpringBean to set
TemplateFactory
TemplateWebModel.java
===

...
@SpringBean(name=TemplateFactory)
private TemplateFactory templateFactory;

public TemplateWebModel(Template template) {
super(template);
}



P

On Fri, Sep 11, 2009 at 10:42 AM, jWeekend jweekend_for...@cabouge.comwrote:


 Pieter,

 If you want to use Spring's @Configuarble you'll need to enable Load Time
 Weaving or Complie Time Weaving.

 To use @SpringBean with an object that is not a Wicket Component you need
 to
 InjectorHolder.getInjector().inject(this) on initialisation of your object.

 The benefit of the latter approach is that you do not need to introduce
 weaving and that Wicket will make sure you have a serialisable proxy
 injected.

 Regards - Cemal
 jWeekend
 OO  Java Technologies, Wicket Training and Development
 http://jWeekend.com




 Pieter Claassen wrote:
 
  I am using maven, spring 2.5.6, wicket 1.4 and am trying to inject my
  DAO's
  into my wicket models but I find that Spring just ignores my advice.
 
  My question:
  1. @SpringBean only works on stuff that inherits from Component. What do
 I
  do with things like session and models that don't? I am trying to use
  @Configurable but that is being ignored.
  2. My POM deps are below. What should I pull in to have @Configurable
  working?
  3. BTW. When I comment the bean out of my XML config, then I do get an
  error
  so I am not sure if I am doing something very small wrong?
 
  Thanks.
  Pieter
 
  pom.xml
  ===
  ...
 dependency
  groupIdorg.springframework/groupId
  artifactIdspring-core/artifactId
  version${spring.version}/version
  /dependency
 
  dependency
  groupIdorg.apache.wicket/groupId
  artifactIdwicket-spring/artifactId
  version${wicket.version}/version
!--Same results whether I include or exclude the next session--
exclusions
  exclusion
groupIdorg.springframework/groupId
artifactIdspring/artifactId
  /exclusion
/exclusions
  /dependency
  
 
 
  TemplateWebModel.java
  ==
  .
  @Configurable
  public class TemplateWebModel extends AbstractDataSetWebModelTemplate {
 
  private TemplateFactory templateFactory;
 
  public TemplateFactory getTemplateFactory() {
  return templateFactory;
  }
 
  public void setTemplateFactory(TemplateFactory templateFactory) {
 throw new RuntimeException(REACHED TEMPLATE FACTORY SET); //This
  setter is never run
  //this.templateFactory = templateFactory;
  }
  .
 
  WicketApplicationDefinitition.xml
  ==
 
  ?xml version=1.0 encoding=UTF-8?
  beans xmlns=http://www.springframework.org/schema/beans;
 xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
 xmlns:context=http://www.springframework.org/schema/context;
 xsi:schemaLocation=
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context-2.5.xsd;
 
  context:annotation-config/
  !--aop:aspectj-autoproxy/--
 
  !-- a bean that supplies my primary application database client --
  bean id=appDataSource class=com.musmato.dao.ApplicationDBFactory
  destroy-method=close
  constructor-arg
  ref bean=appConfig /
  /constructor-arg
  /bean
 
  !-- a bean that supplies a network database client for template uploads
  --
  bean id=rootDataSource class=com.musmato.dao.RootDBFactory
  destroy-method=close
  constructor-arg
  ref bean=appConfig /
  /constructor-arg
  /bean
  .
  bean id=TemplateFactory class=com.musmato.dao.TemplateFactory
  property name=client ref=appDataSource /
  /bean
  
 
 
 
 
 
  --
  Pieter Claassen
  musmato.com
 
 

 --
 View this message in context:
 http://www.nabble.com/Spring-annotations-fail-to-inject-into-webmodels-tp25396625p25397205.html
 Sent from the Wicket - User mailing list archive at Nabble.com.


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




-- 
Pieter 

Re: Spring annotations fail to inject into webmodels

2009-09-12 Thread Olger Warnier

Did you add the listener to your spring context ?

bean id=wicketInstantiationListener  
class=org.apache.wicket.injection.ComponentInjector/



On 12 sep 2009, at 11:53, pieter claassen wrote:

My abstract basewebmodel constructor from which all my webmodels  
inherit
marks inself for Spring injection but still no injection takes  
place. Any

suggestions where I can look?

Can I run the injection in the constructor of an abstract model from  
which I

inherit all my webmodels? I cannot see why not?

Thanks in advanced.
P



BaseWebModel.java
=
...
   public BaseWebModel(Long id) {
   this.id = id;
   InjectorHolder.getInjector().inject(this);
   }

here is an example of my TemplateWebModel that uses @SpringBean to set
TemplateFactory
TemplateWebModel.java
===

...
   @SpringBean(name=TemplateFactory)
   private TemplateFactory templateFactory;

public TemplateWebModel(Template template) {
   super(template);
   }



P

On Fri, Sep 11, 2009 at 10:42 AM, jWeekend jweekend_for...@cabouge.com 
wrote:




Pieter,

If you want to use Spring's @Configuarble you'll need to enable  
Load Time

Weaving or Complie Time Weaving.

To use @SpringBean with an object that is not a Wicket Component  
you need

to
InjectorHolder.getInjector().inject(this) on initialisation of your  
object.


The benefit of the latter approach is that you do not need to  
introduce

weaving and that Wicket will make sure you have a serialisable proxy
injected.

Regards - Cemal
jWeekend
OO  Java Technologies, Wicket Training and Development
http://jWeekend.com




Pieter Claassen wrote:


I am using maven, spring 2.5.6, wicket 1.4 and am trying to inject  
my

DAO's
into my wicket models but I find that Spring just ignores my advice.

My question:
1. @SpringBean only works on stuff that inherits from Component.  
What do

I
do with things like session and models that don't? I am trying to  
use

@Configurable but that is being ignored.
2. My POM deps are below. What should I pull in to have  
@Configurable

working?
3. BTW. When I comment the bean out of my XML config, then I do  
get an

error
so I am not sure if I am doing something very small wrong?

Thanks.
Pieter

pom.xml
===
...
  dependency
   groupIdorg.springframework/groupId
   artifactIdspring-core/artifactId
   version${spring.version}/version
   /dependency

   dependency
   groupIdorg.apache.wicket/groupId
   artifactIdwicket-spring/artifactId
   version${wicket.version}/version
 !--Same results whether I include or exclude the next  
session--

 exclusions
   exclusion
 groupIdorg.springframework/groupId
 artifactIdspring/artifactId
   /exclusion
 /exclusions
   /dependency



TemplateWebModel.java
==
.
@Configurable
public class TemplateWebModel extends  
AbstractDataSetWebModelTemplate {


   private TemplateFactory templateFactory;

   public TemplateFactory getTemplateFactory() {
   return templateFactory;
   }

   public void setTemplateFactory(TemplateFactory templateFactory) {
  throw new RuntimeException(REACHED TEMPLATE FACTORY  
SET); //This

setter is never run
   //this.templateFactory = templateFactory;
   }
.

WicketApplicationDefinitition.xml
==

?xml version=1.0 encoding=UTF-8?
beans xmlns=http://www.springframework.org/schema/beans;
  xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
  xmlns:context=http://www.springframework.org/schema/context 


  xsi:schemaLocation=
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring- 
context-2.5.xsd


   context:annotation-config/
!--aop:aspectj-autoproxy/--

!-- a bean that supplies my primary application database client --
   bean id=appDataSource  
class=com.musmato.dao.ApplicationDBFactory

   destroy-method=close
   constructor-arg
   ref bean=appConfig /
   /constructor-arg
   /bean

!-- a bean that supplies a network database client for template  
uploads

--
   bean id=rootDataSource class=com.musmato.dao.RootDBFactory
destroy-method=close
   constructor-arg
   ref bean=appConfig /
   /constructor-arg
   /bean
.
   bean id=TemplateFactory  
class=com.musmato.dao.TemplateFactory

   property name=client ref=appDataSource /
   /bean






--
Pieter Claassen
musmato.com




--
View this message in context:
http://www.nabble.com/Spring-annotations-fail-to-inject-into-webmodels-tp25396625p25397205.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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





--
Pieter Claassen

Re: Spring annotations fail to inject into webmodels

2009-09-12 Thread jWeekend

Pieter,

... if you're not injecting into components anywhere in your application you
naturally should be able to skip registering the
ComponentInstatiationListener.

Regards - Cemal
jWeekend
OO  Java Technologies, Wicket Training and Development
http://jWeekend.com


jWeekend wrote:
 
 Pieter,
 
 Have you set up Spring's ContextLoaderListener (a Servlet listener that
 initiates your Spring context) and registered the Spring
 SpringComponentInjector as a Component instantiaition listener [1]?
 
 Your idea to instigate injection in the super classes constructor is fine
 as this will be the concrete subclass that you are instantiating - make
 sure the right super constructor is called in all places you want
 injection to take place, and also that you are not initialising the
 sub-classes injected properties as that would take place after the super
 class is initialised undoing what the super class constructor has done.
 
 Finally, in a case like this, get the simplest possible scenario working
 first (here, try injecting into the subclass directly) to show you have
 everything set up correctly and then try the conceptually slightly more
 complex solution of pushing-up the responsibility to instigate injection
 for all your models into their common, abstract superclass.
 
 Also, notice that this injector goes straight to your fields, even if
 they're private, so your setters not being called alone does not mean
 injection has not succeeded 
 
 Does that make sense?
 
 Regards - Cemal 
 jWeekend 
 OO  Java Technologies, Wicket Training and Development 
 http://jWeekend.com
   
 [1] http://cwiki.apache.org/WICKET/spring.html
 
 
 
 pieter claassen-2 wrote:
 
 My abstract basewebmodel constructor from which all my webmodels inherit
 marks inself for Spring injection but still no injection takes place. Any
 suggestions where I can look?
 
 Can I run the injection in the constructor of an abstract model from
 which I
 inherit all my webmodels? I cannot see why not?
 
 Thanks in advanced.
 P
 
 
 
 BaseWebModel.java
 =
 ...
 public BaseWebModel(Long id) {
 this.id = id;
 InjectorHolder.getInjector().inject(this);
 }
 
 here is an example of my TemplateWebModel that uses @SpringBean to set
 TemplateFactory
 TemplateWebModel.java
 ===
 
 ...
 @SpringBean(name=TemplateFactory)
 private TemplateFactory templateFactory;
 
 public TemplateWebModel(Template template) {
 super(template);
 }
 
 
 
 P
 
 On Fri, Sep 11, 2009 at 10:42 AM, jWeekend
 jweekend_for...@cabouge.comwrote:
 

 Pieter,

 If you want to use Spring's @Configuarble you'll need to enable Load
 Time
 Weaving or Complie Time Weaving.

 To use @SpringBean with an object that is not a Wicket Component you
 need
 to
 InjectorHolder.getInjector().inject(this) on initialisation of your
 object.

 The benefit of the latter approach is that you do not need to introduce
 weaving and that Wicket will make sure you have a serialisable proxy
 injected.

 Regards - Cemal
 jWeekend
 OO  Java Technologies, Wicket Training and Development
 http://jWeekend.com




 Pieter Claassen wrote:
 
  I am using maven, spring 2.5.6, wicket 1.4 and am trying to inject my
  DAO's
  into my wicket models but I find that Spring just ignores my advice.
 
  My question:
  1. @SpringBean only works on stuff that inherits from Component. What
 do
 I
  do with things like session and models that don't? I am trying to use
  @Configurable but that is being ignored.
  2. My POM deps are below. What should I pull in to have @Configurable
  working?
  3. BTW. When I comment the bean out of my XML config, then I do get an
  error
  so I am not sure if I am doing something very small wrong?
 
  Thanks.
  Pieter
 
  pom.xml
  ===
  ...
 dependency
  groupIdorg.springframework/groupId
  artifactIdspring-core/artifactId
  version${spring.version}/version
  /dependency
 
  dependency
  groupIdorg.apache.wicket/groupId
  artifactIdwicket-spring/artifactId
  version${wicket.version}/version
!--Same results whether I include or exclude the next
 session--
exclusions
  exclusion
groupIdorg.springframework/groupId
artifactIdspring/artifactId
  /exclusion
/exclusions
  /dependency
  
 
 
  TemplateWebModel.java
  ==
  .
  @Configurable
  public class TemplateWebModel extends
 AbstractDataSetWebModelTemplate {
 
  private TemplateFactory templateFactory;
 
  public TemplateFactory getTemplateFactory() {
  return templateFactory;
  }
 
  public void setTemplateFactory(TemplateFactory templateFactory) {
 throw new RuntimeException(REACHED TEMPLATE FACTORY SET);
 //This
  setter is never run
  //this.templateFactory = templateFactory;
  }
  .
 
  WicketApplicationDefinitition.xml
 

Re: Spring annotations fail to inject into webmodels

2009-09-11 Thread jWeekend

Pieter,

If you want to use Spring's @Configuarble you'll need to enable Load Time
Weaving or Complie Time Weaving.

To use @SpringBean with an object that is not a Wicket Component you need to
InjectorHolder.getInjector().inject(this) on initialisation of your object. 

The benefit of the latter approach is that you do not need to introduce
weaving and that Wicket will make sure you have a serialisable proxy
injected.

Regards - Cemal 
jWeekend 
OO  Java Technologies, Wicket Training and Development 
http://jWeekend.com




Pieter Claassen wrote:
 
 I am using maven, spring 2.5.6, wicket 1.4 and am trying to inject my
 DAO's
 into my wicket models but I find that Spring just ignores my advice.
 
 My question:
 1. @SpringBean only works on stuff that inherits from Component. What do I
 do with things like session and models that don't? I am trying to use
 @Configurable but that is being ignored.
 2. My POM deps are below. What should I pull in to have @Configurable
 working?
 3. BTW. When I comment the bean out of my XML config, then I do get an
 error
 so I am not sure if I am doing something very small wrong?
 
 Thanks.
 Pieter
 
 pom.xml
 ===
 ...
dependency
 groupIdorg.springframework/groupId
 artifactIdspring-core/artifactId
 version${spring.version}/version
 /dependency
 
 dependency
 groupIdorg.apache.wicket/groupId
 artifactIdwicket-spring/artifactId
 version${wicket.version}/version
   !--Same results whether I include or exclude the next session--
   exclusions
 exclusion
   groupIdorg.springframework/groupId
   artifactIdspring/artifactId
 /exclusion
   /exclusions
 /dependency
 
 
 
 TemplateWebModel.java
 ==
 .
 @Configurable
 public class TemplateWebModel extends AbstractDataSetWebModelTemplate {
 
 private TemplateFactory templateFactory;
 
 public TemplateFactory getTemplateFactory() {
 return templateFactory;
 }
 
 public void setTemplateFactory(TemplateFactory templateFactory) {
throw new RuntimeException(REACHED TEMPLATE FACTORY SET); //This
 setter is never run
 //this.templateFactory = templateFactory;
 }
 .
 
 WicketApplicationDefinitition.xml
 ==
 
 ?xml version=1.0 encoding=UTF-8?
 beans xmlns=http://www.springframework.org/schema/beans;
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
xmlns:context=http://www.springframework.org/schema/context;
xsi:schemaLocation=
 http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-2.5.xsd;
 
 context:annotation-config/
 !--aop:aspectj-autoproxy/--
 
 !-- a bean that supplies my primary application database client --
 bean id=appDataSource class=com.musmato.dao.ApplicationDBFactory
 destroy-method=close
 constructor-arg
 ref bean=appConfig /
 /constructor-arg
 /bean
 
 !-- a bean that supplies a network database client for template uploads
 --
 bean id=rootDataSource class=com.musmato.dao.RootDBFactory
 destroy-method=close
 constructor-arg
 ref bean=appConfig /
 /constructor-arg
 /bean
 .
 bean id=TemplateFactory class=com.musmato.dao.TemplateFactory
 property name=client ref=appDataSource /
 /bean
 
 
 
 
 
 
 -- 
 Pieter Claassen
 musmato.com
 
 

-- 
View this message in context: 
http://www.nabble.com/Spring-annotations-fail-to-inject-into-webmodels-tp25396625p25397205.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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