RE: Suggested Enhancement To Spring Support

2008-03-20 Thread Zappaterrini, Larry
I suppose I need to learn more about how Spring support is implemented in 
Wicket. My thinking was that the injected property would simply get set to 
null. Then the getter for that injected property can perform a null check and 
lazily initialize it with a default type if necessary:
 
@SpringBean(name = someService)
private Service service;
 
public Service getService() {
if (service == null) {
service = new DefaultService();
}
return service;
}
 
This allows for default implementation to be provided that can then be 
overridden by declaring the bean in Spring. I've used this type of pattern with 
Spring in other settings and thought it might be useful in Wicket too.



From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
Sent: Wed 3/19/2008 5:49 PM
To: users@wicket.apache.org
Subject: Re: Suggested Enhancement To Spring Support



you want to swallow the exception?

then you would return a null into a proxy and cause an npe later...

-igor


On Wed, Mar 19, 2008 at 1:43 PM, Zappaterrini, Larry
[EMAIL PROTECTED] wrote:
 It might be a nice improvement to Wicket's Spring support to allow for
  missing bean definitions to be handled gracefully. This would allow for
  the use of a sane default in the absence of explicit declaration in the
  context XML. Right now using the Spring annotations support I get the
  following error when I don't define the object in the XML:

  org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean
  named 'beanName' is defined
  at
  org.springframework.beans.factory.support.DefaultListableBeanFactory.get
  BeanDefinition(DefaultListableBeanFactory.java:355)
  at
  org.springframework.beans.factory.support.AbstractBeanFactory.getMergedB
  eanDefinition(AbstractBeanFactory.java:800)
  at
  org.springframework.beans.factory.support.AbstractBeanFactory.isSingleto
  n(AbstractBeanFactory.java:343)
  at
  org.springframework.context.support.AbstractApplicationContext.isSinglet
  on(AbstractApplicationContext.java:654)
  at
  org.apache.wicket.spring.SpringBeanLocator.isSingletonBean(SpringBeanLoc
  ator.java:133)
  at
  org.apache.wicket.spring.injection.annot.AnnotProxyFieldValueFactory.get
  FieldValue(AnnotProxyFieldValueFactory.java:91)
  at org.apache.wicket.injection.Injector.inject(Injector.java:108)
  at
  org.apache.wicket.injection.ConfigurableInjector.inject(ConfigurableInje
  ctor.java:39)
  at
  org.apache.wicket.injection.ComponentInjector.onInstantiation(ComponentI
  njector.java:52)
  at
  org.apache.wicket.Application.notifyComponentInstantiationListeners(Appl
  ication.java:973)
  at org.apache.wicket.Component.init(Component.java:866)

  ... truncated for brevity

  Using getSpringContext().contains(String) either within or as an exposed
  method of SpringBeanLocator would probably be sufficient to avoid
  hitting this exception.

  Thanks,
  Larry

  __

  The information contained in this message is proprietary and/or 
 confidential. If you are not the
  intended recipient, please: (i) delete the message and all copies; (ii) do 
 not disclose,
  distribute or use the message in any manner; and (iii) notify the sender 
 immediately. In addition,
  please be aware that any message addressed to our domain is subject to 
 archiving and review by
  persons other than the intended recipient. Thank you.
  _

  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



__

The information contained in this message is proprietary and/or confidential. 
If you are not the 
intended recipient, please: (i) delete the message and all copies; (ii) do not 
disclose, 
distribute or use the message in any manner; and (iii) notify the sender 
immediately. In addition, 
please be aware that any message addressed to our domain is subject to 
archiving and review by 
persons other than the intended recipient. Thank you.
_

Re: Suggested Enhancement To Spring Support

2008-03-20 Thread lars vonk
Spring support in Wicket works with proxies, so your services are not
Serialized by Wicket, but your Proxy is. With your suggestion your Service
will be Serialized and with it all its dependencies like DAO's etc. This
will most likely cause trouble when you are in a clustered environment and
use Session replication.

Also using this approach your Spring bean is no longer a singleton, but as
long as your beans are stateless this does not really matter.

- Lars

On Thu, Mar 20, 2008 at 2:44 PM, Zappaterrini, Larry 
[EMAIL PROTECTED] wrote:

 I suppose I need to learn more about how Spring support is implemented in
 Wicket. My thinking was that the injected property would simply get set to
 null. Then the getter for that injected property can perform a null check
 and lazily initialize it with a default type if necessary:

 @SpringBean(name = someService)
 private Service service;

 public Service getService() {
if (service == null) {
service = new DefaultService();
}
return service;
 }

 This allows for default implementation to be provided that can then be
 overridden by declaring the bean in Spring. I've used this type of pattern
 with Spring in other settings and thought it might be useful in Wicket too.

 

 From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
 Sent: Wed 3/19/2008 5:49 PM
 To: users@wicket.apache.org
 Subject: Re: Suggested Enhancement To Spring Support



 you want to swallow the exception?

 then you would return a null into a proxy and cause an npe later...

 -igor


 On Wed, Mar 19, 2008 at 1:43 PM, Zappaterrini, Larry
 [EMAIL PROTECTED] wrote:
  It might be a nice improvement to Wicket's Spring support to allow for
   missing bean definitions to be handled gracefully. This would allow for
   the use of a sane default in the absence of explicit declaration in the
   context XML. Right now using the Spring annotations support I get the
   following error when I don't define the object in the XML:
 
   org.springframework.beans.factory.NoSuchBeanDefinitionException: No
 bean
   named 'beanName' is defined
   at
 
 org.springframework.beans.factory.support.DefaultListableBeanFactory.get
   BeanDefinition(DefaultListableBeanFactory.java:355)
   at
 
 org.springframework.beans.factory.support.AbstractBeanFactory.getMergedB
   eanDefinition(AbstractBeanFactory.java:800)
   at
 
 org.springframework.beans.factory.support.AbstractBeanFactory.isSingleto
   n(AbstractBeanFactory.java:343)
   at
 
 org.springframework.context.support.AbstractApplicationContext.isSinglet
   on(AbstractApplicationContext.java:654)
   at
   org.apache.wicket.spring.SpringBeanLocator.isSingletonBean
 (SpringBeanLoc
   ator.java:133)
   at
 
 org.apache.wicket.spring.injection.annot.AnnotProxyFieldValueFactory.get
   FieldValue(AnnotProxyFieldValueFactory.java:91)
   at org.apache.wicket.injection.Injector.inject(Injector.java:108)
   at
   org.apache.wicket.injection.ConfigurableInjector.inject
 (ConfigurableInje
   ctor.java:39)
   at
   org.apache.wicket.injection.ComponentInjector.onInstantiation
 (ComponentI
   njector.java:52)
   at
   org.apache.wicket.Application.notifyComponentInstantiationListeners
 (Appl
   ication.java:973)
   at org.apache.wicket.Component.init(Component.java:866)
 
   ... truncated for brevity
 
   Using getSpringContext().contains(String) either within or as an
 exposed
   method of SpringBeanLocator would probably be sufficient to avoid
   hitting this exception.
 
   Thanks,
   Larry
 
   __
 
   The information contained in this message is proprietary and/or
 confidential. If you are not the
   intended recipient, please: (i) delete the message and all copies; (ii)
 do not disclose,
   distribute or use the message in any manner; and (iii) notify the
 sender immediately. In addition,
   please be aware that any message addressed to our domain is subject to
 archiving and review by
   persons other than the intended recipient. Thank you.
   _
 
   -
   To unsubscribe, e-mail: [EMAIL PROTECTED]
   For additional commands, e-mail: [EMAIL PROTECTED]
 
 

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]



 __

 The information contained in this message is proprietary and/or
 confidential. If you are not the
 intended recipient, please: (i) delete the message and all copies; (ii) do
 not disclose,
 distribute or use the message in any manner; and (iii) notify the sender
 immediately. In addition,
 please be aware that any message addressed to our domain is subject to
 archiving and review by
 persons other than the intended recipient. Thank you.
 _



RE: Suggested Enhancement To Spring Support

2008-03-20 Thread Zappaterrini, Larry
Thanks for the explanation, that makes perfect sense.



From: lars vonk [mailto:[EMAIL PROTECTED]
Sent: Thu 3/20/2008 10:16 AM
To: users@wicket.apache.org
Subject: Re: Suggested Enhancement To Spring Support



Spring support in Wicket works with proxies, so your services are not
Serialized by Wicket, but your Proxy is. With your suggestion your Service
will be Serialized and with it all its dependencies like DAO's etc. This
will most likely cause trouble when you are in a clustered environment and
use Session replication.

Also using this approach your Spring bean is no longer a singleton, but as
long as your beans are stateless this does not really matter.

- Lars

On Thu, Mar 20, 2008 at 2:44 PM, Zappaterrini, Larry 
[EMAIL PROTECTED] wrote:

 I suppose I need to learn more about how Spring support is implemented in
 Wicket. My thinking was that the injected property would simply get set to
 null. Then the getter for that injected property can perform a null check
 and lazily initialize it with a default type if necessary:

 @SpringBean(name = someService)
 private Service service;

 public Service getService() {
if (service == null) {
service = new DefaultService();
}
return service;
 }

 This allows for default implementation to be provided that can then be
 overridden by declaring the bean in Spring. I've used this type of pattern
 with Spring in other settings and thought it might be useful in Wicket too.

 

 From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
 Sent: Wed 3/19/2008 5:49 PM
 To: users@wicket.apache.org
 Subject: Re: Suggested Enhancement To Spring Support



 you want to swallow the exception?

 then you would return a null into a proxy and cause an npe later...

 -igor


 On Wed, Mar 19, 2008 at 1:43 PM, Zappaterrini, Larry
 [EMAIL PROTECTED] wrote:
  It might be a nice improvement to Wicket's Spring support to allow for
   missing bean definitions to be handled gracefully. This would allow for
   the use of a sane default in the absence of explicit declaration in the
   context XML. Right now using the Spring annotations support I get the
   following error when I don't define the object in the XML:
 
   org.springframework.beans.factory.NoSuchBeanDefinitionException: No
 bean
   named 'beanName' is defined
   at
 
 org.springframework.beans.factory.support.DefaultListableBeanFactory.get
   BeanDefinition(DefaultListableBeanFactory.java:355)
   at
 
 org.springframework.beans.factory.support.AbstractBeanFactory.getMergedB
   eanDefinition(AbstractBeanFactory.java:800)
   at
 
 org.springframework.beans.factory.support.AbstractBeanFactory.isSingleto
   n(AbstractBeanFactory.java:343)
   at
 
 org.springframework.context.support.AbstractApplicationContext.isSinglet
   on(AbstractApplicationContext.java:654)
   at
   org.apache.wicket.spring.SpringBeanLocator.isSingletonBean
 (SpringBeanLoc
   ator.java:133)
   at
 
 org.apache.wicket.spring.injection.annot.AnnotProxyFieldValueFactory.get
   FieldValue(AnnotProxyFieldValueFactory.java:91)
   at org.apache.wicket.injection.Injector.inject(Injector.java:108)
   at
   org.apache.wicket.injection.ConfigurableInjector.inject
 (ConfigurableInje
   ctor.java:39)
   at
   org.apache.wicket.injection.ComponentInjector.onInstantiation
 (ComponentI
   njector.java:52)
   at
   org.apache.wicket.Application.notifyComponentInstantiationListeners
 (Appl
   ication.java:973)
   at org.apache.wicket.Component.init(Component.java:866)
 
   ... truncated for brevity
 
   Using getSpringContext().contains(String) either within or as an
 exposed
   method of SpringBeanLocator would probably be sufficient to avoid
   hitting this exception.
 
   Thanks,
   Larry
 
   __
 
   The information contained in this message is proprietary and/or
 confidential. If you are not the
   intended recipient, please: (i) delete the message and all copies; (ii)
 do not disclose,
   distribute or use the message in any manner; and (iii) notify the
 sender immediately. In addition,
   please be aware that any message addressed to our domain is subject to
 archiving and review by
   persons other than the intended recipient. Thank you.
   _
 
   -
   To unsubscribe, e-mail: [EMAIL PROTECTED]
   For additional commands, e-mail: [EMAIL PROTECTED]
 
 

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]



 __

 The information contained in this message is proprietary and/or
 confidential. If you are not the
 intended recipient, please: (i) delete the message and all copies; (ii) do
 not disclose,
 distribute or use the message in any manner; and (iii) notify the sender
 immediately. In addition,
 please be aware that any message addressed

Suggested Enhancement To Spring Support

2008-03-19 Thread Zappaterrini, Larry
It might be a nice improvement to Wicket's Spring support to allow for
missing bean definitions to be handled gracefully. This would allow for
the use of a sane default in the absence of explicit declaration in the
context XML. Right now using the Spring annotations support I get the
following error when I don't define the object in the XML:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean
named 'beanName' is defined
 at
org.springframework.beans.factory.support.DefaultListableBeanFactory.get
BeanDefinition(DefaultListableBeanFactory.java:355)
 at
org.springframework.beans.factory.support.AbstractBeanFactory.getMergedB
eanDefinition(AbstractBeanFactory.java:800)
 at
org.springframework.beans.factory.support.AbstractBeanFactory.isSingleto
n(AbstractBeanFactory.java:343)
 at
org.springframework.context.support.AbstractApplicationContext.isSinglet
on(AbstractApplicationContext.java:654)
 at
org.apache.wicket.spring.SpringBeanLocator.isSingletonBean(SpringBeanLoc
ator.java:133)
 at
org.apache.wicket.spring.injection.annot.AnnotProxyFieldValueFactory.get
FieldValue(AnnotProxyFieldValueFactory.java:91)
 at org.apache.wicket.injection.Injector.inject(Injector.java:108)
 at
org.apache.wicket.injection.ConfigurableInjector.inject(ConfigurableInje
ctor.java:39)
 at
org.apache.wicket.injection.ComponentInjector.onInstantiation(ComponentI
njector.java:52)
 at
org.apache.wicket.Application.notifyComponentInstantiationListeners(Appl
ication.java:973)
 at org.apache.wicket.Component.init(Component.java:866)

... truncated for brevity

Using getSpringContext().contains(String) either within or as an exposed
method of SpringBeanLocator would probably be sufficient to avoid
hitting this exception.

Thanks,
Larry

__

The information contained in this message is proprietary and/or confidential. 
If you are not the 
intended recipient, please: (i) delete the message and all copies; (ii) do not 
disclose, 
distribute or use the message in any manner; and (iii) notify the sender 
immediately. In addition, 
please be aware that any message addressed to our domain is subject to 
archiving and review by 
persons other than the intended recipient. Thank you.
_

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Suggested Enhancement To Spring Support

2008-03-19 Thread Igor Vaynberg
you want to swallow the exception?

then you would return a null into a proxy and cause an npe later...

-igor


On Wed, Mar 19, 2008 at 1:43 PM, Zappaterrini, Larry
[EMAIL PROTECTED] wrote:
 It might be a nice improvement to Wicket's Spring support to allow for
  missing bean definitions to be handled gracefully. This would allow for
  the use of a sane default in the absence of explicit declaration in the
  context XML. Right now using the Spring annotations support I get the
  following error when I don't define the object in the XML:

  org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean
  named 'beanName' is defined
  at
  org.springframework.beans.factory.support.DefaultListableBeanFactory.get
  BeanDefinition(DefaultListableBeanFactory.java:355)
  at
  org.springframework.beans.factory.support.AbstractBeanFactory.getMergedB
  eanDefinition(AbstractBeanFactory.java:800)
  at
  org.springframework.beans.factory.support.AbstractBeanFactory.isSingleto
  n(AbstractBeanFactory.java:343)
  at
  org.springframework.context.support.AbstractApplicationContext.isSinglet
  on(AbstractApplicationContext.java:654)
  at
  org.apache.wicket.spring.SpringBeanLocator.isSingletonBean(SpringBeanLoc
  ator.java:133)
  at
  org.apache.wicket.spring.injection.annot.AnnotProxyFieldValueFactory.get
  FieldValue(AnnotProxyFieldValueFactory.java:91)
  at org.apache.wicket.injection.Injector.inject(Injector.java:108)
  at
  org.apache.wicket.injection.ConfigurableInjector.inject(ConfigurableInje
  ctor.java:39)
  at
  org.apache.wicket.injection.ComponentInjector.onInstantiation(ComponentI
  njector.java:52)
  at
  org.apache.wicket.Application.notifyComponentInstantiationListeners(Appl
  ication.java:973)
  at org.apache.wicket.Component.init(Component.java:866)

  ... truncated for brevity

  Using getSpringContext().contains(String) either within or as an exposed
  method of SpringBeanLocator would probably be sufficient to avoid
  hitting this exception.

  Thanks,
  Larry

  __

  The information contained in this message is proprietary and/or 
 confidential. If you are not the
  intended recipient, please: (i) delete the message and all copies; (ii) do 
 not disclose,
  distribute or use the message in any manner; and (iii) notify the sender 
 immediately. In addition,
  please be aware that any message addressed to our domain is subject to 
 archiving and review by
  persons other than the intended recipient. Thank you.
  _

  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]