I don't have anything simple enough to paste here, so I'll make up a
contrived example for user registration:
public Resolution execute() {
User user = registrationService.registerUser(username, password,
email);
// let's create an empty user profile for the newly created user
to store their settings
UserProfile profile = userProfileService.createProfile(user);
}
Now if the createProfile() method throws a RuntimeException for
whatever reason, the user will see an error page. The user will
reasonably think that registration failed, when it in fact succeeded.
I would prefer that the registration gets rolled back.
On May 25, 2009, at 12:59 PM, Richard Hauswald wrote:
> would you send me a sample of a method doing some database action?
>
> On Mon, May 25, 2009 at 6:18 PM, Michael Day <[email protected]
> > wrote:
>> Yes, you are correct. But I am hoping to not have to do that. I
>> want
>> the transaction around the entire event handling process so that
>> every
>> database update will be rolled back any time a user sees an error
>> page.
>>
>> On May 25, 2009, at 2:33 AM, Richard Hauswald wrote:
>>
>>> It's not impossible... If you extract the code that needs
>>> interception
>>> into a separate class the ActionBean would not not need to be
>>> enhanced
>>> by cglib. But I'm not sure if I really understood your problem so
>>> excuse me if I'm wrong.
>>>
>>> On Mon, May 25, 2009 at 2:56 AM, Michael Day <[email protected]
>>>> wrote:
>>>> Upon further investigation, I have found that the indexed
>>>> properties
>>>> binding problem occurs because the cglib proxies lose generic types
>>>> from the superclass. I don't know anything about cglib, so maybe
>>>> someone else can provide some insight.
>>>>
>>>> As it stands, using guice to manage ActionBeans with method
>>>> interception appears to be impossible.
>>>>
>>>> On May 24, 2009, at 1:42 PM, Michael Day wrote:
>>>>
>>>>> Richard,
>>>>>
>>>>> Thanks for the suggestion. I looked through the code, and it
>>>>> appears
>>>>> that it would suffer from the same problems I identified. I
>>>>> neglected
>>>>> to mention before that the problems are only occurring with
>>>>> ActionBeans that have been enhanced by cglib. I'm guessing that
>>>>> stripes-guice is working for you because your ActionBeans are not.
>>>>>
>>>>> On May 24, 2009, at 4:08 AM, Richard Hauswald wrote:
>>>>>
>>>>>> Hello Michael,
>>>>>> try to use stripes-guice(http://www.silvermindsoftware.com/stripesguice/
>>>>>> )
>>>>>> and bind the interceptors in the guice module(s) using
>>>>>> bindInterceptor. I'm using guice based injection and interceptors
>>>>>> without any problems. Documentation is also great, so give it try
>>>>>> and
>>>>>> don't mix it with stripes-guicer ;-)
>>>>>> Regards,
>>>>>> Richard
>>>>>>
>>>>>> On Sun, May 24, 2009 at 9:00 AM, Michael Day <[email protected]
>>>>>>> wrote:
>>>>>>> I'm trying to instantiate my ActionBeans through guice so that I
>>>>>>> can
>>>>>>> put @Transactional annotations on my event handler methods. So
>>>>>>> far
>>>>>>> it
>>>>>>> seems to be my holy grail for transaction management in a web
>>>>>>> environment, but it is proving difficult to attain. Has anyone
>>>>>>> successfully done this?
>>>>>>>
>>>>>>> I've identified two problems so far beyond those already
>>>>>>> identified
>>>>>>> by
>>>>>>> others on the mailing list (which were apparently solved by
>>>>>>> using an
>>>>>>> ActionResolver similar to the one I have included below).
>>>>>>>
>>>>>>> 1.) @Before/@After annotations are ignored, presumably because
>>>>>>> the
>>>>>>> BeforeAfterMethodInterceptor is not examining annotations on the
>>>>>>> proxied ActionBean's superclass(es).
>>>>>>>
>>>>>>> 2.) Numeric indexed properties (item[0], item[1], etc) are not
>>>>>>> being
>>>>>>> set on form submission.
>>>>>>>
>>>>>>> Other annotations may not be working either. I have tested
>>>>>>> @UrlBinding and @ValidationMethod, so I can confirm that they
>>>>>>> appear
>>>>>>> to be working.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Michael Day
>>>>>>>
>>>>>>> -------------
>>>>>>>
>>>>>>> public class GuiceActionResolver extends
>>>>>>> NameBasedActionResolver {
>>>>>>> private Injector injector;
>>>>>>> private Set<Class<?>> addedProxies = new HashSet<Class<?>>();
>>>>>>>
>>>>>>> public void init(Configuration configuration) throws
>>>>>>> Exception {
>>>>>>> injector = GuiceInjectorHolder.getInjector();
>>>>>>> super.init(configuration);
>>>>>>> }
>>>>>>>
>>>>>>> @Override
>>>>>>> protected ActionBean makeNewActionBean(Class<? extends
>>>>>>> ActionBean> type, ActionBeanContext context)
>>>>>>> throws Exception {
>>>>>>>
>>>>>>> ActionBean proxiedActionBean =
>>>>>>> injector.getInstance(type);
>>>>>>>
>>>>>>> if (!
>>>>>>> addedProxies.contains(proxiedActionBean.getClass())) {
>>>>>>> super.addActionBean(proxiedActionBean.getClass());
>>>>>>> addedProxies.add(proxiedActionBean.getClass());
>>>>>>> }
>>>>>>>
>>>>>>> return proxiedActionBean;
>>>>>>> }
>>>>>>> }
>>>>>>>
>>>>>>>
>>>>>>> ------------------------------------------------------------------------------
>>>>>>> Register Now for Creativity and Technology (CaT), June 3rd, NYC.
>>>>>>> CaT
>>>>>>> is a gathering of tech-side developers & brand creativity
>>>>>>> professionals. Meet
>>>>>>> the minds behind Google Creative Lab, Visual Complexity,
>>>>>>> Processing, &
>>>>>>> iPhoneDevCamp asthey present alongside digital heavyweights like
>>>>>>> Barbarian
>>>>>>> Group, R/GA, & Big Spaceship. http://www.creativitycat.com
>>>>>>> _______________________________________________
>>>>>>> Stripes-users mailing list
>>>>>>> [email protected]
>>>>>>> https://lists.sourceforge.net/lists/listinfo/stripes-users
>>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------------------------
>>>>>> Register Now for Creativity and Technology (CaT), June 3rd, NYC.
>>>>>> CaT
>>>>>> is a gathering of tech-side developers & brand creativity
>>>>>> professionals. Meet
>>>>>> the minds behind Google Creative Lab, Visual Complexity,
>>>>>> Processing, &
>>>>>> iPhoneDevCamp asthey present alongside digital heavyweights like
>>>>>> Barbarian
>>>>>> Group, R/GA, & Big Spaceship. http://www.creativitycat.com
>>>>>> _______________________________________________
>>>>>> Stripes-users mailing list
>>>>>> [email protected]
>>>>>> https://lists.sourceforge.net/lists/listinfo/stripes-users
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>> Register Now for Creativity and Technology (CaT), June 3rd, NYC.
>>>>> CaT
>>>>> is a gathering of tech-side developers & brand creativity
>>>>> professionals. Meet
>>>>> the minds behind Google Creative Lab, Visual Complexity,
>>>>> Processing, &
>>>>> iPhoneDevCamp asthey present alongside digital heavyweights like
>>>>> Barbarian
>>>>> Group, R/GA, & Big Spaceship. http://www.creativitycat.com
>>>>> _______________________________________________
>>>>> Stripes-users mailing list
>>>>> [email protected]
>>>>> https://lists.sourceforge.net/lists/listinfo/stripes-users
>>>>>
>>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Register Now for Creativity and Technology (CaT), June 3rd, NYC.
>>>> CaT
>>>> is a gathering of tech-side developers & brand creativity
>>>> professionals. Meet
>>>> the minds behind Google Creative Lab, Visual Complexity,
>>>> Processing, &
>>>> iPhoneDevCamp asthey present alongside digital heavyweights like
>>>> Barbarian
>>>> Group, R/GA, & Big Spaceship. http://www.creativitycat.com
>>>> _______________________________________________
>>>> Stripes-users mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/stripes-users
>>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
>>> is a gathering of tech-side developers & brand creativity
>>> professionals. Meet
>>> the minds behind Google Creative Lab, Visual Complexity,
>>> Processing, &
>>> iPhoneDevCamp asthey present alongside digital heavyweights like
>>> Barbarian
>>> Group, R/GA, & Big Spaceship. http://www.creativitycat.com
>>> _______________________________________________
>>> Stripes-users mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/stripes-users
>>>
>>>
>>
>>
>> ------------------------------------------------------------------------------
>> Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
>> is a gathering of tech-side developers & brand creativity
>> professionals. Meet
>> the minds behind Google Creative Lab, Visual Complexity,
>> Processing, &
>> iPhoneDevCamp asthey present alongside digital heavyweights like
>> Barbarian
>> Group, R/GA, & Big Spaceship. http://www.creativitycat.com
>> _______________________________________________
>> Stripes-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/stripes-users
>>
>
> ------------------------------------------------------------------------------
> Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
> is a gathering of tech-side developers & brand creativity
> professionals. Meet
> the minds behind Google Creative Lab, Visual Complexity, Processing, &
> iPhoneDevCamp asthey present alongside digital heavyweights like
> Barbarian
> Group, R/GA, & Big Spaceship. http://www.creativitycat.com
> _______________________________________________
> Stripes-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/stripes-users
>
>
------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, &
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com
_______________________________________________
Stripes-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-users