You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Igor Drobiazko <ig...@gmail.com> on 2009/07/27 22:42:38 UTC

Re: Audit logging - how to acces SSO in Hibernate

This is a Hibernate question, not Tapestry. Have a look into the event
passed to your listener.
There is a method called getEntity().

On Mon, Jul 27, 2009 at 10:34 PM, Max Weißböck (info)
<ma...@weissboeck.info>wrote:

> I'm using Hibernate Listeners PreUpdateEventListener and
> PreInsertEventListener to do audit logging in the DB.
>
> Now my problem is, how can I get access in the EventListenr class to the
> SSO where the user is stored? As Hibernate loads
> the classes as defined in the config file (see below), I can not bind them
> using AppModule and @Inject something - or at least I do not know how.
>
> I searched the list but found no solution (or did not understand it ;-)
>
> Thx, Max
>
> --- definition in hibernate.cfg.xml ---
>
> <!-- Audit Listener -->
> <listener type="pre-insert"
> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
> <listener type="pre-update"
> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
>
>
>
>


-- 
Best regards,

Igor Drobiazko

Re: Audit logging - how to acces SSO in Hibernate

Posted by Massimo Lusetti <ml...@gmail.com>.
On Wed, Jul 29, 2009 at 9:51 AM, "Max Weißböck
(info)"<ma...@weissboeck.info> wrote:

> Hi Juan, thanks very much!
>
> I'm using Chenillekit Acess too, so  just tried it but I'm having a little
> problem.
> Must be something obvious I can't see ....
>
> I put all your classes in the services directory. The only thing I changed
> is  RincoSessionUser  to my own WebUser class.

Which version of CK and T5 are you using?

Cheers
-- 
Massimo
http://meridio.blogspot.com

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


Re: Audit logging - how to acces SSO in Hibernate

Posted by "Max Weißböck (info)" <ma...@weissboeck.info>.
Thanks very much, works perfect!

I owe you some beers, so if you come to Vienna sometimes....

Max


Am 29.07.2009 um 10:33 schrieb Juan E. Maya:

> U have to create a binding for the request filter.
> Just add in the bind method of ur module something like:
>
> binder.bind(PageRenderRequestFilter.class,
> SecurityContextPageRenderRequestFilter
> .class).withId("securityContextPageRenderRequestFilter");
>
> On Wed, Jul 29, 2009 at 9:51 AM, "Max Weißböck
> (info)"<ma...@weissboeck.info> wrote:
>> Hi Juan, thanks very much!
>>
>> I'm using Chenillekit Acess too, so  just tried it but I'm having a  
>> little
>> problem.
>> Must be something obvious I can't see ....
>>
>> I put all your classes in the services directory. The only thing I  
>> changed
>> is  RincoSessionUser  to my own WebUser class.
>>
>> On first access to Appliction I'm getting the following error:
>>
>> [ERROR] ioc.Registry Service id  
>> 'securityContextPageRenderRequestFilter' isa
>> not defined by any module.  Defined services: AccessValidator,
>> ActionRenderResponseGenerator, AdminService, ........
>> [ERROR] ioc.Registry Operations trace:
>> [ERROR] ioc.Registry [ 1] Realizing service PageRenderRequestHandler
>> [ERROR] ioc.Registry [ 2] Invoking
>> org 
>> .apache 
>> .tapestry5 
>> .services.TapestryModule.buildPageRenderRequestHandler(List,
>> Logger, PageRenderRequestHandlerImpl) (at TapestryModule.java:1415)
>> [ERROR] ioc.Registry [ 3] Determining injection value for parameter  
>> #1
>> (java.util.List)
>> [ERROR] ioc.Registry [ 4] Collecting ordered configuration for  
>> service
>> PageRenderRequestHandler
>> [ERROR] ioc.Registry [ 5] Invoking method
>> net 
>> .weissboeck 
>> .gimmo 
>> .services 
>> .AppModule.contributePageRenderRequestHandler(OrderedConfiguration,
>> PageRenderRequestFilter) (at AppModule.java:227).
>> [ERROR] ioc.Registry [ 6] Determining injection value for parameter  
>> #2
>> (org.apache.tapestry5.services.PageRenderRequestFilter)
>> [ERROR] TapestryModule.PageRenderRequestHandler Construction of  
>> service
>> PageRenderRequestHandler failed: Error invoking service builder  
>> method
>> org 
>> .apache 
>> .tapestry5 
>> .services.TapestryModule.buildPageRenderRequestHandler(List,
>> Logger, PageRenderRequestHandlerImpl) (at TapestryModule.java:1415)  
>> (for
>> service 'PageRenderRequestHandler'): Error invoking service  
>> contribution
>> method
>> net 
>> .weissboeck 
>> .gimmo 
>> .services 
>> .AppModule.contributePageRenderRequestHandler(OrderedConfiguration,
>> PageRenderRequestFilter): Service id
>> 'securityContextPageRenderRequestFilter' is not defined by any  
>> module.
>>  Defined services: AccessValidator, ActionRenderResponseGenerator,
>> AdminService, .......
>> java.lang.RuntimeException: Error invoking service builder method
>> org 
>> .apache 
>> .tapestry5 
>> .services.TapestryModule.buildPageRenderRequestHandler(List,
>> Logger, PageRenderRequestHandlerImpl) (at TapestryModule.java:1415)  
>> (for
>> service 'PageRenderRequestHandler'): Error invoking service  
>> contribution
>> method
>> net 
>> .weissboeck 
>> .gimmo 
>> .services 
>> .AppModule.contributePageRenderRequestHandler(OrderedConfiguration,
>> PageRenderRequestFilter): Service id
>> 'securityContextPageRenderRequestFilter' is not defined by any  
>> module.
>>  Defined services: AccessValidator, ActionRenderResponseGenerator,
>> AdminService, ......
>>        at
>> org 
>> .apache 
>> .tapestry5 
>> .ioc 
>> .internal 
>> .ServiceBuilderMethodInvoker 
>> .createObject(ServiceBuilderMethodInvoker.java:76)
>>        at
>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator 
>> $1.invoke(OperationTrackingObjectCreator.java:45)
>>        at
>> org 
>> .apache 
>> .tapestry5 
>> .ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java: 
>> 68)
>>        at
>> org 
>> .apache 
>> .tapestry5 
>> .ioc 
>> .internal 
>> .PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
>>        at
>> org 
>> .apache 
>> .tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
>>        at
>> org 
>> .apache 
>> .tapestry5 
>> .ioc 
>> .internal 
>> .OperationTrackingObjectCreator 
>> .createObject(OperationTrackingObjectCreator.java:49)
>>        at
>> org 
>> .apache 
>> .tapestry5 
>> .ioc 
>> .internal 
>> .SingletonServiceLifecycle 
>> .createService(SingletonServiceLifecycle.java:29)
>>        at
>> org 
>> .apache 
>> .tapestry5 
>> .ioc 
>> .internal 
>> .LifecycleWrappedServiceCreator 
>> .createObject(LifecycleWrappedServiceCreator.java:46)
>>
>>
>>
>>
>> Am 28.07.2009 um 01:06 schrieb Juan E. Maya:
>>
>>> What i am doing is to contribute a PageRenderRequestHandler like  
>>> this:
>>>
>>>        public static void
>>>
>>> contributePageRenderRequestHandler 
>>> (OrderedConfiguration<PageRenderRequestFilter>
>>> configuration,
>>>                        final @Local
>>> @InjectService("securityContextPageRenderRequestFilter")
>>> PageRenderRequestFilter securityContextPageRenderRequestFilter) {
>>>                configuration.add("securityContext",
>>> securityContextPageRenderRequestFilter, "after:*");
>>>        }
>>>
>>> I am using Chenillekit's access component:
>>> (http://www.chenillekit.org/chenillekit-access/index.html) so in the
>>> filter i get the WebSessionUser using the ApplicationStateManager.
>>> Here u should get the object from the session. Just be sure that the
>>> filter is executed after the WebSessionUser is put into the session.
>>> the filter look like this:
>>>
>>> public class SecurityContextPageRenderRequestFilter implements
>>> PageRenderRequestFilter {
>>>
>>>        private final ApplicationStateManager _manager;
>>>        private final Logger _logger;
>>>
>>>        /**
>>>         * @param manager
>>>         * @author jmayaalv
>>>         */
>>>        public
>>> SecurityContextPageRenderRequestFilter(ApplicationStateManager
>>> manager, Logger logger) {
>>>                super();
>>>                _manager = manager;
>>>                _logger = logger;
>>>        }
>>>
>>>        public void handle(PageRenderRequestParameters parameters,
>>> PageRenderRequestHandler handler) throws IOException {
>>>                RincoSessionUser webSessionUser = (RincoSessionUser)
>>> _manager.getIfExists(WebSessionUser.class);
>>>                if (webSessionUser != null) {
>>>                        SecurityContext securityContext = new
>>> SecurityContext(webSessionUser.getUserId());
>>>                        SecurityContextHolder.set(securityContext);
>>>                        _logger.debug("SecurityContext added to the  
>>> thread
>>> {} ", new
>>> Object[] { securityContext });
>>>                }
>>>                handler.handle(parameters);
>>>        }
>>> }
>>>
>>> SecurityContextHolder is the class that interacts with threadlocal:
>>>
>>> public class SecurityContextHolder {
>>>
>>>        private static ThreadLocal<SecurityContext> tLocal = new
>>> ThreadLocal<SecurityContext>();
>>>
>>>        public static void set(SecurityContext securityContext) {
>>>                tLocal.set(securityContext);
>>>        }
>>>
>>>        public static SecurityContext get() {
>>>                return tLocal.get();
>>>        }
>>>
>>>        public static void remove() {
>>>                tLocal.remove();
>>>        }
>>>
>>> }
>>>
>>> U can get the SecurityContext during the thread execution with:
>>> SecurityContextHolder.get()
>>>
>>> Let me know if u need something else
>>>
>>>
>>> On Tue, Jul 28, 2009 at 12:25 AM, "Max Weißböck
>>> (info)"<ma...@weissboeck.info> wrote:
>>>>
>>>> Ok, I think I get the idea...
>>>>
>>>> But where and when do you set the ThreadLocal? It must be set on  
>>>> every
>>>> request (each request is another thread...)
>>>> Do you have a common base class where you handle this? Any other  
>>>> way you
>>>> do
>>>> it?
>>>>
>>>> Max
>>>>
>>>>
>>>> Am 28.07.2009 um 00:08 schrieb Juan E. Maya:
>>>>
>>>>> Hey Max, I had a similar problem and at the end create an object  
>>>>> in
>>>>> the ThreadLocal that contains a SecurityContext with the user
>>>>> information (very lightweight object). The idea was taken from
>>>>> Spring-Security. This way u have access to the user in the  
>>>>> execution
>>>>> thread. It was kind of weird for me to be accessing the  
>>>>> HttpSession in
>>>>> all the layers of the application.
>>>>>
>>>>>
>>>>> On Mon, Jul 27, 2009 at 11:18 PM, "Max Weißböck
>>>>> (info)"<ma...@weissboeck.info> wrote:
>>>>>>
>>>>>> Sorry, my question seems not to be clear.
>>>>>>
>>>>>> It is not a Hibernate question, I now how to acces and set the
>>>>>> attributes
>>>>>> using the event.
>>>>>> I already set the creation and modification date in each entity.
>>>>>>
>>>>>> But what I need too, is who (which user) did the creation/ 
>>>>>> modification
>>>>>> of
>>>>>> an
>>>>>> entity.
>>>>>> This information (the user) is in an SSO (WebUser in my case)  
>>>>>> but I
>>>>>> could
>>>>>> not figure out,
>>>>>> how I can get access to this SSO from the Hibernate Listener  
>>>>>> Class.
>>>>>>
>>>>>> thx, Max
>>>>>>
>>>>>> Am 27.07.2009 um 22:42 schrieb Igor Drobiazko:
>>>>>>
>>>>>>> This is a Hibernate question, not Tapestry. Have a look into  
>>>>>>> the event
>>>>>>> passed to your listener.
>>>>>>> There is a method called getEntity().
>>>>>>>
>>>>>>> On Mon, Jul 27, 2009 at 10:34 PM, Max Weißböck (info)
>>>>>>> <ma...@weissboeck.info>wrote:
>>>>>>>
>>>>>>>> I'm using Hibernate Listeners PreUpdateEventListener and
>>>>>>>> PreInsertEventListener to do audit logging in the DB.
>>>>>>>>
>>>>>>>> Now my problem is, how can I get access in the EventListenr  
>>>>>>>> class to
>>>>>>>> the
>>>>>>>> SSO where the user is stored? As Hibernate loads
>>>>>>>> the classes as defined in the config file (see below), I can  
>>>>>>>> not bind
>>>>>>>> them
>>>>>>>> using AppModule and @Inject something - or at least I do not  
>>>>>>>> know
>>>>>>>> how.
>>>>>>>>
>>>>>>>> I searched the list but found no solution (or did not  
>>>>>>>> understand it
>>>>>>>> ;-)
>>>>>>>>
>>>>>>>> Thx, Max
>>>>>>>>
>>>>>>>> --- definition in hibernate.cfg.xml ---
>>>>>>>>
>>>>>>>> <!-- Audit Listener -->
>>>>>>>> <listener type="pre-insert"
>>>>>>>> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
>>>>>>>> <listener type="pre-update"
>>>>>>>> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Best regards,
>>>>>>>
>>>>>>> Igor Drobiazko
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>>>
>>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>


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


Re: Audit logging - how to acces SSO in Hibernate

Posted by "Juan E. Maya" <ma...@gmail.com>.
U have to create a binding for the request filter.
Just add in the bind method of ur module something like:

binder.bind(PageRenderRequestFilter.class,
SecurityContextPageRenderRequestFilter.class).withId("securityContextPageRenderRequestFilter");

On Wed, Jul 29, 2009 at 9:51 AM, "Max Weißböck
(info)"<ma...@weissboeck.info> wrote:
> Hi Juan, thanks very much!
>
> I'm using Chenillekit Acess too, so  just tried it but I'm having a little
> problem.
> Must be something obvious I can't see ....
>
> I put all your classes in the services directory. The only thing I changed
> is  RincoSessionUser  to my own WebUser class.
>
> On first access to Appliction I'm getting the following error:
>
> [ERROR] ioc.Registry Service id 'securityContextPageRenderRequestFilter' isa
> not defined by any module.  Defined services: AccessValidator,
> ActionRenderResponseGenerator, AdminService, ........
> [ERROR] ioc.Registry Operations trace:
> [ERROR] ioc.Registry [ 1] Realizing service PageRenderRequestHandler
> [ERROR] ioc.Registry [ 2] Invoking
> org.apache.tapestry5.services.TapestryModule.buildPageRenderRequestHandler(List,
> Logger, PageRenderRequestHandlerImpl) (at TapestryModule.java:1415)
> [ERROR] ioc.Registry [ 3] Determining injection value for parameter #1
> (java.util.List)
> [ERROR] ioc.Registry [ 4] Collecting ordered configuration for service
> PageRenderRequestHandler
> [ERROR] ioc.Registry [ 5] Invoking method
> net.weissboeck.gimmo.services.AppModule.contributePageRenderRequestHandler(OrderedConfiguration,
> PageRenderRequestFilter) (at AppModule.java:227).
> [ERROR] ioc.Registry [ 6] Determining injection value for parameter #2
> (org.apache.tapestry5.services.PageRenderRequestFilter)
> [ERROR] TapestryModule.PageRenderRequestHandler Construction of service
> PageRenderRequestHandler failed: Error invoking service builder method
> org.apache.tapestry5.services.TapestryModule.buildPageRenderRequestHandler(List,
> Logger, PageRenderRequestHandlerImpl) (at TapestryModule.java:1415) (for
> service 'PageRenderRequestHandler'): Error invoking service contribution
> method
> net.weissboeck.gimmo.services.AppModule.contributePageRenderRequestHandler(OrderedConfiguration,
> PageRenderRequestFilter): Service id
> 'securityContextPageRenderRequestFilter' is not defined by any module.
>  Defined services: AccessValidator, ActionRenderResponseGenerator,
> AdminService, .......
> java.lang.RuntimeException: Error invoking service builder method
> org.apache.tapestry5.services.TapestryModule.buildPageRenderRequestHandler(List,
> Logger, PageRenderRequestHandlerImpl) (at TapestryModule.java:1415) (for
> service 'PageRenderRequestHandler'): Error invoking service contribution
> method
> net.weissboeck.gimmo.services.AppModule.contributePageRenderRequestHandler(OrderedConfiguration,
> PageRenderRequestFilter): Service id
> 'securityContextPageRenderRequestFilter' is not defined by any module.
>  Defined services: AccessValidator, ActionRenderResponseGenerator,
> AdminService, ......
>        at
> org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker.createObject(ServiceBuilderMethodInvoker.java:76)
>        at
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
>        at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
>        at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
>        at
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
>        at
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
>        at
> org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29)
>        at
> org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46)
>
>
>
>
> Am 28.07.2009 um 01:06 schrieb Juan E. Maya:
>
>> What i am doing is to contribute a PageRenderRequestHandler like this:
>>
>>        public static void
>>
>> contributePageRenderRequestHandler(OrderedConfiguration<PageRenderRequestFilter>
>> configuration,
>>                        final @Local
>> @InjectService("securityContextPageRenderRequestFilter")
>> PageRenderRequestFilter securityContextPageRenderRequestFilter) {
>>                configuration.add("securityContext",
>> securityContextPageRenderRequestFilter, "after:*");
>>        }
>>
>> I am using Chenillekit's access component:
>> (http://www.chenillekit.org/chenillekit-access/index.html) so in the
>> filter i get the WebSessionUser using the ApplicationStateManager.
>> Here u should get the object from the session. Just be sure that the
>> filter is executed after the WebSessionUser is put into the session.
>> the filter look like this:
>>
>> public class SecurityContextPageRenderRequestFilter implements
>> PageRenderRequestFilter {
>>
>>        private final ApplicationStateManager _manager;
>>        private final Logger _logger;
>>
>>        /**
>>         * @param manager
>>         * @author jmayaalv
>>         */
>>        public
>> SecurityContextPageRenderRequestFilter(ApplicationStateManager
>> manager, Logger logger) {
>>                super();
>>                _manager = manager;
>>                _logger = logger;
>>        }
>>
>>        public void handle(PageRenderRequestParameters parameters,
>> PageRenderRequestHandler handler) throws IOException {
>>                RincoSessionUser webSessionUser = (RincoSessionUser)
>> _manager.getIfExists(WebSessionUser.class);
>>                if (webSessionUser != null) {
>>                        SecurityContext securityContext = new
>> SecurityContext(webSessionUser.getUserId());
>>                        SecurityContextHolder.set(securityContext);
>>                        _logger.debug("SecurityContext added to the thread
>> {} ", new
>> Object[] { securityContext });
>>                }
>>                handler.handle(parameters);
>>        }
>> }
>>
>> SecurityContextHolder is the class that interacts with threadlocal:
>>
>> public class SecurityContextHolder {
>>
>>        private static ThreadLocal<SecurityContext> tLocal = new
>> ThreadLocal<SecurityContext>();
>>
>>        public static void set(SecurityContext securityContext) {
>>                tLocal.set(securityContext);
>>        }
>>
>>        public static SecurityContext get() {
>>                return tLocal.get();
>>        }
>>
>>        public static void remove() {
>>                tLocal.remove();
>>        }
>>
>> }
>>
>> U can get the SecurityContext during the thread execution with:
>> SecurityContextHolder.get()
>>
>> Let me know if u need something else
>>
>>
>> On Tue, Jul 28, 2009 at 12:25 AM, "Max Weißböck
>> (info)"<ma...@weissboeck.info> wrote:
>>>
>>> Ok, I think I get the idea...
>>>
>>> But where and when do you set the ThreadLocal? It must be set on every
>>> request (each request is another thread...)
>>> Do you have a common base class where you handle this? Any other way you
>>> do
>>> it?
>>>
>>> Max
>>>
>>>
>>> Am 28.07.2009 um 00:08 schrieb Juan E. Maya:
>>>
>>>> Hey Max, I had a similar problem and at the end create an object in
>>>> the ThreadLocal that contains a SecurityContext with the user
>>>> information (very lightweight object). The idea was taken from
>>>> Spring-Security. This way u have access to the user in the execution
>>>> thread. It was kind of weird for me to be accessing the HttpSession in
>>>> all the layers of the application.
>>>>
>>>>
>>>> On Mon, Jul 27, 2009 at 11:18 PM, "Max Weißböck
>>>> (info)"<ma...@weissboeck.info> wrote:
>>>>>
>>>>> Sorry, my question seems not to be clear.
>>>>>
>>>>> It is not a Hibernate question, I now how to acces and set the
>>>>> attributes
>>>>> using the event.
>>>>> I already set the creation and modification date in each entity.
>>>>>
>>>>> But what I need too, is who (which user) did the creation/modification
>>>>> of
>>>>> an
>>>>> entity.
>>>>> This information (the user) is in an SSO (WebUser in my case) but I
>>>>> could
>>>>> not figure out,
>>>>> how I can get access to this SSO from the Hibernate Listener Class.
>>>>>
>>>>> thx, Max
>>>>>
>>>>> Am 27.07.2009 um 22:42 schrieb Igor Drobiazko:
>>>>>
>>>>>> This is a Hibernate question, not Tapestry. Have a look into the event
>>>>>> passed to your listener.
>>>>>> There is a method called getEntity().
>>>>>>
>>>>>> On Mon, Jul 27, 2009 at 10:34 PM, Max Weißböck (info)
>>>>>> <ma...@weissboeck.info>wrote:
>>>>>>
>>>>>>> I'm using Hibernate Listeners PreUpdateEventListener and
>>>>>>> PreInsertEventListener to do audit logging in the DB.
>>>>>>>
>>>>>>> Now my problem is, how can I get access in the EventListenr class to
>>>>>>> the
>>>>>>> SSO where the user is stored? As Hibernate loads
>>>>>>> the classes as defined in the config file (see below), I can not bind
>>>>>>> them
>>>>>>> using AppModule and @Inject something - or at least I do not know
>>>>>>> how.
>>>>>>>
>>>>>>> I searched the list but found no solution (or did not understand it
>>>>>>> ;-)
>>>>>>>
>>>>>>> Thx, Max
>>>>>>>
>>>>>>> --- definition in hibernate.cfg.xml ---
>>>>>>>
>>>>>>> <!-- Audit Listener -->
>>>>>>> <listener type="pre-insert"
>>>>>>> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
>>>>>>> <listener type="pre-update"
>>>>>>> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Best regards,
>>>>>>
>>>>>> Igor Drobiazko
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>>
>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>
>

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


Re: Audit logging - how to acces SSO in Hibernate

Posted by "Max Weißböck (info)" <ma...@weissboeck.info>.
Hi Juan, thanks very much!

I'm using Chenillekit Acess too, so  just tried it but I'm having a  
little problem.
Must be something obvious I can't see ....

I put all your classes in the services directory. The only thing I  
changed is  RincoSessionUser  to my own WebUser class.

On first access to Appliction I'm getting the following error:

[ERROR] ioc.Registry Service id  
'securityContextPageRenderRequestFilter' is not defined by any  
module.  Defined services: AccessValidator,  
ActionRenderResponseGenerator, AdminService, ........
[ERROR] ioc.Registry Operations trace:
[ERROR] ioc.Registry [ 1] Realizing service PageRenderRequestHandler
[ERROR] ioc.Registry [ 2] Invoking  
org 
.apache 
.tapestry5.services.TapestryModule.buildPageRenderRequestHandler(List,  
Logger, PageRenderRequestHandlerImpl) (at TapestryModule.java:1415)
[ERROR] ioc.Registry [ 3] Determining injection value for parameter #1  
(java.util.List)
[ERROR] ioc.Registry [ 4] Collecting ordered configuration for service  
PageRenderRequestHandler
[ERROR] ioc.Registry [ 5] Invoking method  
net 
.weissboeck 
.gimmo 
.services 
.AppModule.contributePageRenderRequestHandler(OrderedConfiguration,  
PageRenderRequestFilter) (at AppModule.java:227).
[ERROR] ioc.Registry [ 6] Determining injection value for parameter #2  
(org.apache.tapestry5.services.PageRenderRequestFilter)
[ERROR] TapestryModule.PageRenderRequestHandler Construction of  
service PageRenderRequestHandler failed: Error invoking service  
builder method  
org 
.apache 
.tapestry5.services.TapestryModule.buildPageRenderRequestHandler(List,  
Logger, PageRenderRequestHandlerImpl) (at TapestryModule.java:1415)  
(for service 'PageRenderRequestHandler'): Error invoking service  
contribution method  
net 
.weissboeck 
.gimmo 
.services 
.AppModule.contributePageRenderRequestHandler(OrderedConfiguration,  
PageRenderRequestFilter): Service id  
'securityContextPageRenderRequestFilter' is not defined by any  
module.  Defined services: AccessValidator,  
ActionRenderResponseGenerator, AdminService, .......
java.lang.RuntimeException: Error invoking service builder method  
org 
.apache 
.tapestry5.services.TapestryModule.buildPageRenderRequestHandler(List,  
Logger, PageRenderRequestHandlerImpl) (at TapestryModule.java:1415)  
(for service 'PageRenderRequestHandler'): Error invoking service  
contribution method  
net 
.weissboeck 
.gimmo 
.services 
.AppModule.contributePageRenderRequestHandler(OrderedConfiguration,  
PageRenderRequestFilter): Service id  
'securityContextPageRenderRequestFilter' is not defined by any  
module.  Defined services: AccessValidator,  
ActionRenderResponseGenerator, AdminService, ......
	at  
org 
.apache 
.tapestry5 
.ioc 
.internal 
.ServiceBuilderMethodInvoker 
.createObject(ServiceBuilderMethodInvoker.java:76)
	at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator 
$1.invoke(OperationTrackingObjectCreator.java:45)
	at  
org 
.apache 
.tapestry5 
.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
	at  
org 
.apache 
.tapestry5 
.ioc 
.internal 
.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
	at  
org 
.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java: 
941)
	at  
org 
.apache 
.tapestry5 
.ioc 
.internal 
.OperationTrackingObjectCreator 
.createObject(OperationTrackingObjectCreator.java:49)
	at  
org 
.apache 
.tapestry5 
.ioc 
.internal 
.SingletonServiceLifecycle 
.createService(SingletonServiceLifecycle.java:29)
	at  
org 
.apache 
.tapestry5 
.ioc 
.internal 
.LifecycleWrappedServiceCreator 
.createObject(LifecycleWrappedServiceCreator.java:46)




Am 28.07.2009 um 01:06 schrieb Juan E. Maya:

> What i am doing is to contribute a PageRenderRequestHandler like this:
>
> 	public static void
> contributePageRenderRequestHandler 
> (OrderedConfiguration<PageRenderRequestFilter>
> configuration,
> 			final @Local
> @InjectService("securityContextPageRenderRequestFilter")
> PageRenderRequestFilter securityContextPageRenderRequestFilter) {
> 		configuration.add("securityContext",
> securityContextPageRenderRequestFilter, "after:*");
> 	}
>
> I am using Chenillekit's access component:
> (http://www.chenillekit.org/chenillekit-access/index.html) so in the
> filter i get the WebSessionUser using the ApplicationStateManager.
> Here u should get the object from the session. Just be sure that the
> filter is executed after the WebSessionUser is put into the session.
> the filter look like this:
>
> public class SecurityContextPageRenderRequestFilter implements
> PageRenderRequestFilter {
>
> 	private final ApplicationStateManager _manager;
> 	private final Logger _logger;
>
> 	/**
> 	 * @param manager
> 	 * @author jmayaalv
> 	 */
> 	public SecurityContextPageRenderRequestFilter(ApplicationStateManager
> manager, Logger logger) {
> 		super();
> 		_manager = manager;
> 		_logger = logger;
> 	}
>
> 	public void handle(PageRenderRequestParameters parameters,
> PageRenderRequestHandler handler) throws IOException {
> 		RincoSessionUser webSessionUser = (RincoSessionUser)
> _manager.getIfExists(WebSessionUser.class);
> 		if (webSessionUser != null) {
> 			SecurityContext securityContext = new
> SecurityContext(webSessionUser.getUserId());
> 			SecurityContextHolder.set(securityContext);
> 			_logger.debug("SecurityContext added to the thread {} ", new
> Object[] { securityContext });
> 		}
> 		handler.handle(parameters);
> 	}
> }
>
> SecurityContextHolder is the class that interacts with threadlocal:
>
> public class SecurityContextHolder {
>
> 	private static ThreadLocal<SecurityContext> tLocal = new
> ThreadLocal<SecurityContext>();
>
> 	public static void set(SecurityContext securityContext) {
> 		tLocal.set(securityContext);
> 	}
>
> 	public static SecurityContext get() {
> 		return tLocal.get();
> 	}
> 	
> 	public static void remove() {
> 		tLocal.remove();
> 	}
>
> }
>
> U can get the SecurityContext during the thread execution with:
> SecurityContextHolder.get()
>
> Let me know if u need something else
>
>
> On Tue, Jul 28, 2009 at 12:25 AM, "Max Weißböck
> (info)"<ma...@weissboeck.info> wrote:
>> Ok, I think I get the idea...
>>
>> But where and when do you set the ThreadLocal? It must be set on  
>> every
>> request (each request is another thread...)
>> Do you have a common base class where you handle this? Any other  
>> way you do
>> it?
>>
>> Max
>>
>>
>> Am 28.07.2009 um 00:08 schrieb Juan E. Maya:
>>
>>> Hey Max, I had a similar problem and at the end create an object in
>>> the ThreadLocal that contains a SecurityContext with the user
>>> information (very lightweight object). The idea was taken from
>>> Spring-Security. This way u have access to the user in the execution
>>> thread. It was kind of weird for me to be accessing the  
>>> HttpSession in
>>> all the layers of the application.
>>>
>>>
>>> On Mon, Jul 27, 2009 at 11:18 PM, "Max Weißböck
>>> (info)"<ma...@weissboeck.info> wrote:
>>>>
>>>> Sorry, my question seems not to be clear.
>>>>
>>>> It is not a Hibernate question, I now how to acces and set the  
>>>> attributes
>>>> using the event.
>>>> I already set the creation and modification date in each entity.
>>>>
>>>> But what I need too, is who (which user) did the creation/ 
>>>> modification of
>>>> an
>>>> entity.
>>>> This information (the user) is in an SSO (WebUser in my case) but  
>>>> I could
>>>> not figure out,
>>>> how I can get access to this SSO from the Hibernate Listener Class.
>>>>
>>>> thx, Max
>>>>
>>>> Am 27.07.2009 um 22:42 schrieb Igor Drobiazko:
>>>>
>>>>> This is a Hibernate question, not Tapestry. Have a look into the  
>>>>> event
>>>>> passed to your listener.
>>>>> There is a method called getEntity().
>>>>>
>>>>> On Mon, Jul 27, 2009 at 10:34 PM, Max Weißböck (info)
>>>>> <ma...@weissboeck.info>wrote:
>>>>>
>>>>>> I'm using Hibernate Listeners PreUpdateEventListener and
>>>>>> PreInsertEventListener to do audit logging in the DB.
>>>>>>
>>>>>> Now my problem is, how can I get access in the EventListenr  
>>>>>> class to
>>>>>> the
>>>>>> SSO where the user is stored? As Hibernate loads
>>>>>> the classes as defined in the config file (see below), I can  
>>>>>> not bind
>>>>>> them
>>>>>> using AppModule and @Inject something - or at least I do not  
>>>>>> know how.
>>>>>>
>>>>>> I searched the list but found no solution (or did not  
>>>>>> understand it ;-)
>>>>>>
>>>>>> Thx, Max
>>>>>>
>>>>>> --- definition in hibernate.cfg.xml ---
>>>>>>
>>>>>> <!-- Audit Listener -->
>>>>>> <listener type="pre-insert"
>>>>>> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
>>>>>> <listener type="pre-update"
>>>>>> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best regards,
>>>>>
>>>>> Igor Drobiazko
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>


Re: Audit logging - how to acces SSO in Hibernate

Posted by "Juan E. Maya" <ma...@gmail.com>.
What i am doing is to contribute a PageRenderRequestHandler like this:

	public static void
contributePageRenderRequestHandler(OrderedConfiguration<PageRenderRequestFilter>
configuration,
			final @Local
@InjectService("securityContextPageRenderRequestFilter")
PageRenderRequestFilter securityContextPageRenderRequestFilter) {
		configuration.add("securityContext",
securityContextPageRenderRequestFilter, "after:*");
	}

I am using Chenillekit's access component:
(http://www.chenillekit.org/chenillekit-access/index.html) so in the
filter i get the WebSessionUser using the ApplicationStateManager.
Here u should get the object from the session. Just be sure that the
filter is executed after the WebSessionUser is put into the session.
the filter look like this:

public class SecurityContextPageRenderRequestFilter implements
PageRenderRequestFilter {

	private final ApplicationStateManager _manager;
	private final Logger _logger;

	/**
	 * @param manager
	 * @author jmayaalv
	 */
	public SecurityContextPageRenderRequestFilter(ApplicationStateManager
manager, Logger logger) {
		super();
		_manager = manager;
		_logger = logger;
	}

	public void handle(PageRenderRequestParameters parameters,
PageRenderRequestHandler handler) throws IOException {
		RincoSessionUser webSessionUser = (RincoSessionUser)
_manager.getIfExists(WebSessionUser.class);
		if (webSessionUser != null) {
			SecurityContext securityContext = new
SecurityContext(webSessionUser.getUserId());
			SecurityContextHolder.set(securityContext);
			_logger.debug("SecurityContext added to the thread {} ", new
Object[] { securityContext });
		}
		handler.handle(parameters);
	}
}

SecurityContextHolder is the class that interacts with threadlocal:

public class SecurityContextHolder {

	private static ThreadLocal<SecurityContext> tLocal = new
ThreadLocal<SecurityContext>();

	public static void set(SecurityContext securityContext) {
		tLocal.set(securityContext);
	}

	public static SecurityContext get() {
		return tLocal.get();
	}
	
	public static void remove() {
		tLocal.remove();
	}

}

U can get the SecurityContext during the thread execution with:
SecurityContextHolder.get()

Let me know if u need something else


On Tue, Jul 28, 2009 at 12:25 AM, "Max Weißböck
(info)"<ma...@weissboeck.info> wrote:
> Ok, I think I get the idea...
>
> But where and when do you set the ThreadLocal? It must be set on every
> request (each request is another thread...)
> Do you have a common base class where you handle this? Any other way you do
> it?
>
> Max
>
>
> Am 28.07.2009 um 00:08 schrieb Juan E. Maya:
>
>> Hey Max, I had a similar problem and at the end create an object in
>> the ThreadLocal that contains a SecurityContext with the user
>> information (very lightweight object). The idea was taken from
>> Spring-Security. This way u have access to the user in the execution
>> thread. It was kind of weird for me to be accessing the HttpSession in
>> all the layers of the application.
>>
>>
>> On Mon, Jul 27, 2009 at 11:18 PM, "Max Weißböck
>> (info)"<ma...@weissboeck.info> wrote:
>>>
>>> Sorry, my question seems not to be clear.
>>>
>>> It is not a Hibernate question, I now how to acces and set the attributes
>>> using the event.
>>> I already set the creation and modification date in each entity.
>>>
>>> But what I need too, is who (which user) did the creation/modification of
>>> an
>>> entity.
>>> This information (the user) is in an SSO (WebUser in my case) but I could
>>> not figure out,
>>> how I can get access to this SSO from the Hibernate Listener Class.
>>>
>>> thx, Max
>>>
>>> Am 27.07.2009 um 22:42 schrieb Igor Drobiazko:
>>>
>>>> This is a Hibernate question, not Tapestry. Have a look into the event
>>>> passed to your listener.
>>>> There is a method called getEntity().
>>>>
>>>> On Mon, Jul 27, 2009 at 10:34 PM, Max Weißböck (info)
>>>> <ma...@weissboeck.info>wrote:
>>>>
>>>>> I'm using Hibernate Listeners PreUpdateEventListener and
>>>>> PreInsertEventListener to do audit logging in the DB.
>>>>>
>>>>> Now my problem is, how can I get access in the EventListenr class to
>>>>> the
>>>>> SSO where the user is stored? As Hibernate loads
>>>>> the classes as defined in the config file (see below), I can not bind
>>>>> them
>>>>> using AppModule and @Inject something - or at least I do not know how.
>>>>>
>>>>> I searched the list but found no solution (or did not understand it ;-)
>>>>>
>>>>> Thx, Max
>>>>>
>>>>> --- definition in hibernate.cfg.xml ---
>>>>>
>>>>> <!-- Audit Listener -->
>>>>> <listener type="pre-insert"
>>>>> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
>>>>> <listener type="pre-update"
>>>>> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Best regards,
>>>>
>>>> Igor Drobiazko
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

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


Re: Audit logging - how to acces SSO in Hibernate

Posted by "Max Weißböck (info)" <ma...@weissboeck.info>.
Ok, I think I get the idea...

But where and when do you set the ThreadLocal? It must be set on every  
request (each request is another thread...)
Do you have a common base class where you handle this? Any other way  
you do it?

Max


Am 28.07.2009 um 00:08 schrieb Juan E. Maya:

> Hey Max, I had a similar problem and at the end create an object in
> the ThreadLocal that contains a SecurityContext with the user
> information (very lightweight object). The idea was taken from
> Spring-Security. This way u have access to the user in the execution
> thread. It was kind of weird for me to be accessing the HttpSession in
> all the layers of the application.
>
>
> On Mon, Jul 27, 2009 at 11:18 PM, "Max Weißböck
> (info)"<ma...@weissboeck.info> wrote:
>> Sorry, my question seems not to be clear.
>>
>> It is not a Hibernate question, I now how to acces and set the  
>> attributes
>> using the event.
>> I already set the creation and modification date in each entity.
>>
>> But what I need too, is who (which user) did the creation/ 
>> modification of an
>> entity.
>> This information (the user) is in an SSO (WebUser in my case) but I  
>> could
>> not figure out,
>> how I can get access to this SSO from the Hibernate Listener Class.
>>
>> thx, Max
>>
>> Am 27.07.2009 um 22:42 schrieb Igor Drobiazko:
>>
>>> This is a Hibernate question, not Tapestry. Have a look into the  
>>> event
>>> passed to your listener.
>>> There is a method called getEntity().
>>>
>>> On Mon, Jul 27, 2009 at 10:34 PM, Max Weißböck (info)
>>> <ma...@weissboeck.info>wrote:
>>>
>>>> I'm using Hibernate Listeners PreUpdateEventListener and
>>>> PreInsertEventListener to do audit logging in the DB.
>>>>
>>>> Now my problem is, how can I get access in the EventListenr class  
>>>> to the
>>>> SSO where the user is stored? As Hibernate loads
>>>> the classes as defined in the config file (see below), I can not  
>>>> bind
>>>> them
>>>> using AppModule and @Inject something - or at least I do not know  
>>>> how.
>>>>
>>>> I searched the list but found no solution (or did not understand  
>>>> it ;-)
>>>>
>>>> Thx, Max
>>>>
>>>> --- definition in hibernate.cfg.xml ---
>>>>
>>>> <!-- Audit Listener -->
>>>> <listener type="pre-insert"
>>>> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
>>>> <listener type="pre-update"
>>>> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Best regards,
>>>
>>> Igor Drobiazko
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>


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


Re: Audit logging - how to acces SSO in Hibernate

Posted by "Juan E. Maya" <ma...@gmail.com>.
Hey Max, I had a similar problem and at the end create an object in
the ThreadLocal that contains a SecurityContext with the user
information (very lightweight object). The idea was taken from
Spring-Security. This way u have access to the user in the execution
thread. It was kind of weird for me to be accessing the HttpSession in
all the layers of the application.


On Mon, Jul 27, 2009 at 11:18 PM, "Max Weißböck
(info)"<ma...@weissboeck.info> wrote:
> Sorry, my question seems not to be clear.
>
> It is not a Hibernate question, I now how to acces and set the attributes
> using the event.
> I already set the creation and modification date in each entity.
>
> But what I need too, is who (which user) did the creation/modification of an
> entity.
> This information (the user) is in an SSO (WebUser in my case) but I could
> not figure out,
> how I can get access to this SSO from the Hibernate Listener Class.
>
> thx, Max
>
> Am 27.07.2009 um 22:42 schrieb Igor Drobiazko:
>
>> This is a Hibernate question, not Tapestry. Have a look into the event
>> passed to your listener.
>> There is a method called getEntity().
>>
>> On Mon, Jul 27, 2009 at 10:34 PM, Max Weißböck (info)
>> <ma...@weissboeck.info>wrote:
>>
>>> I'm using Hibernate Listeners PreUpdateEventListener and
>>> PreInsertEventListener to do audit logging in the DB.
>>>
>>> Now my problem is, how can I get access in the EventListenr class to the
>>> SSO where the user is stored? As Hibernate loads
>>> the classes as defined in the config file (see below), I can not bind
>>> them
>>> using AppModule and @Inject something - or at least I do not know how.
>>>
>>> I searched the list but found no solution (or did not understand it ;-)
>>>
>>> Thx, Max
>>>
>>> --- definition in hibernate.cfg.xml ---
>>>
>>> <!-- Audit Listener -->
>>> <listener type="pre-insert"
>>> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
>>> <listener type="pre-update"
>>> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
>>>
>>>
>>>
>>>
>>
>>
>> --
>> Best regards,
>>
>> Igor Drobiazko
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

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


Re: Audit logging - how to acces SSO in Hibernate

Posted by "Max Weißböck (info)" <ma...@weissboeck.info>.
Sorry, my question seems not to be clear.

It is not a Hibernate question, I now how to acces and set the  
attributes using the event.
I already set the creation and modification date in each entity.

But what I need too, is who (which user) did the creation/modification  
of an entity.
This information (the user) is in an SSO (WebUser in my case) but I  
could not figure out,
how I can get access to this SSO from the Hibernate Listener Class.

thx, Max

Am 27.07.2009 um 22:42 schrieb Igor Drobiazko:

> This is a Hibernate question, not Tapestry. Have a look into the event
> passed to your listener.
> There is a method called getEntity().
>
> On Mon, Jul 27, 2009 at 10:34 PM, Max Weißböck (info)
> <ma...@weissboeck.info>wrote:
>
>> I'm using Hibernate Listeners PreUpdateEventListener and
>> PreInsertEventListener to do audit logging in the DB.
>>
>> Now my problem is, how can I get access in the EventListenr class  
>> to the
>> SSO where the user is stored? As Hibernate loads
>> the classes as defined in the config file (see below), I can not  
>> bind them
>> using AppModule and @Inject something - or at least I do not know  
>> how.
>>
>> I searched the list but found no solution (or did not understand  
>> it ;-)
>>
>> Thx, Max
>>
>> --- definition in hibernate.cfg.xml ---
>>
>> <!-- Audit Listener -->
>> <listener type="pre-insert"
>> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
>> <listener type="pre-update"
>> class="net.weissboeck.gimmo.entities.AuditListenerImpl"/>
>>
>>
>>
>>
>
>
> -- 
> Best regards,
>
> Igor Drobiazko


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