[ 
https://issues.apache.org/jira/browse/JS2-1284?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13709939#comment-13709939
 ] 

Woonsan Ko edited comment on JS2-1284 at 7/16/13 7:54 PM:
----------------------------------------------------------

I don't know what is the cause, but there's a very suspicious code in 
EhCacheDistributedImpl.java:

- The member variable, 'refList', is supposed to keep a map keyed by EhCache 
key and valued by object, the type of which is 'EhCacheDistributedElementImpl' 
(See EhCacheDistributedImpl#put() method)

- However, the following code looks problematic:

        public void notifyElement( Ehcache cache, boolean local,Element arg1, 
int action)
        {
            // <SNIP>
                try
                {
            // <SNIP>

                                if (action < 0)
                                        refList.remove(arg1.getKey());
                                else if (action == CacheElement.ActionAdded)
                                        refList.put(arg1.getKey(), arg1);       
                   // <----- it gives Element object instead of 
EhCacheDistributedElementImpl!
                                e.notifyChange(action);
                    notifyListeners(local, action, arg1.getKey(), 
arg1.getObjectValue());
                        }
                        else
                        {
                    notifyListeners(local, action, arg1.getKey(), null);
                        }
                } catch (Exception e)
                {
                        e.printStackTrace();
                }
        }


I think the 'refList.put(arg1.getKey(), arg1);' line caused the problem, which 
should have put an EhCacheDistributedElementImpl instance instead of the raw 
ehcache Element instance.

                
      was (Author: woon_san):
    I don't know what is the cause, but there's a very suspicious code in 
EhCacheDistributedElementImpl.java:

- The member variable, 'refList', is supposed to keep a map keyed by EhCache 
key and valued by object, the type of which is 'EhCacheDistributedElementImpl' 
(See EhCacheDistributedElementImpl#put() method)

- However, the following code looks problematic:

        public void notifyElement( Ehcache cache, boolean local,Element arg1, 
int action)
        {
            // <SNIP>
                try
                {
            // <SNIP>

                                if (action < 0)
                                        refList.remove(arg1.getKey());
                                else if (action == CacheElement.ActionAdded)
                                        refList.put(arg1.getKey(), arg1);       
                   // <----- it gives Element object instead of 
EhCacheDistributedElementImpl!
                                e.notifyChange(action);
                    notifyListeners(local, action, arg1.getKey(), 
arg1.getObjectValue());
                        }
                        else
                        {
                    notifyListeners(local, action, arg1.getKey(), null);
                        }
                } catch (Exception e)
                {
                        e.printStackTrace();
                }
        }


I think the 'refList.put(arg1.getKey(), arg1);' line caused the problem, which 
should have put an EhCacheDistributedElementImpl instanced instead of the raw 
ehcache Element instance.

                  
> ClassCastException in EhCacheDistributedElementImpl
> ---------------------------------------------------
>
>                 Key: JS2-1284
>                 URL: https://issues.apache.org/jira/browse/JS2-1284
>             Project: Jetspeed 2
>          Issue Type: Bug
>            Reporter: Woonsan Ko
>
> While testing, I noticed the following error log in the console:
> --------------------------------------------------------------------------------
> java.lang.ClassCastException: net.sf.ehcache.Element cannot be cast to 
> org.apache.jetspeed.cache.impl.EhCacheDistributedElementImpl
>       at 
> org.apache.jetspeed.cache.impl.EhCacheDistributedImpl.notifyElement(EhCacheDistributedImpl.java:241)
>       at 
> org.apache.jetspeed.cache.impl.EhCacheDistributedImpl.notifyElementPut(EhCacheDistributedImpl.java:275)
>       at 
> net.sf.ehcache.event.RegisteredEventListeners.notifyElementPut(RegisteredEventListeners.java:95)
>       at net.sf.ehcache.Cache.put(Cache.java:866)
>       at net.sf.ehcache.Cache.put(Cache.java:796)
>       at 
> org.apache.jetspeed.cache.impl.EhCacheDistributedImpl.put(EhCacheDistributedImpl.java:88)
>       at 
> org.apache.jetspeed.components.portletpreferences.PortletPreferencesServiceImpl.retrieveDefaultPreferences(PortletPreferencesServiceImpl.java:682)
>       at 
> org.apache.jetspeed.components.portletpreferences.PortletPreferencesServiceImpl.getDefaultPreferences(PortletPreferencesServiceImpl.java:135)
>       at sun.reflect.GeneratedMethodAccessor122.invoke(Unknown Source)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:597)
>       at 
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
>       at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
>       at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
>       at 
> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
>       at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
>       at 
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
>       at com.sun.proxy.$Proxy5.getDefaultPreferences(Unknown Source)
>       at 
> org.apache.pluto.container.impl.PortletPreferencesImpl.<init>(PortletPreferencesImpl.java:103)
>       at 
> org.apache.pluto.container.impl.PortletRequestImpl.getPreferences(PortletRequestImpl.java:459)
>       at 
> com.onehippo.jetspeed.portlets.FileContentPortlet.doView(FileContentPortlet.java:32)
>       at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:348)
>       at javax.portlet.GenericPortlet.render(GenericPortlet.java:253)
>       at 
> org.apache.jetspeed.portlet.PortletObjectProxy.proxyRender(PortletObjectProxy.java:280)
>       at 
> org.apache.jetspeed.portlet.PortletObjectProxy.invoke(PortletObjectProxy.java:172)
>       at com.sun.proxy.$Proxy64.render(Unknown Source)
>       at 
> org.apache.jetspeed.factory.JetspeedPortletInstance.render(JetspeedPortletInstance.java:117)
>       at 
> org.apache.jetspeed.container.services.JetspeedFilterChain.doFilter(JetspeedFilterChain.java:142)
>       at 
> org.apache.jetspeed.container.services.JetspeedFilterChain.processFilter(JetspeedFilterChain.java:92)
>       at 
> org.apache.jetspeed.container.services.JetspeedFilterManager.processFilter(JetspeedFilterManager.java:112)
>       at 
> org.apache.jetspeed.container.JetspeedContainerServlet.doGet(JetspeedContainerServlet.java:290)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:605)
>       at 
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:544)
>       at 
> org.apache.jetspeed.container.invoker.ServletPortletInvoker.invoke(ServletPortletInvoker.java:165)
>       at 
> org.apache.jetspeed.container.invoker.JetspeedPortletInvokerService.render(JetspeedPortletInvokerService.java:127)
>       at 
> org.apache.pluto.container.impl.PortletContainerImpl.doRender(PortletContainerImpl.java:157)
>       at 
> org.apache.jetspeed.container.JetspeedPortletContainerWrapper.doRender(JetspeedPortletContainerWrapper.java:69)
>       at 
> org.apache.jetspeed.aggregator.impl.RenderingJobImpl.executeInternal(RenderingJobImpl.java:245)
>       at 
> org.apache.jetspeed.aggregator.impl.RenderingJobImpl.access$000(RenderingJobImpl.java:57)
>       at 
> org.apache.jetspeed.aggregator.impl.RenderingJobImpl$1.run(RenderingJobImpl.java:206)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at javax.security.auth.Subject.doAsPrivileged(Subject.java:454)
>       at 
> org.apache.jetspeed.security.JSSubject.doAsPrivileged(JSSubject.java:187)
>       at 
> org.apache.jetspeed.aggregator.impl.RenderingJobImpl.execute(RenderingJobImpl.java:200)
>       at 
> org.apache.jetspeed.util.ServletRequestCleanupService.executeNestedRenderJob(ServletRequestCleanupService.java:79)
>       at 
> org.apache.jetspeed.aggregator.impl.RenderingJobImpl.run(RenderingJobImpl.java:154)
>       at 
> org.apache.jetspeed.aggregator.impl.WorkerImpl.run(WorkerImpl.java:173)
> --------------------------------------------------------------------------------

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscr...@portals.apache.org
For additional commands, e-mail: jetspeed-dev-h...@portals.apache.org

Reply via email to