You can subscribe to this list here.
| 2003 |
Jan
|
Feb
(55) |
Mar
(100) |
Apr
(203) |
May
(330) |
Jun
(190) |
Jul
(302) |
Aug
(323) |
Sep
(197) |
Oct
(245) |
Nov
(490) |
Dec
(330) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(194) |
Feb
(400) |
Mar
(416) |
Apr
(415) |
May
(359) |
Jun
(381) |
Jul
(491) |
Aug
(311) |
Sep
(291) |
Oct
(273) |
Nov
(355) |
Dec
(266) |
| 2005 |
Jan
(306) |
Feb
(303) |
Mar
(520) |
Apr
(346) |
May
(255) |
Jun
(221) |
Jul
(171) |
Aug
(247) |
Sep
(147) |
Oct
(125) |
Nov
(165) |
Dec
(65) |
| 2006 |
Jan
(90) |
Feb
(53) |
Mar
(121) |
Apr
(103) |
May
(113) |
Jun
(103) |
Jul
(104) |
Aug
(67) |
Sep
(78) |
Oct
(82) |
Nov
(78) |
Dec
(70) |
| 2007 |
Jan
(77) |
Feb
(76) |
Mar
(63) |
Apr
(30) |
May
(47) |
Jun
(41) |
Jul
(44) |
Aug
(44) |
Sep
(49) |
Oct
(33) |
Nov
(25) |
Dec
(21) |
| 2008 |
Jan
(45) |
Feb
(13) |
Mar
(15) |
Apr
(12) |
May
(9) |
Jun
(33) |
Jul
(30) |
Aug
(7) |
Sep
(20) |
Oct
(17) |
Nov
(20) |
Dec
(10) |
| 2009 |
Jan
(8) |
Feb
(5) |
Mar
(12) |
Apr
(17) |
May
(19) |
Jun
(97) |
Jul
(77) |
Aug
(33) |
Sep
(24) |
Oct
(41) |
Nov
(16) |
Dec
(32) |
| 2010 |
Jan
(24) |
Feb
(14) |
Mar
(50) |
Apr
(71) |
May
(70) |
Jun
(64) |
Jul
(45) |
Aug
(62) |
Sep
(32) |
Oct
(4) |
Nov
(12) |
Dec
(2) |
| 2011 |
Jan
(1) |
Feb
(3) |
Mar
(4) |
Apr
(3) |
May
(6) |
Jun
(1) |
Jul
(4) |
Aug
(3) |
Sep
(4) |
Oct
(6) |
Nov
(3) |
Dec
(3) |
| 2012 |
Jan
(4) |
Feb
(8) |
Mar
(6) |
Apr
(10) |
May
(2) |
Jun
(3) |
Jul
(11) |
Aug
(10) |
Sep
(4) |
Oct
|
Nov
(1) |
Dec
(1) |
| 2013 |
Jan
(4) |
Feb
(1) |
Mar
(9) |
Apr
(1) |
May
(8) |
Jun
(2) |
Jul
(5) |
Aug
(2) |
Sep
|
Oct
(3) |
Nov
(10) |
Dec
(8) |
| 2014 |
Jan
(3) |
Feb
(12) |
Mar
(9) |
Apr
(12) |
May
(2) |
Jun
|
Jul
(3) |
Aug
(1) |
Sep
(1) |
Oct
(4) |
Nov
|
Dec
(2) |
| 2015 |
Jan
(1) |
Feb
(3) |
Mar
(4) |
Apr
(9) |
May
(2) |
Jun
(2) |
Jul
|
Aug
(2) |
Sep
(7) |
Oct
(9) |
Nov
(7) |
Dec
(9) |
| 2016 |
Jan
(7) |
Feb
(5) |
Mar
(5) |
Apr
(5) |
May
(8) |
Jun
(4) |
Jul
(5) |
Aug
(4) |
Sep
(6) |
Oct
(7) |
Nov
(2) |
Dec
(3) |
| 2017 |
Jan
(7) |
Feb
(8) |
Mar
(7) |
Apr
(3) |
May
(4) |
Jun
(3) |
Jul
(5) |
Aug
(8) |
Sep
(4) |
Oct
(2) |
Nov
(3) |
Dec
|
| 2018 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2019 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2021 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2022 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2024 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2025 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
(2) |
Aug
(5) |
Sep
(2) |
Oct
|
Nov
|
Dec
(1) |
| 2026 |
Jan
(1) |
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Pierre B. <pb...@gi...> - 2004-05-18 08:46:45
|
Hi J=FCrgen,
SQLErrorCodesFactory uses DatabaseProductName to identify the database.=20
We are using Sybase 11.9.2 and here is an extract of our=20
sql-error-codes.xml:
<bean id=3D"Sybase" class=3D"org.springframework.jdbc.support.SQLErrorCod=
es">
<property name=3D"databaseProductName"><value>Sybase SQL=20
Server</value></property>
<property=20
name=3D"badSqlGrammarCodes"><value>101,102,103,104,105,106,107,108,109,11=
0,111,112,113,116,120,121,123,207,208,213,257,512</value></property>
<property=20
name=3D"dataIntegrityViolationCodes"><value>423,511,515,530,547,2601,2615=
,2714</value></property>
</bean>
So, I don't think there's any issue with Sybase.
Hope it helps.
Pierre Bittner
j=FCrgen h=F6ller [werk3AT] wrote:
> Thomas,
> =20
> Do you have a chance to look at
> =20
> http://opensource.atlassian.com/projects/spring/browse/SPR-130 <http://=
opensource.atlassian.com/projects/spring/browse/SPR-130>=20
> =20
> for 1.0.2 (scheduled for the end of this week)?
> =20
> Juergen
>=20
>=20
> -------------------------------------------------------
> This SF.Net email is sponsored by: SourceForge.net Broadband
> Sign-up now for SourceForge Broadband and get the fastest
> 6.0/768 connection for only $19.95/mo for the first 3 months!
> http://ads.osdn.com/?ad_id%62&alloc_ida84&op=CCk
> _______________________________________________
> Springframework-developer mailing list
> Spr...@li...
> https://lists.sourceforge.net/lists/listinfo/springframework-developer
>=20
>=20
>=20
|
|
From: <jue...@we...> - 2004-05-18 08:17:19
|
Thomas, =20 Do you have a chance to look at =20 http://opensource.atlassian.com/projects/spring/browse/SPR-130 = <http://opensource.atlassian.com/projects/spring/browse/SPR-130>=20 =20 for 1.0.2 (scheduled for the end of this week)? =20 Juergen |
|
From: <jue...@we...> - 2004-05-18 08:00:25
|
+1 - I'll give them a brief review once they are in CVS. =20 I assume you've introduce an AbstractTemplateView class for these = properties? =20 Juergen =20 ________________________________ Von: spr...@li... im Auftrag = von Darren Davison Gesendet: Di 18.05.2004 02:04 An: spr...@li... Betreff: Re: [Springframework-developer] Request and Session attributes = in template based views -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Sunday 16 May 2004 15:44, j=FCrgen h=F6ller [werk3AT] wrote: > Darren, > > While I do agree with the argument that a Controller should be solely > responsible for the exposed model, I see that there are valid = exceptions > to this rule. I wouldn't mind "exposeRequestAttributes", > "exposeSessionAttributes" and possibly also > "exposeServletContextAttributes" properties on an AbstractTemplateView > base class, as long as they are turned off by default. As those flags = are > trivial to add, we could already do this for 1.0.2. What do others = think? > > Juergen I've got code ready to commit if no-one objects to this addition. - -- Darren Davison Public Key: http://www.davison.uk.net/pages/key.htm -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAqVMXKLMLAN01aw0RAkoGAJ9ZfAIULpBNY+qKZp4zLHnHgJjjuACfXMkY aNf3CzcwZ+iazVCgdz9khUU=3D =3D3CJo -----END PGP SIGNATURE----- ------------------------------------------------------- This SF.Net email is sponsored by: SourceForge.net Broadband Sign-up now for SourceForge Broadband and get the fastest 6.0/768 connection for only $19.95/mo for the first 3 months! http://ads.osdn.com/?ad_id%62&alloc_ida84&op=3Dick _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: <jue...@we...> - 2004-05-18 07:57:15
|
Colin, =20 I've just committed the changes. Please give them a try! =20 Juergen =20 ________________________________ Von: spr...@li... im Auftrag = von Colin Sampaleanu Gesendet: Mo 17.05.2004 23:50 An: spr...@li... Betreff: Re: [Springframework-developer] EJB access improvements j=FCrgen h=F6ller [werk3AT] wrote: >Colin, Rod, > >Regarding the following two issues: > >http://opensource.atlassian.com/projects/spring/browse/SPR-117 > >Actually, the contract for Stateless Session Beans is quite odd in that = respect: You don't really "create" a SLSB with a "create" call, and = "remove" won't actually remove an instance - as SLSBs are pooled. > >However, we can easily invoke "remove" on the EJB proxy after the = method call, both in SimpleRemoteSlsbInvokerInterceptor and in = LocalSlsbInvokerInterceptor. It seems that this can happen in any case: = A typical container will simply ignore the "remove" call anyway. > >http://opensource.atlassian.com/projects/spring/browse/SPR-129 > >I've just added a "cacheHome" flag to AbstractSlsbInvokerInterceptor. = If turned off, the home object will be refetched on each method = invocation. This is intended for development environments: It allows for = hot redeploy of the target EJB respectively restart of the EJB = container. > > >I've just added the corresponding code, as it shouldn't change anything = in typical cases. I'll commit it by tomorrow morning. If you object to = either of these changes, we can still roll them back before 1.0.2. > >For addressing the second issue, there are a couple of further options = mentioned in the JIRA entry: for example, refetching the home object = when the create invocation fails. However, those are probably beyond = 1.0.2. > >Juergen >=20 > This is fine. My feeling is that the ability to turn off the cache for the home will suite some people even for non-development situations. Other people are not going to be very happy with that situation however. A sequence that without Spring would have been a home lookup followed by maybe 5 invocations on the same session stub now becomes 5 home lookups and 5 create calls, for the 5 method calls. So I am open to us adding in one of the other two solutions to make these people happy, post 1.0.2. Colin ------------------------------------------------------- This SF.Net email is sponsored by: SourceForge.net Broadband Sign-up now for SourceForge Broadband and get the fastest 6.0/768 connection for only $19.95/mo for the first 3 months! http://ads.osdn.com/?ad_id%62&alloc_ida84&op=3Dick _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Keith D. <kd...@cs...> - 2004-05-18 04:10:26
|
Nadeem, Yes, JMX support is on the roadmap for 1.1 final. You're correct, we haven't yet committed code to the sandbox. We'll be sure to post an announcement to the lists once it's in for early-access. Thanks, Keith ----- Original Message ----- From: "Nadeem Bitar" <na...@ea...> To: <spr...@li...> Sent: Saturday, May 15, 2004 8:26 AM Subject: [Springframework-developer] JMX > Is JMX still on the roadmap for 1.1? I browsed CVS and couldn't see any > JMX related code in there. > > -Nadeem > > > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: SourceForge.net Broadband > Sign-up now for SourceForge Broadband and get the fastest > 6.0/768 connection for only $19.95/mo for the first 3 months! > http://ads.osdn.com/?ad_id=2562&alloc_id=6184&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Daniel M. <mi...@pa...> - 2004-05-18 03:42:13
|
Seth,
I have approached this problem by creating my complex validator object and
wiring in the commons-validator like this:
<bean name="someValidator" class="yada.yada.SomeValidator">
<property name="validator"><ref bean="beanValidator"/></property>
</bean>
Then inside my SomeValidator class (in the validate() and supports()
methods), I just invoke the corresponding beanValidator methods to ensure
that it is supported. For example:
boolean supports(Class clazz) {
// Note: very simple
return beanValidator.supports(clazz);
}
void validate(Object obj, Errors errors) {
beanValidator.validate(obj, Errors);
// Add custom validation logic here
// It can even be conditional if you please...
if (!errors.hasErrors()) {
// Only execute these validations if there are no other errors.
}
}
You could add as many validator objects to your custom validation class as
you like and create your own custom chain mechanism inside that if you like.
In fact, you could even implement a Validator class with a property that
takes a list of validators to invoke. Something like this (very quickly
written in my email client, so be easy on the syntax):
private List validators;
public void setValidators(List vals) {
validators = vals;
}
public boolean supports(Class clazz) {
boolean result = true;
Iterator itr = validators.iterator();
while(itr.hasNext()) {
Validator val = (Validator) itr.next();
result = result && val.supports(clazz);
}
return result;
}
public void validate(Object obj, Errors errors) {
Iterator itr = validators.iterator();
while(itr.hasNext()) {
Validator val = (Validator) itr.next();
val.validate(obj, errors);
}
}
Wire it up with your list of validators and plug it into your controller
class and off you go.
In every case that I have come across a single beanValidator
(commons-validator adapter) wired into a custom validation class gives me
all the flexibility I need.
Hope that helped.
Daniel Miller
P.S. The guys who designed this framework were geniuses to be able to come
up with such a flexible implementation. Thanks dev's.
-----Original Message-----
From: spr...@li...
[mailto:spr...@li...]On Behalf
Of se...@eh...
Sent: Monday, May 17, 2004 3:18 AM
To: spr...@li...
Subject: [Springframework-developer] Multiple Validators per Handler?
Hello,
Much along the lines of multiple View Resolvers, I'd like to ask the
developers
if they believe allowing multiple Validators per Handler is a good idea.
I've
run into this situation a few times, and it seems like a good idea.
With the addition of new validators that automatically determine the
validation
rules (commons-validator, for example), there aren't any explicit validator
objects written. A handler currently takes one validator. I often need to
code some specific, hard to specify via attributes validation rules that go
above and beyond what simple declarative validation rules can specify. I'd
like the specific validation rules to run along with the commons-validator
derived rules.
The solution for multiple View Resolvers was to look into the
ApplicationContext
and find all View Resolvers. There was no explicit ViewResolverChain
object.
With Handlers, the API has a setValidator. Not wanting to break the API, a
suggestion would be to add a setValidators(List validators) method to
Handler.
This would avoid creating a ValidatorChain object and would keep in the
spirit
of the View Resolvers solution.
Any ideas on this? I would be more than happy to provide the patch for
this.
Of course, if people think the best way to solve this is to create some sort
of
Validator Chain object and leave the API for Handler alone, I would create
the
patch for that as well.
Your feedback is much appreciated. I look forward to helping out!
Thanks,
Seth
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
-------------------------------------------------------
This SF.Net email is sponsored by: SourceForge.net Broadband
Sign-up now for SourceForge Broadband and get the fastest
6.0/768 connection for only $19.95/mo for the first 3 months!
http://ads.osdn.com/?ad_id=2562&alloc_id=6184&op=click
_______________________________________________
Springframework-developer mailing list
Spr...@li...
https://lists.sourceforge.net/lists/listinfo/springframework-developer
|
|
From: Seth L. <se...@eh...> - 2004-05-18 02:41:24
|
Hello, I've just installed Spring IDE 1.0.1 via the online update. I'm running Eclipse 3.0 M8, and I have installed the runtime to the GEF. When I right click and attempt to show graph, I receive a "Unable to create part: Config File: <path to spring-servlet.xml". Upon hitting OK, I then receive "An error has occurred when activating this view" and a grey editor window appears with the message in red "An error has occurred when creating this editor" Any ideas oh where to start looking for the problem? Thanks! Seth |
|
From: Oliver H. <Ol...@ou...> - 2004-05-18 01:29:25
|
I've got no problem with that. It's certainly not the usual case for me to have multiple forms so 80% of the time I'd probably be using that no param default.=20 Seth Ladd wrote: > What do you think about having the default for setNestedPath=20 > look into=20 > the Model for the path value, if none is given? |
|
From: Seth L. <se...@eh...> - 2004-05-18 01:11:48
|
Oliver Hutchison wrote: > I have quite a few pages that have multiple forms in a single JSP so a > general <spring:bindFromCommand> wouldn't really work for me. > > What I've found I'd like is something equivalent to the > Errors.setNestedPath() but for the bind tag. Perhaps > > <spring:setNestedPath path="chooseBusinessTypeCommand"> > <spring:bind path="type"> > .. Do stuff > </spring:bind> > </spring:setNestedPath> That would be perfect. I really only want to specify the bean name once. Ideally, it would still pick it up from the Model's Map by default, but I see your point why you would want to be able to specify it. What do you think about having the default for setNestedPath look into the Model for the path value, if none is given? Thanks! Seth |
|
From: Oliver H. <Ol...@ou...> - 2004-05-18 01:05:55
|
I have quite a few pages that have multiple forms in a single JSP so a
general <spring:bindFromCommand> wouldn't really work for me.=20
What I've found I'd like is something equivalent to the
Errors.setNestedPath() but for the bind tag. Perhaps=20
<spring:setNestedPath path=3D"chooseBusinessTypeCommand">
<spring:bind path=3D"type">
.. Do stuff
</spring:bind>
</spring:setNestedPath>=20
This gets really useful when you start reusing parts of your form. Then
you could do stuff like
<spring:setNestedPath path=3D"editBusinessUser">
<spring:bind path=3D"type">
.. Do stuff
</spring:bind>
<spring:setNestedPath path=3D"internalContact">
<%@ include file=3D"/include/forms/contact_form.jsp" %>
</spring:setNestedPath>
<spring:setNestedPath path=3D"externalContact">
<%@ include file=3D"/include/forms/contact_form.jsp" %>
</spring:setNestedPath>
</spring:setNestedPath>
At the moment I pass a variable around which holds the nested path but
using tags would feel much better.
> -----Original Message-----
> From: spr...@li...=20
> [mailto:spr...@li...]
> On Behalf Of Seth Ladd
> Sent: Tuesday, 18 May 2004 10:18 AM
> To: spr...@li...
> Subject: [Springframework-developer] Way to streamline=20
> spring:bind usage?
>=20
>=20
> Hello,
>=20
> I've been pooring over the source today trying to find out a=20
> way around=20
> this, but no luck. I'm hoping others could lend a hand.
>=20
> In converting all of our struts code to Spring, I'm writing a lot of=20
> <spring:bind> tags. While binding to a particular field, I=20
> have to use=20
> the commandName + fieldName with spring:bind. Typical usage is:
>=20
> <spring:bind path=3D"chooseBusinessTypeCommand.type">
> <springx:fieldLabel name=3D"chooseBusinessTypeCommand.type"/>
> <f:select name=3D"${status.expression}"=20
> value=3D"${status.value}"> <f:option value=3D"">----</f:option>=20
> <f:option value=3D"SP"><fmt:message=20
> key=3D"bizType.SP"/></f:option> <f:option=20
> value=3D"DC"><fmt:message key=3D"bizType.DC"/></f:option>=20
> </f:select> </spring:bind> </div>
>=20
> (Note that <f:select> and <f:option> are tagfiles emulating=20
> the struts=20
> <html:select> and <html:option> tags).
>=20
> My question is, is there a nice way to omit the=20
> "chooseBusinessTypeCommand" usage from the JSP file? I write=20
> that for=20
> every field in the form. Ideally the tags would read that from the=20
> handler somehow, where the commandName is initially specified.
>=20
> I could specify it once at the top of the file, but I'd=20
> really like to=20
> not specify it at all.
>=20
> I realize that keeping it this way keeps <spring:bind> more flexible,=20
> but I would guess that nearly all usage would be to bind to=20
> the form and=20
> handler's command object. Minimizing the amount of configuration and=20
> typing here would be really nice.
>=20
> Another suggestion would be to (optionally) wrap all usages of=20
> <spring:bind> in another tag that could reach somehow into=20
> the request=20
> or the handler and discover the commandName. Something like:
>=20
> <spring:bindFromCommand>
> <spring:bind path=3D"type">
> ...
> </spring:bind>
> </spring:bindFromCommand>
>=20
> Suggestions or comments?
>=20
> Thanks!
> Seth
>=20
>=20
>=20
> -------------------------------------------------------
> This SF.Net email is sponsored by: SourceForge.net Broadband=20
> Sign-up now for SourceForge Broadband and get the fastest=20
> 6.0/768 connection for only $19.95/mo for the first 3 months!=20
http://ads.osdn.com/?ad_id=3D2562&alloc_id=3D6184&op=3Dclick
_______________________________________________
Springframework-developer mailing list
Spr...@li...
https://lists.sourceforge.net/lists/listinfo/springframework-developer
|
|
From: Seth L. <se...@eh...> - 2004-05-18 00:16:40
|
Hello,
I've been pooring over the source today trying to find out a way around
this, but no luck. I'm hoping others could lend a hand.
In converting all of our struts code to Spring, I'm writing a lot of
<spring:bind> tags. While binding to a particular field, I have to use
the commandName + fieldName with spring:bind. Typical usage is:
<spring:bind path="chooseBusinessTypeCommand.type">
<springx:fieldLabel name="chooseBusinessTypeCommand.type"/>
<f:select name="${status.expression}" value="${status.value}">
<f:option value="">----</f:option>
<f:option value="SP"><fmt:message key="bizType.SP"/></f:option>
<f:option value="DC"><fmt:message key="bizType.DC"/></f:option>
</f:select>
</spring:bind>
</div>
(Note that <f:select> and <f:option> are tagfiles emulating the struts
<html:select> and <html:option> tags).
My question is, is there a nice way to omit the
"chooseBusinessTypeCommand" usage from the JSP file? I write that for
every field in the form. Ideally the tags would read that from the
handler somehow, where the commandName is initially specified.
I could specify it once at the top of the file, but I'd really like to
not specify it at all.
I realize that keeping it this way keeps <spring:bind> more flexible,
but I would guess that nearly all usage would be to bind to the form and
handler's command object. Minimizing the amount of configuration and
typing here would be really nice.
Another suggestion would be to (optionally) wrap all usages of
<spring:bind> in another tag that could reach somehow into the request
or the handler and discover the commandName. Something like:
<spring:bindFromCommand>
<spring:bind path="type">
...
</spring:bind>
</spring:bindFromCommand>
Suggestions or comments?
Thanks!
Seth
|
|
From: Darren D. <da...@da...> - 2004-05-18 00:04:45
|
=2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Sunday 16 May 2004 15:44, j=FCrgen h=F6ller [werk3AT] wrote: > Darren, > > While I do agree with the argument that a Controller should be solely > responsible for the exposed model, I see that there are valid exceptions > to this rule. I wouldn't mind "exposeRequestAttributes", > "exposeSessionAttributes" and possibly also > "exposeServletContextAttributes" properties on an AbstractTemplateView > base class, as long as they are turned off by default. As those flags are > trivial to add, we could already do this for 1.0.2. What do others think? > > Juergen I've got code ready to commit if no-one objects to this addition. =2D --=20 Darren Davison Public Key: http://www.davison.uk.net/pages/key.htm =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAqVMXKLMLAN01aw0RAkoGAJ9ZfAIULpBNY+qKZp4zLHnHgJjjuACfXMkY aNf3CzcwZ+iazVCgdz9khUU=3D =3D3CJo =2D----END PGP SIGNATURE----- |
|
From: Colin S. <col...@ex...> - 2004-05-17 21:51:07
|
j=FCrgen h=F6ller [werk3AT] wrote: >Colin, Rod, > >Regarding the following two issues: > >http://opensource.atlassian.com/projects/spring/browse/SPR-117 > >Actually, the contract for Stateless Session Beans is quite odd in that = respect: You don't really "create" a SLSB with a "create" call, and "remo= ve" won't actually remove an instance - as SLSBs are pooled.=20 > >However, we can easily invoke "remove" on the EJB proxy after the method= call, both in SimpleRemoteSlsbInvokerInterceptor and in LocalSlsbInvoker= Interceptor. It seems that this can happen in any case: A typical contain= er will simply ignore the "remove" call anyway. > >http://opensource.atlassian.com/projects/spring/browse/SPR-129 > >I've just added a "cacheHome" flag to AbstractSlsbInvokerInterceptor. If= turned off, the home object will be refetched on each method invocation.= This is intended for development environments: It allows for hot redeplo= y of the target EJB respectively restart of the EJB container. > > >I've just added the corresponding code, as it shouldn't change anything = in typical cases. I'll commit it by tomorrow morning. If you object to ei= ther of these changes, we can still roll them back before 1.0.2. > >For addressing the second issue, there are a couple of further options m= entioned in the JIRA entry: for example, refetching the home object when = the create invocation fails. However, those are probably beyond 1.0.2. > >Juergen > =20 > This is fine. My feeling is that the ability to turn off the cache for=20 the home will suite some people even for non-development situations.=20 Other people are not going to be very happy with that situation however.=20 A sequence that without Spring would have been a home lookup followed by=20 maybe 5 invocations on the same session stub now becomes 5 home lookups=20 and 5 create calls, for the 5 method calls. So I am open to us adding in=20 one of the other two solutions to make these people happy, post 1.0.2. Colin |
|
From: <jue...@we...> - 2004-05-17 21:22:04
|
Colin, Rod, Regarding the following two issues: http://opensource.atlassian.com/projects/spring/browse/SPR-117 Actually, the contract for Stateless Session Beans is quite odd in that = respect: You don't really "create" a SLSB with a "create" call, and = "remove" won't actually remove an instance - as SLSBs are pooled.=20 However, we can easily invoke "remove" on the EJB proxy after the method = call, both in SimpleRemoteSlsbInvokerInterceptor and in = LocalSlsbInvokerInterceptor. It seems that this can happen in any case: = A typical container will simply ignore the "remove" call anyway. http://opensource.atlassian.com/projects/spring/browse/SPR-129 I've just added a "cacheHome" flag to AbstractSlsbInvokerInterceptor. If = turned off, the home object will be refetched on each method invocation. = This is intended for development environments: It allows for hot = redeploy of the target EJB respectively restart of the EJB container. I've just added the corresponding code, as it shouldn't change anything = in typical cases. I'll commit it by tomorrow morning. If you object to = either of these changes, we can still roll them back before 1.0.2. For addressing the second issue, there are a couple of further options = mentioned in the JIRA entry: for example, refetching the home object = when the create invocation fails. However, those are probably beyond = 1.0.2. Juergen |
|
From: Janek B. <ya...@st...> - 2004-05-17 14:28:58
|
On Mon, 2004-05-17 at 14:42, Keith Donald wrote:
> Janek,
>
> It's just saying that onSubmit(Object command, BindException errors)
> delegates to onSubmit(command), which is the simplest possible onSubmit
> method to override.
Thanks. I didn't read it very well, did I?
Maybe a {@link #onSubmit(Object, BindException)} could be used instead.
I think I would have noticed that :)
-Janek
|
|
From: Keith D. <kd...@cs...> - 2004-05-17 13:42:13
|
Janek,
It's just saying that onSubmit(Object command, BindException errors)
delegates to onSubmit(command), which is the simplest possible onSubmit
method to override.
Remember there are 3 flavors of onSubmit, each taking a different set of
parameters. Only override one of them, and override the simplest one =
for
what you need. I generally override the simplest: onSubmit(command).
Keith
-----Original Message-----
From: spr...@li...
[mailto:spr...@li...] On Behalf =
Of
Janek Bogucki
Sent: Monday, May 17, 2004 9:32 AM
To: spr...@li...
Subject: [Springframework-developer] SimpleFormController: =
onSubmit(Object
command) pasto
>From spring CVS. First sentence refers to non-existent BindException=20
>parameter
/**
* Simplest onSubmit version. Called by the default =
implementation
of the onSubmit
* version with command and BindException parameters.
* <p>This implementation returns null, making the calling =
onSubmit
method perform
* its default rendering of the success view.
* <p>Subclasses can override this to provide custom submission
handling that
* just needs the command object.
* @param command form object with request parameters bound onto =
it
* @return the prepared model and view, or null
* @throws Exception in case of errors
* @see #onSubmit(Object, BindException)
*/
protected ModelAndView onSubmit(Object command) throws Exception =
{
return null;
}
-Janek
-------------------------------------------------------
This SF.Net email is sponsored by: SourceForge.net Broadband Sign-up now =
for
SourceForge Broadband and get the fastest 6.0/768 connection for only
$19.95/mo for the first 3 months!
http://ads.osdn.com/?ad_id=3D2562&alloc_id=3D6184&op=3Dclick
_______________________________________________
Springframework-developer mailing list
Spr...@li...
https://lists.sourceforge.net/lists/listinfo/springframework-developer
|
|
From: Janek B. <ya...@st...> - 2004-05-17 13:32:59
|
From spring CVS. First sentence refers to non-existent BindException parameter
/**
* Simplest onSubmit version. Called by the default implementation of the onSubmit
* version with command and BindException parameters.
* <p>This implementation returns null, making the calling onSubmit method perform
* its default rendering of the success view.
* <p>Subclasses can override this to provide custom submission handling that
* just needs the command object.
* @param command form object with request parameters bound onto it
* @return the prepared model and view, or null
* @throws Exception in case of errors
* @see #onSubmit(Object, BindException)
*/
protected ModelAndView onSubmit(Object command) throws Exception {
return null;
}
-Janek
|
|
From: Janek B. <ya...@st...> - 2004-05-17 13:31:45
|
>From spring CVS. First sentence refers to non-existent BindException parameter
/**
* Simplest onSubmit version. Called by the default implementation of the onSubmit
* version with command and BindException parameters.
* <p>This implementation returns null, making the calling onSubmit method perform
* its default rendering of the success view.
* <p>Subclasses can override this to provide custom submission handling that
* just needs the command object.
* @param command form object with request parameters bound onto it
* @return the prepared model and view, or null
* @throws Exception in case of errors
* @see #onSubmit(Object, BindException)
*/
protected ModelAndView onSubmit(Object command) throws Exception {
return null;
}
-Janek
|
|
From: <se...@eh...> - 2004-05-17 07:22:56
|
Hello, Much along the lines of multiple View Resolvers, I'd like to ask the developers if they believe allowing multiple Validators per Handler is a good idea. I've run into this situation a few times, and it seems like a good idea. With the addition of new validators that automatically determine the validation rules (commons-validator, for example), there aren't any explicit validator objects written. A handler currently takes one validator. I often need to code some specific, hard to specify via attributes validation rules that go above and beyond what simple declarative validation rules can specify. I'd like the specific validation rules to run along with the commons-validator derived rules. The solution for multiple View Resolvers was to look into the ApplicationContext and find all View Resolvers. There was no explicit ViewResolverChain object. With Handlers, the API has a setValidator. Not wanting to break the API, a suggestion would be to add a setValidators(List validators) method to Handler. This would avoid creating a ValidatorChain object and would keep in the spirit of the View Resolvers solution. Any ideas on this? I would be more than happy to provide the patch for this. Of course, if people think the best way to solve this is to create some sort of Validator Chain object and leave the API for Handler alone, I would create the patch for that as well. Your feedback is much appreciated. I look forward to helping out! Thanks, Seth ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program. |
|
From: <kat...@ho...> - 2004-05-17 02:10:48
|
Apologies in advance if I've broken any posting protocols - 1st time poster. I'd like to run the full test suite - I'm running the "testsummary" target, but it fails. See: http://opensource.atlassian.com/projects/spring/browse/SPR-126 Build.xml states to run "tests" target but this fails too - see DB error at bottom. Is there documentation on the build/test targets that would answer the following: Am I doing something wrong? Is the "testsummary" target obsolete? Is there doco. on which targets I should run, so I can be sure my build passes all tests? Are all DB tests (such as transactions) done against HSQLDB - if so do the targets startup the server? If not, what is the environment I need to setup before running tests? - see DB at bottom. Cheers and long live Spring. NB - The tests continue despite this test failing. [junit] Running org.springframework.jdbc.datasource.DataSourceTransactionManagerTests [junit] Tests run: 19, Failures: 0, Errors: 0, Time elapsed: 1.051 sec [junit] Testsuite: org.springframework.jdbc.datasource.DataSourceTransactionManagerTests [junit] Tests run: 19, Failures: 0, Errors: 0, Time elapsed: 1.051 sec [junit] ------------- Standard Error ----------------- [junit] java.lang.RuntimeException: Application exception [junit] at org.springframework.jdbc.datasource.DataSourceTransactionManagerTests.testTransactionRollbackOnly(DataSourceTransactionManagerTests.java:192) [junit] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [junit] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [junit] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [junit] at java.lang.reflect.Method.invoke(Method.java:324) [junit] at junit.framework.TestCase.runTest(TestCase.java:154) [junit] at junit.framework.TestCase.runBare(TestCase.java:127) [junit] at junit.framework.TestResult$1.protect(TestResult.java:106) [junit] at junit.framework.TestResult.runProtected(TestResult.java:124) [junit] at junit.framework.TestResult.run(TestResult.java:109) [junit] at junit.framework.TestCase.run(TestCase.java:118) [junit] at junit.framework.TestSuite.runTest(TestSuite.java:208) [junit] at junit.framework.TestSuite.run(TestSuite.java:203) [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:289) [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:523) [junit] ------------- ---------------- --------------- |
|
From: snpe <sn...@sn...> - 2004-05-16 22:56:05
|
Hello,
I want DAO with specific data access operations (base hibernate operations =
like load,find,get,save, delete ..), but I want
create object declarative (query operations like find don't important - it =
is possible to use them from HibernateTemplate)
btw for CRUD client I need DAO object with load,find,get,save, delete opera=
tions - Can I do with HibernateTemplate ?
I send example creating such object with declaration in spring context.I ma=
ke only persistent object and declaration in spring context.
If I need client with CRUD operations then I create this object only - for =
specific bussines operations I have to make added object.
I want add yet one operation in HibernateTemplate (I can do it in my BaseHi=
bernateObject) like :
public List findByValueObject(final Class entityClass,Object obj) throws Da=
taAccessException {
return executeFind(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
Criteria criteria =3D createCriteria(session, entityClass).add(Example.=
create(obj));
return criteria.list();
}
});
}
and I can do this :
Cat cat =3D new Cat();
cat.setSex('F');
List femaleCats =3D findByValueObject(Cat.class,cat)
for list female cats - findByValueObject work with one or more properties.
or I can do query for any property of persistent class
In my Dao (with BaseHibernateDao) I do this:
Cat cat =3D (Cat) ctx.getBean('CatDao');
cat.setSex('F');
List femaleCats =3D ...
In my client user populate any properties and I do search all objects with=
this properties
=2D findByValueBean is like this, but I haven't to make query and value bea=
n.
regards
On Sunday 16 May 2004 03:42 pm, j=FCrgen h=F6ller [werk3AT] wrote:
> I don't really understand what you're trying to achieve.
> =20
> If you want to have a generic way to persist any sort of object, use a Hi=
bernateTemplate: The HibernateOperations interface that it implements speci=
fies all sorts of generic data access operations for Hibernate. You can use=
HibernateTemplate directly in your business objects, effectively abandonin=
g DAOs in your application.
> =20
> On the other hand, if you want to have DAOs with specific data access ope=
rations for a certain set of persistent objects, you should stick to a well=
=2Ddefined set of operations for those particular objects rather than offer=
all of Hibernate's data access operations. Well-defined persistent objects=
will offer specific query possibilities etc; their DAO interfaces will con=
sequently use specific query parameters rather than general HQL strings.
> =20
> In essence, use HibernateTemplate directly for generic data access (any p=
ersistent object, any HQL string), and custom DAO implementations for speci=
fic data access (specific persistent objects, specific query parameters).
> =20
> Juergen
> =20
>=20
> ________________________________
>=20
> Von: spr...@li... im Auftrag von=
snpe
> Gesendet: Do 06.05.2004 18:26
> An: spr...@li...
> Betreff: Re: [Springframework-developer] Hibernate Dao implementation (id=
ea)
>=20
>=20
>=20
> I have this error (methods with argument permanent object, not permanent =
class) : load, find work, but save, delete no)
> Next version is tested and work all methods
> I declare CatDaoImpl like :
> bean id=3D"catDao" class=3D"org.springframework.orm.hibernate.support.Bas=
eHibernateDao">
> <property name=3D"sessionFactory"><ref local=3D"sessionFa=
ctory"/>
> </property>
> <property name=3D"clazz">
> <value>eg.Cat</value>
> </property>
> </bean>
>=20
> and use like
> BaseHibernateDao catDao =3D (BaseHibernateDao) ctx.getBean("catDao");
> List cats =3D (List) catDao.loadAll();
> Long id =3D new Long(3);
> Cat cat =3D (Cat) catDao.load(id);
> etc
> We can change Dao on the fly (baseDao haven't to have clazz property) :
> BaseHibernateDao baseDao =3D (BaseHibernateDao) ctx.getBean("baseDao");
> baseDao =3D baseDao.setClazz(Dog.class);
> List dogs =3D (List) baseDao.loadAll();
> ...
>=20
> I can extends BaseHibernateDao and add new business methods (like Example=
Criteria)
>=20
> It is possible exclude all named query method in helper class - it don't =
depends from permanent class
>=20
> Regards
>=20
> Code :
>=20
>=20
> package org.springframework.orm.hibernate.support;
>=20
> import java.io.Serializable;
> import java.util.Collection;
> import java.util.List;
>=20
> import net.sf.hibernate.LockMode;
> import net.sf.hibernate.type.Type;
>=20
> import org.springframework.dao.DataAccessException;
> import org.springframework.orm.hibernate.HibernateCallback;
>=20
>=20
> public class BaseHibernateDao extends HibernateDaoSupport implements IBa=
seHibernateDao {
> =20
> private Class clazz;
> =20
> public void delete(Object obj,LockMode lockMode)
> throws DataAccessException {
> getHibernateTemplate().delete(obj,lockMode);
> }
> public void delete(Object obj) throws DataAccessException {
> getHibernateTemplate().delete(obj);
> }
> public void deleteAll(Collection entities) throws DataAccessExcep=
tion {
> getHibernateTemplate().deleteAll(entities);
> }
> =20
> public void evict(Object obj) throws DataAccessException {
> getHibernateTemplate().evict(obj);
> }
> public Object execute(HibernateCallback action) throws DataAccess=
Exception {
> return getHibernateTemplate().execute(action);
> }
> =20
> public List executeFind(HibernateCallback action)
> throws DataAccessException {
> return getHibernateTemplate().executeFind(action);
> }
> =20
> public List find(String queryString, Type type)
> throws DataAccessException {
> return getHibernateTemplate().find(queryString,clazz,type=
);
> }
> =20
> public List find(String queryString)
> throws DataAccessException {
> return getHibernateTemplate().find(queryString,clazz);
> }
> =20
> public List find(String queryString, Object[] values, Type[] type=
s)
> throws DataAccessException {
> return getHibernateTemplate().find(queryString,values,typ=
es);
> }
> =20
> public List find(String queryString, Object[] values)
> throws DataAccessException {
> return getHibernateTemplate().find(queryString,values);
> }
> =20
> public List findByNamedQuery(String queryName, Object value, Type=
type)
> throws DataAccessException {
> return getHibernateTemplate().findByNamedQuery(queryName,=
value,type);
> }
> public List findByNamedQuery(String queryName, Object value)
> throws DataAccessException {
> return getHibernateTemplate().findByNamedQuery(queryName,=
value);
> }
> =20
> public List findByNamedQuery(String queryName, Object[] values, T=
ype[] types)
> throws DataAccessException {
> return getHibernateTemplate().findByNamedQuery(queryName,=
values,types);
> }
> =20
> public List findByNamedQuery(String queryName, Object[] values)
> throws DataAccessException {
> return getHibernateTemplate().findByNamedQuery(queryName,=
values);
> }
> =20
> public List findByNamedQuery(String queryName, String paramName,
> Object value, Type type) throws DataAccessExcepti=
on {
> return getHibernateTemplate().findByNamedQuery(queryName,=
paramName,value,type);
> }
> =20
> public List findByNamedQuery(String queryName, String paramName,
> Object value) throws DataAccessException {
> return getHibernateTemplate().findByNamedQuery(queryName,=
paramName, value);
> }
> =20
> public List findByNamedQuery(String queryName, String[] paramName=
s,
> Object[] values, Type[] types) throws DataAccessE=
xception {
> return getHibernateTemplate().findByNamedQuery(queryName,=
paramNames, values,types);
> }
> =20
> public List findByNamedQuery(String queryName, String[] paramName=
s,
> Object[] values) throws DataAccessException {
> return getHibernateTemplate().findByNamedQuery(queryName,=
paramNames, values);
> }
> =20
> public List findByNamedQuery(String queryName) throws DataAccessE=
xception {
> return getHibernateTemplate().findByNamedQuery(queryName);
> }
> =20
> public List findByNamedQueryAndValueBean(String queryName, Object=
valueBean)
> throws DataAccessException {
> return getHibernateTemplate().findByNamedQueryAndValueBea=
n(queryName,valueBean);
> }
> =20
> public List findByValueBean(String queryString, Object valueBean)
> throws DataAccessException {
> return getHibernateTemplate().findByValueBean(queryString=
,valueBean);
> }
> =20
> public Object get(Serializable id, LockMode lockMode)
> throws DataAccessException {
> return getHibernateTemplate().get(clazz,id,lockMode);
> }
> =20
> public Object get( Serializable id)
> throws DataAccessException {
> return getHibernateTemplate().get(clazz,id);
> }
> =20
> public Object load( Serializable id, LockMode lockMode)
> throws DataAccessException {
> return getHibernateTemplate().load(clazz,id,lockMode);
> }
> =20
> public Object load(Serializable id)
> throws DataAccessException {
> return getHibernateTemplate().load(clazz,id);
> }
> =20
> public List loadAll() throws DataAccessException {
> return getHibernateTemplate().loadAll(clazz);
> }
> =20
> public void lock(Object obj,LockMode lockMode)
> throws DataAccessException {
> getHibernateTemplate().lock(obj,lockMode);
> }
> =20
> public void save(Object obj,Serializable id) throws DataAccessExc=
eption {
> getHibernateTemplate().save(obj,id);
> }
> =20
> public Serializable save(Object obj) throws DataAccessException {
> return getHibernateTemplate().save(obj);
> }
> =20
> public void saveOrUpdate(Object obj) throws DataAccessException {
> getHibernateTemplate().saveOrUpdate(obj);
> }
> =20
> public Object saveOrUpdateCopy(Object obj) throws DataAccessExcep=
tion {
> return getHibernateTemplate().saveOrUpdateCopy(obj);
> }
> =20
> public void update(Object obj,LockMode lockMode)
> throws DataAccessException {
> getHibernateTemplate().update(obj,lockMode);
> }
> =20
> public void update(Object obj) throws DataAccessException {
> getHibernateTemplate().update(obj);
> }
> =20
> public BaseHibernateDao(Class clazz) {
> super();
> this.clazz =3D clazz;
> }
> =20
> public BaseHibernateDao () {
> super();
> }
> =20
> public Class getClazz() {
> return clazz;
> }
> =20
> public void setClazz(Class clazz) {
> this.clazz =3D clazz;
> }
> }
>=20
> /*
> * Created on May 6, 2004
> *
> */
> package org.springframework.orm.hibernate.support;
> import java.io.Serializable;
> import java.util.Collection;
> import java.util.List;
> import net.sf.hibernate.LockMode;
> import net.sf.hibernate.type.Type;
> import org.springframework.dao.DataAccessException;
> import org.springframework.orm.hibernate.HibernateCallback;
> /**
> * @author Haris Peco
> *
> * Snpe Informacioni sistemi
> */
> public interface IBaseHibernateDao {
> public abstract void delete(Object obj,LockMode lockMode) throws =
DataAccessException;
> public abstract void delete(Object Obj) throws DataAccessExceptio=
n;
> public abstract void deleteAll(Collection entities)
> throws DataAccessException;
> public abstract void evict(Object obj) throws DataAccessException;
> public abstract Object execute(HibernateCallback action)
> throws DataAccessException;
> public abstract List executeFind(HibernateCallback action)
> throws DataAccessException;
> public abstract List find(String queryString, Type type)
> throws DataAccessException;
> public abstract List find(String queryString) throws DataAccessEx=
ception;
> public abstract List find(String queryString, Object[] values, Ty=
pe[] types)
> throws DataAccessException;
> public abstract List find(String queryString, Object[] values)
> throws DataAccessException;
> public abstract List findByNamedQuery(String queryName, Object va=
lue,
> Type type) throws DataAccessException;
> public abstract List findByNamedQuery(String queryName, Object va=
lue)
> throws DataAccessException;
> public abstract List findByNamedQuery(String queryName, Object[] =
values,
> Type[] types) throws DataAccessException;
> public abstract List findByNamedQuery(String queryName, Object[] =
values)
> throws DataAccessException;
> public abstract List findByNamedQuery(String queryName, String pa=
ramName,
> Object value, Type type) throws DataAccessExcepti=
on;
> public abstract List findByNamedQuery(String queryName, String pa=
ramName,
> Object value) throws DataAccessException;
> public abstract List findByNamedQuery(String queryName,
> String[] paramNames, Object[] values, Type[] type=
s)
> throws DataAccessException;
> public abstract List findByNamedQuery(String queryName,
> String[] paramNames, Object[] values) throws Data=
AccessException;
> public abstract List findByNamedQuery(String queryName)
> throws DataAccessException;
> public abstract List findByNamedQueryAndValueBean(String queryNam=
e,
> Object valueBean) throws DataAccessException;
> public abstract List findByValueBean(String queryString, Object v=
alueBean)
> throws DataAccessException;
> public abstract Object get(Serializable id, LockMode lockMode)
> throws DataAccessException;
> public abstract Object get(Serializable id) throws DataAccessExce=
ption;
> public abstract Object load(Serializable id, LockMode lockMode)
> throws DataAccessException;
> public abstract Object load(Serializable id) throws DataAccessExc=
eption;
> public abstract List loadAll() throws DataAccessException;
> public abstract void lock(Object obj,LockMode lockMode) throws Da=
taAccessException;
> public abstract void save(Object obj,Serializable id) throws Data=
AccessException;
> public abstract Serializable save(Object obj) throws DataAccessEx=
ception;
> public abstract void saveOrUpdate(Object obj) throws DataAccessEx=
ception;
> public abstract Object saveOrUpdateCopy(Object obj) throws DataAc=
cessException;
> public abstract void update(Object obj,LockMode lockMode) throws =
DataAccessException;
> public abstract void update(Object obj) throws DataAccessExceptio=
n;
> public abstract Class getClazz();
> public abstract void setClazz(Class clazz);
> }
>=20
>=20
> -------------------------------------------------------
> This SF.Net email is sponsored by Sleepycat Software
> Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to
> deliver higher performing products faster, at low TCO.
> http://www.sleepycat.com/telcomwpreg.php?From=3Dosdnemail3
> _______________________________________________
> Springframework-developer mailing list
> Spr...@li...
> https://lists.sourceforge.net/lists/listinfo/springframework-developer
>=20
>=20
>=20
>=20
> -------------------------------------------------------
> This SF.Net email is sponsored by: SourceForge.net Broadband
> Sign-up now for SourceForge Broadband and get the fastest
> 6.0/768 connection for only $19.95/mo for the first 3 months!
> http://ads.osdn.com/?ad_id%62&alloc_ida84&op=CCk
> _______________________________________________
> Springframework-developer mailing list
> Spr...@li...
> https://lists.sourceforge.net/lists/listinfo/springframework-developer
>=20
|
|
From: <jue...@we...> - 2004-05-16 19:16:53
|
Thanks for spotting this - indeed, should be "urn:JPetStore" - to be =
fixed promptly.
=20
I think this comes straight from the original iBATIS JPetStore, so might =
still be in there too.
=20
Juergen
=20
________________________________
Von: spr...@li... im Auftrag =
von Hunter Kelly
Gesendet: Mi 05.05.2004 12:39
An: spr...@li...
Betreff: [Springframework-developer] confusion in jpetstore sample
Hi there, I'm plowing through the wonderful world of SOAP, Jax-RPC, =
Axis, etc.
I was looking at the sample server-deploy.wsdd in
samples/jpetstore/war/WEB-INF/server-config.wsdd, and come across the
following:
<service name=3D"OrderService" provider=3D"java:RPC">
<parameter name=3D"allowedMethods" value=3D"*"/>
<parameter name=3D"className"
value=3D"org.springframework.samples.jpetstore.service.server.JaxRpcOrde
rService"/>
<beanMapping qname=3D"jpetstore:Order" =
xmlns:jpetstore=3D"urn:BeanService"
languageSpecificType=3D
"java:org.springframework.samples.jpetstore.domain.Order"/>
<beanMapping qname=3D"jpetstore:LineItem"
xmlns:jpetstore=3D"urn:BeanService" languageSpecificTy
pe=3D"java:org.springframework.samples.jpetstore.domain.LineItem"/>
<beanMapping qname=3D"jpetstore:Item" =
xmlns:jpetstore=3D"urn:BeanService"
languageSpecificType=3D"
java:org.springframework.samples.jpetstore.domain.Item"/>
<beanMapping qname=3D"jpetstore:Product"
xmlns:jpetstore=3D"urn:BeanService" languageSpecificTyp
e=3D"java:org.springframework.samples.jpetstore.domain.Product"/>
</service>
Now the problem I have is with the beanMappings. My problem is the =
attribute
xmlns:jpetstore=3D"urn:BeanService" and I kept wondering what the
"urn:BeanService" was referring to, until I realized that is from one of =
the
examples in the Axis distribution.
I think it would be much clearer if the beanMappings looked like:
<beanMapping qname=3D"jpetstore:LineItem" =
xmlns:jpetstore=3D"urn:JPetStore" .../>
I think that would make it easier for people coming into it (like me) to
realize that the "urn:JPetStore" was just a local constant, instead of =
some
kind of deep magic - "urn:BeanService" is needlessly confusing.
I can make the changes myself and send in a patch if people are =
interested,
but I figured that it's such a small change a comitter might find it =
easier
to do themselves...
H
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g.
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick
_______________________________________________
Springframework-developer mailing list
Spr...@li...
https://lists.sourceforge.net/lists/listinfo/springframework-developer
|
|
From: <jue...@we...> - 2004-05-16 18:33:10
|
Hi Tom,
=20
Thanks for spotting this! I've just fixed the issue by changing the =
mechanism: processFormSubmission and showPage handle the request =
attribute now, just exposing it when the session attribute is no longer =
set. Therefore, getCurrentPage should always return the current value =
now.
=20
Please give the current CVS version a try if you have the time - we're =
about to release 1.0.2 by the end of the week.
=20
Juergen
=20
________________________________
Von: spr...@li... im Auftrag =
von Tom Turelinckx
Gesendet: Di 11.05.2004 17:59
An: spr...@li...
Betreff: Re: [Springframework-developer] minor annoyances
Hello Juergen,
Sorry about the late reply :$, but I've tried the changes to
AbstractWizardFromController, and there's something wrong with
the logic in getCurrentPage.
Currently, the page attribute is fetched from the session and cached in
the request on the first call to getCurrentPage; all subsequent calls
will return the value cached in the request. But the session attribute =
is
later updated (in showPage), so the cached value returned by
getCurrentPage is then wrong.
This results in e.g. the page parameter passed to referenceData being 0
while on page 1.
I have locally changed the implementation into this, which works
correctly:
protected int getCurrentPage(HttpServletRequest request) {
// get attribute from session
Integer pageAttr =3D (Integer)
request.getSession().getAttribute(getPageSessionAttributeName());
if (pageAttr =3D=3D null) {
// if attribute removed from session, try to get it from request
pageAttr =3D (Integer)
request.getAttribute(getPageSessionAttributeName());
if (pageAttr =3D=3D null) {
throw new IllegalStateException("Page attribute [" +
getPageSessionAttributeName() +
"] neither found in session nor in request");
}
} else {
// if attribute present in session...
if
=
(!pageAttr.equals(request.getAttribute(getPageSessionAttributeName())))
{
// ...but not (equal) in request, expose in request as well
request.setAttribute(getPageSessionAttributeName(),
pageAttr);
}
}
return pageAttr.intValue();
}
Kind regards,
Tom.
On Sun, 2 May 2004 13:09:32 +0200, "j=FCrgen h=F6ller [werk3AT]"
<jue...@we...> said:
> Tom,
>=20
> I've just addressed your AbstractWizardFormController issues:
> validatePagesAndFinish checks for page-specific binding errors now, =
and
> getCurrentPage allows to retrieve the current page at any point in
> request processing. So processFinish still doesn't have a page =
parameter,
> but you can now invoke getCurrentPage from there.
>=20
> Juergen
>=20
>
> ________________________________
>
> Von: spr...@li... im Auftrag =
von
> Tom Turelinckx
> Gesendet: Mi 28.04.2004 09:38
> An: spr...@li...
> Betreff: [Springframework-developer] minor annoyances
>
>
>
> Hello,
>
> While upgrading to spring 1.0.1, I've noticed some minor annoyances =
that
> may be easy to fix, possibly for 1.0.2:
>
> 1. HttpServletBean apparently does not support properties of type
> Resource, because BeanWrapperImpl does not register a Resource =
property
> editor by default. However, there's no possibility to register custom
> editors with the BeanWrapper used by HttpServletBean. Maybe an
> "initBeanWrapper" protected method could be added here, like =
initBinder
> in BaseCommandController?
>
> 2. Unlike ResourceBundleMessageSource, ResourceBundleViewResolver only
> has a basename property, no basenames property. As we keep controller
> cfg, dao cfg and messages in separate resource files by functional
> domain, it also makes sense to keep the view cfg in different files.
> We're currently using an adapted ResourceBundleViewResolver, but maybe
> this functionality could be added to spring, or maybe there's a good
> reason to keep all view cfg in a single file?
>
> 3. In AbstractWizardFormController, it would be useful if =
processFinish
> had an extra "int submissionPage" parameter (the currentPage value in
> processFormSubmission could be passed to validatePagesAndFinish and on =
to
> processFinish), though I have no suggestion how to add this in a
> backward-compatible way...
> It would be useful, because some of our legacy stored procedures =
perform
> validation logic that we can't duplicate in java, i.e. the result of a
> stored procedure could indicate a user-correctable error, which we =
would
> like to display in the same way as a global validation error, e.g.:
>
> protected ModelAndView processFinish( HttpServletRequest request,
> HttpServletResponse response, Object command,
> BindException errors, int page ) throws Exception {
> // stored procedure is called in onSubmit,
> // messageInfo is an output parameter
> MessageInfo messageInfo =3D onSubmit( command );
> if ( messageInfo.isError() ) {
> errors.reject( "", messageInfo.getMessage() );
> return showPage( request, errors, page );
> }
> if ( messageInfo.isWarning() ) {
> return handleWarning( command, messageInfo );
> }
> return handleSuccess( command, messageInfo );
> }
>
> Note that getCurrentPage can't be called in processFinish, as we are
> "after processFormSubmission".
>
> Even if the page parameter can't be added to processFinish, it would
> still be useful to add it to validatePagesAndFinish:
>
> private ModelAndView validatePagesAndFinish(HttpServletRequest =
request,
> HttpServletResponse response, Object command,
> BindException errors, int currentPage) throws Exception {
>
> // in case of binding errors -> show current page
> if (errors.getErrorCount() - errors.getGlobalErrorCount() > 0) {
> return showPage(request, errors, currentPage);
> }
>
> for (int page =3D 0; page < pages.length; page++) {
> validatePage(command, errors, page);
> // in case of field errors on a page -> show the page
> if (errors.getErrorCount() - errors.getGlobalErrorCount() > 0) =
{
> return showPage(request, errors, page);
> }
> }
> // no field errors -> maybe global errors, or none at all
> return processFinish(request, response, command, errors,
> currentPage);
> }
>
> The first if was added to ensure the current page is shown again if =
there
> were binding errors, such as typeMismatch. Otherwise, those errors =
will
> always result in the first page being shown, instead of the submission
> page where the error actually occured.
>
> Also, shouldn't the "if (pages =3D=3D null | pages.length =3D=3D 0)" =
in setPages
> use "||" instead of "|"?
>
> Kind regards,
> Tom.
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by: Oracle 10g
> Get certified on the hottest thing ever to hit the market... Oracle =
10g.
> Take an Oracle 10g class now, and we'll give you the exam FREE.
> http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick
> _______________________________________________
> Springframework-developer mailing list
> Spr...@li...
> https://lists.sourceforge.net/lists/listinfo/springframework-developer
>
>
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by: Oracle 10g
> Get certified on the hottest thing ever to hit the market... Oracle =
10g.
> Take an Oracle 10g class now, and we'll give you the exam FREE.
> http://ads.osdn.com/?ad_id149&alloc_id=8166&op=3Dclick
> _______________________________________________
> Springframework-developer mailing list
> Spr...@li...
> https://lists.sourceforge.net/lists/listinfo/springframework-developer
-------------------------------------------------------
This SF.Net email is sponsored by Sleepycat Software
Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to
deliver higher performing products faster, at low TCO.
http://www.sleepycat.com/telcomwpreg.php?From=3Ddnemail3
_______________________________________________
Springframework-developer mailing list
Spr...@li...
https://lists.sourceforge.net/lists/listinfo/springframework-developer
|
|
From: <jue...@we...> - 2004-05-16 15:49:52
|
I'm not too fond of this idea in general, as it contains the view type =
as prefix in the symbolic view name - while the view name ideally =
shouldn't know anything about the view implementation type. Of course, =
if it works for you, then it's an appropriate solution for you :-)
=20
As a general solution, I prefer the ability to specify multiple =
ViewResolver beans in a DispatcherServlet context - a change that we =
have already agreed on for Spring 1.0.2. Those ViewResolver beans can be =
ordered through "order" values, returning null if they can't resolve a =
view name, letting the next ViewResolver in the chain have a try.
=20
Juergen
=20
________________________________
Von: spr...@li... im Auftrag =
von Timo Verhoeven
Gesendet: Do 06.05.2004 14:36
An: spr...@li...
Betreff: Re: [Springframework-developer] RE: [Springframework-user] =
chain ViewResolvers?
Hello,
this might be slightly off-topic.
I used to work with the InternalResourceViewResolver for convenience
until I needed support for additional View classes (redirects in my
case). However, I did not want to map every view explicitly, as in the
countries and petclinic samples, and came up with another idea: I wrote
a simple DelegatingViewResolver which maps prefixes to ViewResolvers.
The configuration looks like this:
<bean id=3D"defaultViewResolver"
=
class=3D"org.springframework.web.servlet.view.InternalResourceViewResolve=
r">
<property
name=3D"viewClass"><value>org.springframework.web.servlet.view.JstlView</=
value></property>
<property name=3D"prefix"><value>/WEB-INF/intranet/</value></property>
<property name=3D"suffix"><value>.jspx</value></property>
</bean>
<bean id=3D"redirectViewResolver"
class=3D"de.tcv.da.customerservice.util.RedirectViewResolver"/>
=20
<bean id=3D"viewResolver"
class=3D"de.tcv.da.customerservice.util.DelegatingViewResolver">
<property name=3D"defaultResolver">
<ref local=3D"defaultViewResolver"/>
</property>
<property name=3D"prefixMappings">
<map>
<entry key=3D"redirect"><ref =
local=3D"redirectViewResolver"/></entry>
</map>
</property>
</bean>
Now I can have view names like "redirect:http://www.google.com",
"redirect:index.page", and "showCustomer.page" without sacrificing the
convenience of the InternalResourceViewResolver for my jspx files.
This could be easily extended to multiple InternalResourceViewResolver
instances to support more View classes, yielding view names like
"xls:customer", "pdf:customer", "jsp:index", etc. The separator is
configurable.
If it's any useful to others I can contribute my DelegatingViewResolver
and RedirectViewResolver sources.
Regards,
Timo
-------------------------------------------------------
This SF.Net email is sponsored by Sleepycat Software
Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to
deliver higher performing products faster, at low TCO.
http://www.sleepycat.com/telcomwpreg.php?From=3Dosdnemail3
_______________________________________________
Springframework-developer mailing list
Spr...@li...
https://lists.sourceforge.net/lists/listinfo/springframework-developer
|
|
From: <jue...@we...> - 2004-05-16 15:44:31
|
I don't really understand what you're trying to achieve.
=20
If you want to have a generic way to persist any sort of object, use a =
HibernateTemplate: The HibernateOperations interface that it implements =
specifies all sorts of generic data access operations for Hibernate. You =
can use HibernateTemplate directly in your business objects, effectively =
abandoning DAOs in your application.
=20
On the other hand, if you want to have DAOs with specific data access =
operations for a certain set of persistent objects, you should stick to =
a well-defined set of operations for those particular objects rather =
than offer all of Hibernate's data access operations. Well-defined =
persistent objects will offer specific query possibilities etc; their =
DAO interfaces will consequently use specific query parameters rather =
than general HQL strings.
=20
In essence, use HibernateTemplate directly for generic data access (any =
persistent object, any HQL string), and custom DAO implementations for =
specific data access (specific persistent objects, specific query =
parameters).
=20
Juergen
=20
________________________________
Von: spr...@li... im Auftrag =
von snpe
Gesendet: Do 06.05.2004 18:26
An: spr...@li...
Betreff: Re: [Springframework-developer] Hibernate Dao implementation =
(idea)
I have this error (methods with argument permanent object, not permanent =
class) : load, find work, but save, delete no)
Next version is tested and work all methods
I declare CatDaoImpl like :
bean id=3D"catDao" =
class=3D"org.springframework.orm.hibernate.support.BaseHibernateDao">
<property name=3D"sessionFactory"><ref =
local=3D"sessionFactory"/>
</property>
<property name=3D"clazz">
<value>eg.Cat</value>
</property>
</bean>
and use like
BaseHibernateDao catDao =3D (BaseHibernateDao) ctx.getBean("catDao");
List cats =3D (List) catDao.loadAll();
Long id =3D new Long(3);
Cat cat =3D (Cat) catDao.load(id);
etc
We can change Dao on the fly (baseDao haven't to have clazz property) :
BaseHibernateDao baseDao =3D (BaseHibernateDao) ctx.getBean("baseDao");
baseDao =3D baseDao.setClazz(Dog.class);
List dogs =3D (List) baseDao.loadAll();
...
I can extends BaseHibernateDao and add new business methods (like =
Example Criteria)
It is possible exclude all named query method in helper class - it don't =
depends from permanent class
Regards
Code :
package org.springframework.orm.hibernate.support;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import net.sf.hibernate.LockMode;
import net.sf.hibernate.type.Type;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate.HibernateCallback;
public class BaseHibernateDao extends HibernateDaoSupport implements =
IBaseHibernateDao {
=20
private Class clazz;
=20
public void delete(Object obj,LockMode lockMode)
throws DataAccessException {
getHibernateTemplate().delete(obj,lockMode);
}
public void delete(Object obj) throws DataAccessException {
getHibernateTemplate().delete(obj);
}
public void deleteAll(Collection entities) throws =
DataAccessException {
getHibernateTemplate().deleteAll(entities);
}
=20
public void evict(Object obj) throws DataAccessException {
getHibernateTemplate().evict(obj);
}
public Object execute(HibernateCallback action) throws =
DataAccessException {
return getHibernateTemplate().execute(action);
}
=20
public List executeFind(HibernateCallback action)
throws DataAccessException {
return getHibernateTemplate().executeFind(action);
}
=20
public List find(String queryString, Type type)
throws DataAccessException {
return =
getHibernateTemplate().find(queryString,clazz,type);
}
=20
public List find(String queryString)
throws DataAccessException {
return getHibernateTemplate().find(queryString,clazz);
}
=20
public List find(String queryString, Object[] values, Type[] =
types)
throws DataAccessException {
return =
getHibernateTemplate().find(queryString,values,types);
}
=20
public List find(String queryString, Object[] values)
throws DataAccessException {
return getHibernateTemplate().find(queryString,values);
}
=20
public List findByNamedQuery(String queryName, Object value, =
Type type)
throws DataAccessException {
return =
getHibernateTemplate().findByNamedQuery(queryName,value,type);
}
public List findByNamedQuery(String queryName, Object value)
throws DataAccessException {
return =
getHibernateTemplate().findByNamedQuery(queryName,value);
}
=20
public List findByNamedQuery(String queryName, Object[] values, =
Type[] types)
throws DataAccessException {
return =
getHibernateTemplate().findByNamedQuery(queryName,values,types);
}
=20
public List findByNamedQuery(String queryName, Object[] values)
throws DataAccessException {
return =
getHibernateTemplate().findByNamedQuery(queryName,values);
}
=20
public List findByNamedQuery(String queryName, String paramName,
Object value, Type type) throws =
DataAccessException {
return =
getHibernateTemplate().findByNamedQuery(queryName,paramName,value,type);
}
=20
public List findByNamedQuery(String queryName, String paramName,
Object value) throws DataAccessException {
return =
getHibernateTemplate().findByNamedQuery(queryName,paramName, value);
}
=20
public List findByNamedQuery(String queryName, String[] =
paramNames,
Object[] values, Type[] types) throws =
DataAccessException {
return =
getHibernateTemplate().findByNamedQuery(queryName,paramNames, =
values,types);
}
=20
public List findByNamedQuery(String queryName, String[] =
paramNames,
Object[] values) throws DataAccessException {
return =
getHibernateTemplate().findByNamedQuery(queryName,paramNames, values);
}
=20
public List findByNamedQuery(String queryName) throws =
DataAccessException {
return =
getHibernateTemplate().findByNamedQuery(queryName);
}
=20
public List findByNamedQueryAndValueBean(String queryName, =
Object valueBean)
throws DataAccessException {
return =
getHibernateTemplate().findByNamedQueryAndValueBean(queryName,valueBean);=
}
=20
public List findByValueBean(String queryString, Object =
valueBean)
throws DataAccessException {
return =
getHibernateTemplate().findByValueBean(queryString,valueBean);
}
=20
public Object get(Serializable id, LockMode lockMode)
throws DataAccessException {
return getHibernateTemplate().get(clazz,id,lockMode);
}
=20
public Object get( Serializable id)
throws DataAccessException {
return getHibernateTemplate().get(clazz,id);
}
=20
public Object load( Serializable id, LockMode lockMode)
throws DataAccessException {
return getHibernateTemplate().load(clazz,id,lockMode);
}
=20
public Object load(Serializable id)
throws DataAccessException {
return getHibernateTemplate().load(clazz,id);
}
=20
public List loadAll() throws DataAccessException {
return getHibernateTemplate().loadAll(clazz);
}
=20
public void lock(Object obj,LockMode lockMode)
throws DataAccessException {
getHibernateTemplate().lock(obj,lockMode);
}
=20
public void save(Object obj,Serializable id) throws =
DataAccessException {
getHibernateTemplate().save(obj,id);
}
=20
public Serializable save(Object obj) throws DataAccessException =
{
return getHibernateTemplate().save(obj);
}
=20
public void saveOrUpdate(Object obj) throws DataAccessException =
{
getHibernateTemplate().saveOrUpdate(obj);
}
=20
public Object saveOrUpdateCopy(Object obj) throws =
DataAccessException {
return getHibernateTemplate().saveOrUpdateCopy(obj);
}
=20
public void update(Object obj,LockMode lockMode)
throws DataAccessException {
getHibernateTemplate().update(obj,lockMode);
}
=20
public void update(Object obj) throws DataAccessException {
getHibernateTemplate().update(obj);
}
=20
public BaseHibernateDao(Class clazz) {
super();
this.clazz =3D clazz;
}
=20
public BaseHibernateDao () {
super();
}
=20
public Class getClazz() {
return clazz;
}
=20
public void setClazz(Class clazz) {
this.clazz =3D clazz;
}
}
/*
* Created on May 6, 2004
*
*/
package org.springframework.orm.hibernate.support;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import net.sf.hibernate.LockMode;
import net.sf.hibernate.type.Type;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate.HibernateCallback;
/**
* @author Haris Peco
*
* Snpe Informacioni sistemi
*/
public interface IBaseHibernateDao {
public abstract void delete(Object obj,LockMode lockMode) throws =
DataAccessException;
public abstract void delete(Object Obj) throws =
DataAccessException;
public abstract void deleteAll(Collection entities)
throws DataAccessException;
public abstract void evict(Object obj) throws =
DataAccessException;
public abstract Object execute(HibernateCallback action)
throws DataAccessException;
public abstract List executeFind(HibernateCallback action)
throws DataAccessException;
public abstract List find(String queryString, Type type)
throws DataAccessException;
public abstract List find(String queryString) throws =
DataAccessException;
public abstract List find(String queryString, Object[] values, =
Type[] types)
throws DataAccessException;
public abstract List find(String queryString, Object[] values)
throws DataAccessException;
public abstract List findByNamedQuery(String queryName, Object =
value,
Type type) throws DataAccessException;
public abstract List findByNamedQuery(String queryName, Object =
value)
throws DataAccessException;
public abstract List findByNamedQuery(String queryName, Object[] =
values,
Type[] types) throws DataAccessException;
public abstract List findByNamedQuery(String queryName, Object[] =
values)
throws DataAccessException;
public abstract List findByNamedQuery(String queryName, String =
paramName,
Object value, Type type) throws =
DataAccessException;
public abstract List findByNamedQuery(String queryName, String =
paramName,
Object value) throws DataAccessException;
public abstract List findByNamedQuery(String queryName,
String[] paramNames, Object[] values, Type[] =
types)
throws DataAccessException;
public abstract List findByNamedQuery(String queryName,
String[] paramNames, Object[] values) throws =
DataAccessException;
public abstract List findByNamedQuery(String queryName)
throws DataAccessException;
public abstract List findByNamedQueryAndValueBean(String =
queryName,
Object valueBean) throws DataAccessException;
public abstract List findByValueBean(String queryString, Object =
valueBean)
throws DataAccessException;
public abstract Object get(Serializable id, LockMode lockMode)
throws DataAccessException;
public abstract Object get(Serializable id) throws =
DataAccessException;
public abstract Object load(Serializable id, LockMode lockMode)
throws DataAccessException;
public abstract Object load(Serializable id) throws =
DataAccessException;
public abstract List loadAll() throws DataAccessException;
public abstract void lock(Object obj,LockMode lockMode) throws =
DataAccessException;
public abstract void save(Object obj,Serializable id) throws =
DataAccessException;
public abstract Serializable save(Object obj) throws =
DataAccessException;
public abstract void saveOrUpdate(Object obj) throws =
DataAccessException;
public abstract Object saveOrUpdateCopy(Object obj) throws =
DataAccessException;
public abstract void update(Object obj,LockMode lockMode) throws =
DataAccessException;
public abstract void update(Object obj) throws =
DataAccessException;
public abstract Class getClazz();
public abstract void setClazz(Class clazz);
}
-------------------------------------------------------
This SF.Net email is sponsored by Sleepycat Software
Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to
deliver higher performing products faster, at low TCO.
http://www.sleepycat.com/telcomwpreg.php?From=3Dosdnemail3
_______________________________________________
Springframework-developer mailing list
Spr...@li...
https://lists.sourceforge.net/lists/listinfo/springframework-developer
|