[JBoss JIRA] Created: (GTNPORTAL-1110) Optimize recursive method in searching node
by Minh Hoang TO (JIRA)
Optimize recursive method in searching node
-------------------------------------------
Key: GTNPORTAL-1110
URL: https://jira.jboss.org/jira/browse/GTNPORTAL-1110
Project: GateIn Portal
Issue Type: Task
Reporter: Minh Hoang TO
Assignee: Minh Hoang TO
Priority: Minor
public static PageNode[] searchPageNodesByUri(PageNode node, String uri)
{
if (node.getUri().equals(uri))
return new PageNode[]{null, node};
if (node.getChildren() == null)
return null;
List<PageNode> children = node.getChildren();
for (PageNode ele : children)
{
PageNode[] returnNodes = searchPageNodesByUri(ele, uri);
if (returnNodes != null)
{
if (returnNodes[0] == null)
returnNodes[0] = node;
return returnNodes;
}
}
return null;
}
I see that this method (in PageNavigationUtils ) has been used quite oftenly, but it's not optimal in term of algorithm. Searching a node under a tree with a given path ( array of String parsed as argument, or created by splitting the node uri ) is faster.
Consider an example where we need to find the node /a/b/c/x/y/z in the navigation N. Assume that in the navigation N there is also the nodes
/a/b1/c1/...
/a/b2/c2/...
/a/b3/c3/...
.....
/a/b/c/x/y/z
The current naive uri comparing will force us to make the comparision in all nodes in branches /a/b1 , /a/b2,....
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 1 month
[JBoss JIRA] Created: (GTNPORTAL-425) NPE when select a page which was delete on Manage page
by Hang Nguyen (JIRA)
NPE when select a page which was delete on Manage page
------------------------------------------------------
Key: GTNPORTAL-425
URL: https://jira.jboss.org/jira/browse/GTNPORTAL-425
Project: GateIn Portal
Issue Type: Bug
Affects Versions: 3.0.0-Beta04
Reporter: Hang Nguyen
Steps:
At browser 1:
- Login as root
- Create new page --> OK
At browser 2:
- Login as root
- Select page created
Return to browser 1:
- Go to Manage page --> Delete page created above
Comeback to browser 2 --> select page which was deleted on menu item --> show exception
java.lang.NullPointerException
at org.exoplatform.portal.pom.config.tasks.PreferencesTask$Load.run(PreferencesTask.java:89)
at org.exoplatform.portal.pom.config.POMSession.execute(POMSession.java:373)
at org.exoplatform.portal.pom.config.ExecutorDispatcher.execute(ExecutorDispatcher.java:41)
at org.exoplatform.portal.pom.config.TaskExecutionDecorator.execute(TaskExecutionDecorator.j
ava:38)
at org.exoplatform.portal.pom.config.cache.DataCache.read(DataCache.java:115)
at org.exoplatform.portal.pom.config.cache.DataCache.execute(DataCache.java:52)
at org.exoplatform.portal.pom.config.POMSessionManager.execute(POMSessionManager.java:140)
at org.exoplatform.portal.pom.config.POMDataStorage.load(POMDataStorage.java:195)
at org.exoplatform.portal.config.DataStorageImpl.load(DataStorageImpl.java:82)
at org.exoplatform.portal.webui.application.ModelAdapter$1.getPortletContext(ModelAdapter.ja
va:90)
at org.exoplatform.portal.webui.application.UIPortlet.getPortletContext(UIPortlet.java:843)
at org.exoplatform.portal.webui.application.UIPortlet.create(UIPortlet.java:713)
at org.exoplatform.portal.webui.application.UIPortletLifecycle.processRender(UIPortletLifecy
cle.java:159)
at org.exoplatform.portal.webui.application.UIPortletLifecycle.processRender(UIPortletLifecy
cle.java:53)
at org.exoplatform.webui.core.UIComponent.processRender(UIComponent.java:135)
at org.exoplatform.webui.core.UIContainer.renderChildren(UIContainer.java:321)
at org.exoplatform.webui.core.UIContainer.renderChildren(UIContainer.java:312)
at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoe
rce.invoke(PojoMetaMethodSite.java:229)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:121)
at UIPage.run(UIPage.gtmpl:14)
at org.exoplatform.groovyscript.GroovyScript.render(GroovyScript.java:95)
at org.exoplatform.groovyscript.GroovyTemplate.render(GroovyTemplate.java:110)
at org.exoplatform.groovyscript.text.TemplateService.merge(TemplateService.java:74)
at org.exoplatform.webui.core.lifecycle.Lifecycle.renderTemplate(Lifecycle.java:123)
at org.exoplatform.webui.core.lifecycle.Lifecycle.processRender(Lifecycle.java:76)
at org.exoplatform.portal.webui.page.UIPageLifecycle.processRender(UIPageLifecycle.java:44)
at org.exoplatform.webui.core.UIComponent.processRender(UIComponent.java:135)
at org.exoplatform.portal.webui.page.UIPageBody.renderChildren(UIPageBody.java:136)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoe
rce.invoke(PojoMetaMethodSite.java:229)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:121)
at UIPageBody.run(UIPageBody.gtmpl:37)
at org.exoplatform.groovyscript.GroovyScript.render(GroovyScript.java:95)
at org.exoplatform.groovyscript.GroovyTemplate.render(GroovyTemplate.java:110)
at org.exoplatform.groovyscript.text.TemplateService.merge(TemplateService.java:74)
at org.exoplatform.webui.core.lifecycle.Lifecycle.renderTemplate(Lifecycle.java:123)
at org.exoplatform.webui.core.lifecycle.Lifecycle.processRender(Lifecycle.java:76)
at org.exoplatform.webui.core.UIComponent.processRender(UIComponent.java:135)
at org.exoplatform.portal.webui.page.UIPageBody.processRender(UIPageBody.java:150)
at org.exoplatform.webui.core.UIContainer.renderChildren(UIContainer.java:321)
at org.exoplatform.webui.core.UIContainer.renderChildren(UIContainer.java:312)
at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoe
rce.invoke(PojoMetaMethodSite.java:229)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:121)
at UIPortal.run(UIPortal.gtmpl:16)
at org.exoplatform.groovyscript.GroovyScript.render(GroovyScript.java:95)
at org.exoplatform.groovyscript.GroovyTemplate.render(GroovyTemplate.java:110)
at org.exoplatform.groovyscript.text.TemplateService.merge(TemplateService.java:74)
at org.exoplatform.webui.core.lifecycle.Lifecycle.renderTemplate(Lifecycle.java:123)
at org.exoplatform.webui.core.lifecycle.Lifecycle.processRender(Lifecycle.java:76)
at org.exoplatform.portal.webui.portal.UIPortalLifecycle.processRender(UIPortalLifecycle.jav
a:41)
at org.exoplatform.portal.webui.portal.UIPortalLifecycle.processRender(UIPortalLifecycle.jav
a:30)
at org.exoplatform.webui.core.UIComponent.processRender(UIComponent.java:135)
at org.exoplatform.webui.core.UIComponentDecorator.renderChildren(UIComponentDecorator.java:
91)
at sun.reflect.GeneratedMethodAccessor121.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoe
rce.invoke(PojoMetaMethodSite.java:229)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:121)
at UISiteBody.run(UISiteBody.gtmpl:37)
at org.exoplatform.groovyscript.GroovyScript.render(GroovyScript.java:95)
at org.exoplatform.groovyscript.GroovyTemplate.render(GroovyTemplate.java:110)
at org.exoplatform.groovyscript.text.TemplateService.merge(TemplateService.java:74)
at org.exoplatform.webui.core.lifecycle.Lifecycle.renderTemplate(Lifecycle.java:123)
at org.exoplatform.webui.core.lifecycle.Lifecycle.processRender(Lifecycle.java:76)
at org.exoplatform.webui.core.UIComponent.processRender(UIComponent.java:135)
at org.exoplatform.webui.core.UIContainer.renderChildren(UIContainer.java:321)
at org.exoplatform.webui.core.UIContainer.renderChildren(UIContainer.java:312)
at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoe
rce.invoke(PojoMetaMethodSite.java:229)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:121)
at UIContainer.run(UIContainer.gtmpl:50)
at org.exoplatform.groovyscript.GroovyScript.render(GroovyScript.java:95)
at org.exoplatform.groovyscript.GroovyTemplate.render(GroovyTemplate.java:110)
at org.exoplatform.groovyscript.text.TemplateService.merge(TemplateService.java:74)
at org.exoplatform.webui.core.lifecycle.Lifecycle.renderTemplate(Lifecycle.java:123)
at org.exoplatform.webui.core.lifecycle.Lifecycle.processRender(Lifecycle.java:76)
at org.exoplatform.webui.core.UIComponent.processRender(UIComponent.java:135)
at org.exoplatform.webui.core.UIComponentDecorator$UIComponentDecoratorLifecycle.processRend
er(UIComponentDecorator.java:103)
at org.exoplatform.webui.core.UIComponentDecorator$UIComponentDecoratorLifecycle.processRend
er(UIComponentDecorator.java:94)
at org.exoplatform.webui.core.UIComponent.processRender(UIComponent.java:135)
at org.exoplatform.webui.core.UIContainer.renderChildren(UIContainer.java:321)
at org.exoplatform.webui.core.UIContainer.renderChildren(UIContainer.java:312)
at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoe
rce.invoke(PojoMetaMethodSite.java:229)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:121)
at UIWorkingWorkspace.run(UIWorkingWorkspace.gtmpl:12)
at org.exoplatform.groovyscript.GroovyScript.render(GroovyScript.java:95)
at org.exoplatform.groovyscript.GroovyTemplate.render(GroovyTemplate.java:110)
at org.exoplatform.groovyscript.text.TemplateService.merge(TemplateService.java:74)
at org.exoplatform.webui.core.lifecycle.Lifecycle.renderTemplate(Lifecycle.java:123)
at org.exoplatform.webui.core.lifecycle.Lifecycle.processRender(Lifecycle.java:76)
at org.exoplatform.webui.core.UIComponent.processRender(UIComponent.java:135)
at org.exoplatform.webui.core.UIContainer.renderChildren(UIContainer.java:321)
at org.exoplatform.webui.core.UIContainer.renderChildren(UIContainer.java:312)
at org.exoplatform.webui.core.UIApplication.renderChildren(UIApplication.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoe
rce.invoke(PojoMetaMethodSite.java:229)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:121)
at UIPortalApplication.run(UIPortalApplication.gtmpl:127)
at org.exoplatform.groovyscript.GroovyScript.render(GroovyScript.java:95)
at org.exoplatform.groovyscript.GroovyTemplate.render(GroovyTemplate.java:110)
at org.exoplatform.groovyscript.text.TemplateService.merge(TemplateService.java:74)
at org.exoplatform.webui.core.lifecycle.Lifecycle.renderTemplate(Lifecycle.java:123)
at org.exoplatform.webui.core.lifecycle.Lifecycle.processRender(Lifecycle.java:76)
at org.exoplatform.webui.core.UIComponent.processRender(UIComponent.java:135)
at org.exoplatform.portal.webui.workspace.UIPortalApplication.processRender(UIPortalApplicat
ion.java:430)
at org.exoplatform.portal.application.PortalRequestHandler.execute(PortalRequestHandler.java
:109)
at org.exoplatform.web.WebAppController.service(WebAppController.java:143)
at org.exoplatform.portal.application.PortalController.onService(PortalController.java:127)
at org.exoplatform.container.web.AbstractHttpServlet.service(AbstractHttpServlet.java:114)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.exoplatform.frameworks.jcr.web.ThreadLocalSessionProviderInitializedFilter.doFilter(T
hreadLocalSessionProviderInitializedFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.exoplatform.web.CacheUserProfileFilter.doFilter(CacheUserProfileFilter.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.exoplatform.services.security.web.SetCurrentIdentityFilter.doFilter(SetCurrentIdentit
yFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.exoplatform.web.filter.ExtensibleFilter$ExtensibleFilterChain.doFilter(ExtensibleFilt
er.java:112)
at org.exoplatform.web.filter.ExtensibleFilter.doFilter(ExtensibleFilter.java:84)
at org.exoplatform.web.filter.GenericFilter.doFilter(GenericFilter.java:66)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.ja
va:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Dec 25, 2009 4:43:06 PM org.exoplatform.portal.application.PortalRequestHandler execute
SEVERE: Error while handling request
org.exoplatform.groovyscript.TemplateRuntimeException: Groovy template exception at DataText[pos=Pos
ition[col=7,line=129],data=uicomponent.renderChildren();] for template system:/groovy/portal/webui/w
orkspace/UIPortalApplication.gtmpl
at org.exoplatform.groovyscript.GroovyScript.buildRuntimeException(GroovyScript.java:162)
at org.exoplatform.groovyscript.GroovyScript.render(GroovyScript.java:105)
at org.exoplatform.groovyscript.GroovyTemplate.render(GroovyTemplate.java:110)
at org.exoplatform.groovyscript.text.TemplateService.merge(TemplateService.java:74)
at org.exoplatform.webui.core.lifecycle.Lifecycle.renderTemplate(Lifecycle.java:123)
at org.exoplatform.webui.core.lifecycle.Lifecycle.processRender(Lifecycle.java:76)
at org.exoplatform.webui.core.UIComponent.processRender(UIComponent.java:135)
at org.exoplatform.portal.webui.workspace.UIPortalApplication.processRender(UIPortalApplicat
ion.java:430)
at org.exoplatform.portal.application.PortalRequestHandler.execute(PortalRequestHandler.java
:109)
at org.exoplatform.web.WebAppController.service(WebAppController.java:143)
at org.exoplatform.portal.application.PortalController.onService(PortalController.java:127)
at org.exoplatform.container.web.AbstractHttpServlet.service(AbstractHttpServlet.java:114)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.exoplatform.frameworks.jcr.web.ThreadLocalSessionProviderInitializedFilter.doFilter(T
hreadLocalSessionProviderInitializedFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.exoplatform.web.CacheUserProfileFilter.doFilter(CacheUserProfileFilter.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.exoplatform.services.security.web.SetCurrentIdentityFilter.doFilter(SetCurrentIdentit
yFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.exoplatform.web.filter.ExtensibleFilter$ExtensibleFilterChain.doFilter(ExtensibleFilt
er.java:112)
at org.exoplatform.web.filter.ExtensibleFilter.doFilter(ExtensibleFilter.java:84)
at org.exoplatform.web.filter.GenericFilter.doFilter(GenericFilter.java:66)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.ja
va:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 1 month