Hello All,
I have a situation where slightly under-privileged users can develop OPS projects for display in a portlet. The project page-flow.xml is loaded dynamically by the custom portlet.xpl where it is passed to a pipeline processor. Now, in order to prevent abuse, or bad mistakes, it becomes necessary to make sure that the epilogue is not "accidentally" miss-configured in their page-flow.xml files. I tried through various scenarios to re-process the page-flow.xml in order to check the epilogue. But, I kept coming up against namespace issues and having to account for countless possible cases to the point where it was becoming ugly and depressing. In the end, the solution was obvious, if it was possible to pass an override epilogue to the page-flow processor, it would make life much easier. So, I'm requesting the acceptance on the following patch which adds an optional input called "override-epilogue". [see attached] Here is a use-case example of creating (using xsl) a dynamic pipeline config containing a page-flow controller which is executed later on. Notice that the page-flow contains the "override-epilogue" input which simply contains an epilogue element, which is used instead of the one in the page-flow.xml . <xsl:stylesheet version="2.0"> <xsl:variable name="portlet-page-flow-path" select="/portlet-preferences/preference[name = 'portlet.page-flow.path']/value" as="xs:string" /> <xsl:template match="/"> <config xmlns="http://www.orbeon.com/oxf/pipeline" xmlns:oxf="http://www.orbeon.com/oxf/processors"> <processor name="oxf:page-flow"> <input name="controller"> <xsl:attribute name="href"> <xsl:value-of select="$portlet-page-flow-path" /> </xsl:attribute> </input> <input name="override-epilogue"> <epilogue url="oxf:/portlet/common/epilogue.xpl" xmlns="http://www.orbeon.com/oxf/controller" /> </input> </processor> </config> </xsl:template> </xsl:stylesheet> Ray Auge -- You receive this message as a subscriber of the [hidden email] mailing list. To unsubscribe: mailto:[hidden email] For general help: mailto:[hidden email]?subject=help ObjectWeb mailing lists service home page: http://www.objectweb.org/wws PageFlowControllerProcessor-override-epilogue-06-07-06.patch (2K) Download Attachment |
Administrator
|
Raymond,
First, thanks for submitting the patch! Before we integrate it however, I would like to understand why this is needed at all. Wouldn't a simple stylesheet like this fix your issue: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pfc="http://www.orbeon.com/oxf/controller"> <xsl:template match="pfc:epilogue"> <!-- Make sure the correct epilogue is used --> <pfc:epilogue url="oxf:/config/epilogue.xpl"/> </xsl:template> <xsl:template match="@*|node()" priority="-100"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> Then simply hook it up in a pipeline before feeding it to the Page Flow Controller processor? -Erik Raymond Auge wrote: > Hello All, > > I have a situation where slightly under-privileged users can develop OPS > projects for display in a portlet. > > The project page-flow.xml is loaded dynamically by the custom > portlet.xpl where it is passed to a pipeline processor. > > Now, in order to prevent abuse, or bad mistakes, it becomes necessary to > make sure that the epilogue is not "accidentally" miss-configured in > their page-flow.xml files. I tried through various scenarios to > re-process the page-flow.xml in order to check the epilogue. But, I kept > coming up against namespace issues and having to account for countless > possible cases to the point where it was becoming ugly and depressing. > > In the end, the solution was obvious, if it was possible to pass an > override epilogue to the page-flow processor, it would make life much > easier. > > So, I'm requesting the acceptance on the following patch which adds an > optional input called "override-epilogue". [see attached] > > Here is a use-case example of creating (using xsl) a dynamic pipeline > config containing a page-flow controller which is executed later on. > Notice that the page-flow contains the "override-epilogue" input which > simply contains an epilogue element, which is used instead of the one in > the page-flow.xml . > > <xsl:stylesheet version="2.0"> > <xsl:variable > name="portlet-page-flow-path" > select="/portlet-preferences/preference[name = > 'portlet.page-flow.path']/value" > as="xs:string" /> > <xsl:template match="/"> > <config > xmlns="http://www.orbeon.com/oxf/pipeline" > xmlns:oxf="http://www.orbeon.com/oxf/processors"> > <processor name="oxf:page-flow"> > <input name="controller"> > <xsl:attribute name="href"> > <xsl:value-of select="$portlet-page-flow-path" /> > </xsl:attribute> > </input> > <input name="override-epilogue"> > <epilogue > url="oxf:/portlet/common/epilogue.xpl" > xmlns="http://www.orbeon.com/oxf/controller" /> > </input> > </processor> > </config> > </xsl:template> > </xsl:stylesheet> > > > Ray Auge -- Orbeon - XForms Everywhere: http://www.orbeon.com/blog/ -- You receive this message as a subscriber of the [hidden email] mailing list. To unsubscribe: mailto:[hidden email] For general help: mailto:[hidden email]?subject=help ObjectWeb mailing lists service home page: http://www.objectweb.org/wws |
> Wouldn't a simple stylesheet like this fix your issue:
Well, perhaps you're right. I'll break down the problems I had one at a
> > <xsl:stylesheet version="2.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:pfc="http://www.orbeon.com/oxf/controller"> > > <xsl:template match="pfc:epilogue"> > <!-- Make sure the correct epilogue is used --> > <pfc:epilogue url="oxf:/config/epilogue.xpl"/> > </xsl:template> > > <xsl:template match="@*|node()" priority="-100"> > <xsl:copy> > <xsl:apply-templates select="@*|node()"/> > </xsl:copy> > </xsl:template> > > </xsl:stylesheet> > > Then simply hook it up in a pipeline before feeding it to the Page > Flow Controller processor? > > -Erik > time and maybe you can help clear them up. First, I had problems loading the page-flow from an url passed in as a string. For example if the url is found in: <portlet-preferences> <preference> <name>portlet.page-flow.path</name> <value>oxf:/blah/foo.xml</value> </preference> </portlet-preferences> How would you pass it reliably as an argument for use as an href to the xslt processor, etc? Second, if I used the xslt processor and document() to extract and load the page-flow from the url passed from the string, I got all kinds of name-space processing problems. Maybe I'm missing something here. Basically, how would you get the document from the url above (obtained from the portlet-prefs processor) to the stylesheet you wrote? Ray -- You receive this message as a subscriber of the [hidden email] mailing list. To unsubscribe: mailto:[hidden email] For general help: mailto:[hidden email]?subject=help ObjectWeb mailing lists service home page: http://www.objectweb.org/wws |
On Sun, 2006-06-11 at 00:47 -0400, Raymond Auge wrote:
> > Wouldn't a simple stylesheet like this fix your issue: > > > > <xsl:stylesheet version="2.0" > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > > xmlns:pfc="http://www.orbeon.com/oxf/controller"> > > > > <xsl:template match="pfc:epilogue"> > > <!-- Make sure the correct epilogue is used --> > > <pfc:epilogue url="oxf:/config/epilogue.xpl"/> > > </xsl:template> > > > > <xsl:template match="@*|node()" priority="-100"> > > <xsl:copy> > > <xsl:apply-templates select="@*|node()"/> > > </xsl:copy> > > </xsl:template> > > > > </xsl:stylesheet> > > > > Then simply hook it up in a pipeline before feeding it to the Page > > Flow Controller processor? > > > > -Erik > > > > Well, perhaps you're right. I'll break down the problems I had one at a > time and maybe you can help clear them up. > > First, I had problems loading the page-flow from an url passed in as a > string. For example if the url is found in: > > <portlet-preferences> > <preference> > <name>portlet.page-flow.path</name> > <value>oxf:/blah/foo.xml</value> > </preference> > </portlet-preferences> > > How would you pass it reliably as an argument for use as an href to the > xslt processor, etc? > <p:processor name="oxf:xslt"> <p:input name="data" href="#portlet-preferences" /> <p:input name="config"> <xsl:stylesheet version="2.0"> <xsl:variable name="portlet-page-flow-path" select="/portlet-preferences/preference[name = 'portlet.page-flow.path']/value" as="xs:string" /> <xsl:template match="/"> <config> <url> <xsl:value-of select="$portlet-page-flow-path" /> </url> <content-type>application/xml</content-type> <validating>true</validating> </config> </xsl:template> </xsl:stylesheet> </p:input> <p:output name="data" id="url-generator-configuration" /> </p:processor> <p:processor name="oxf:url-generator" xmlns:p="http://www.orbeon.com/oxf/pipeline"> <p:input name="config" href="#url-generator-configuration" /> <p:output name="data" id="page-flow" /> </p:processor> > Second, if I used the xslt processor and document() to extract and load > the page-flow from the url passed from the string, I got all kinds of > name-space processing problems. As for namespace errors and such mentioned above, I used your xsl stylesheet with the output "page-flow" of the above, as input to it bellow: <p:processor name="oxf:xslt"> <p:input name="data" href="#page-flow" /> <p:input name="config"> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pfc="http://www.orbeon.com/oxf/controller"> <xsl:template match="pfc:epilogue"> <!-- Make sure the correct epilogue is used --> <pfc:epilogue url="oxf:/portlet/common/epilogue.xpl" /> </xsl:template> <xsl:template match="@*|node()" priority="-100"> <xsl:copy> <xsl:apply-templates select="@*|node()" /> </xsl:copy> </xsl:template> </xsl:stylesheet> </p:input> <p:output name="data" id="portlet-page-flow" /> </p:processor> <p:processor name="oxf:page-flow"> <p:input name="controller" href="#portlet-page-flow" /> </p:processor> This produces the same errors as I mentioned I was having before, when the page flow contains relative references to files/resources without using a uri type identifier like oxf:, http:, etc. e.g. the page-flow.xml that produced the exception bellow looks like: <config xmlns="http://www.orbeon.com/oxf/controller"> <page id="page1" path-info="/" model="../common/formatted-request.xpl" view="page1.xhtml"/> <page id="page2" path-info="/page2" view="page2.xhtml"/> <page id="page3" path-info="/page3" view="page3.xhtml"/> <epilogue url="oxf:/config/epilogue.xpl"/> </config> Note: This ALWAYS happens when the page-flow is NOT loaded directly from a file, regardless of where it comes from or how it got produced. Stack-trace: 2006-06-11 18:45:25,260 INFO org.orbeon.oxf.webapp.ProcessorService null - / - Received request 2006-06-11 18:45:25,471 ERROR org.orbeon.oxf.webapp.ProcessorService null - Exception at oxf:/portlet/common/portlet.xpl, line 124, column 40, description executing processor java.net.MalformedURLException: no protocol: ../common/formatted-request.xpl at java.net.URL.<init>(URL.java:567) at java.net.URL.<init>(URL.java:464) at org.orbeon.oxf.resources.URLFactory.createURL(URLFactory.java:45) at org.orbeon.oxf.resources.URLFactory.createURL(URLFactory.java:41) at org.orbeon.oxf.processor.PageFlowControllerProcessor $StepProcessorCall.<init>(PageFlowControllerProcessor.java:1420) at org.orbeon.oxf.processor.PageFlowControllerProcessor$13$1 $1.<init>(PageFlowControllerProcessor.java:792) at org.orbeon.oxf.processor.PageFlowControllerProcessor$13 $1.<init>(PageFlowControllerProcessor.java:792) at org.orbeon.oxf.processor.PageFlowControllerProcessor $13.<init>(PageFlowControllerProcessor.java:786) at org.orbeon.oxf.processor.PageFlowControllerProcessor.handlePage(PageFlowControllerProcessor.java:785) at org.orbeon.oxf.processor.PageFlowControllerProcessor.access $400(PageFlowControllerProcessor.java:39) at org.orbeon.oxf.processor.PageFlowControllerProcessor$1 $1.<init>(PageFlowControllerProcessor.java:337) at org.orbeon.oxf.processor.PageFlowControllerProcessor $1.read(PageFlowControllerProcessor.java:176) at org.orbeon.oxf.processor.ProcessorImpl.readCacheInputAsObject(ProcessorImpl.java:470) at org.orbeon.oxf.processor.PageFlowControllerProcessor.start(PageFlowControllerProcessor.java:90) at org.orbeon.oxf.processor.pipeline.PipelineProcessor $5.run(PipelineProcessor.java:652) at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:536) at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:649) at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:233) at org.orbeon.oxf.processor.pipeline.PipelineProcessor $5.run(PipelineProcessor.java:652) at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:536) at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:649) at org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:233) at org.orbeon.oxf.processor.pipeline.PipelineProcessor $5.run(PipelineProcessor.java:652) at org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:536) at org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:649) at org.orbeon.oxf.pipeline.InitUtils.runProcessor(InitUtils.java:86) at org.orbeon.oxf.webapp.ProcessorService.service(ProcessorService.java:95) at org.orbeon.oxf.portlet.OPSPortletDelegate.render(OPSPortletDelegate.java:228) at org.orbeon.oxf.portlet.OPSPortlet.render(OPSPortlet.java:83) at com.liferay.portal.shared.servlet.PortletServlet.service(PortletServlet.java:83) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) at com.liferay.portlet.CachePortlet._invoke(CachePortlet.java:289) at com.liferay.portlet.CachePortlet.render(CachePortlet.java:153) at org.apache.jsp.html.portal.render_005fportlet_jsp._jspService(render_005fportlet_jsp.java:653) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) at com.liferay.portal.util.PortalUtil.renderPortlet(PortalUtil.java:927) at com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processPortlet(RuntimePortletUtil.java:121) at com.liferay.portlet.layoutconfiguration.util.velocity.PortletColumnLogic.processContent(PortletColumnLogic.java:76) at com.liferay.portlet.layoutconfiguration.util.velocity.TemplateProcessor.processColumn(TemplateProcessor.java:62) 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:585) at org.apache.velocity.util.introspection.UberspectImpl $VelMethodImpl.invoke(UberspectImpl.java:267) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:197) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:175) at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:220) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:230) at org.apache.velocity.app.Velocity.evaluate(Velocity.java:316) at org.apache.velocity.app.Velocity.evaluate(Velocity.java:210) at com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate(RuntimePortletUtil.java:163) at com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate(RuntimePortletUtil.java:144) at org.apache.jsp.html.portal.layout.view.portlet_jsp._jspService(portlet_jsp.java:411) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) at com.liferay.taglib.util.IncludeTag.doEndTag(IncludeTag.java:63) at org.apache.jsp.html.portal.layout_jsp._jspService(layout_jsp.java:414) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) at com.liferay.taglib.util.IncludeTag.doEndTag(IncludeTag.java:63) at org.apache.jsp.html.themes.classic.templates.portal_005fnormal_jsp._jspService(portal_005fnormal_jsp.java:1022) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) at com.liferay.taglib.util.ThemeUtil.includeJSP(ThemeUtil.java:139) at com.liferay.taglib.util.ThemeUtil.include(ThemeUtil.java:93) at com.liferay.taglib.util.IncludeTag.doEndTag(IncludeTag.java:58) at org.apache.jsp.html.common.themes.portal_jsp._jspx_meth_liferay $1theme_include_0(portal_jsp.java:474) at org.apache.jsp.html.common.themes.portal_jsp._jspService(portal_jsp.java:386) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.liferay.portal.struts.StrutsUtil.forward(StrutsUtil.java:87) at com.liferay.portal.struts.PortalRequestProcessor.doForward(PortalRequestProcessor.java:210) at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:239) at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:302) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241) at com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:185) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:415) at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:810) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.liferay.filters.strip.StripFilter.doFilter(StripFilter.java:91) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.liferay.filters.secure.SecureFilter.doFilter(SecureFilter.java:131) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.liferay.filters.compression.CompressionFilter.doFilter(CompressionFilter.java:112) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.liferay.portal.servlet.filters.layoutcache.LayoutCacheFilter.doFilter(LayoutCacheFilter.java:191) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol $Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool $ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) > > Maybe I'm missing something here. > > Basically, how would you get the document from the url above (obtained > from the portlet-prefs processor) to the stylesheet you wrote? > > Ray > > > plain text document attachment (message-footer.txt) > -- > You receive this message as a subscriber of the [hidden email] mailing list. > To unsubscribe: mailto:[hidden email] > For general help: mailto:[hidden email]?subject=help > ObjectWeb mailing lists service home page: http://www.objectweb.org/wws -- You receive this message as a subscriber of the [hidden email] mailing list. To unsubscribe: mailto:[hidden email] For general help: mailto:[hidden email]?subject=help ObjectWeb mailing lists service home page: http://www.objectweb.org/wws |
Hello Erik,
Just wondering if you could take a quick look at this issue. I'm still having the problem. > > > Then simply hook it up in a pipeline before feeding it to the Page > > > Flow Controller processor? > > > > > > -Erik > > > > > > > How would you pass it reliably as an argument for use as an href to the > > xslt processor, etc? > > > This i solved by using this: > > <p:processor name="oxf:xslt"> > <p:input name="data" href="#portlet-preferences" /> > <p:input name="config"> > <xsl:stylesheet version="2.0"> > <xsl:variable name="portlet-page-flow-path" > select="/portlet-preferences/preference[name = > 'portlet.page-flow.path']/value" as="xs:string" /> > <xsl:template match="/"> > <config> > <url> > <xsl:value-of select="$portlet-page-flow-path" /> > </url> > <content-type>application/xml</content-type> > <validating>true</validating> > </config> > </xsl:template> > </xsl:stylesheet> > </p:input> > <p:output name="data" id="url-generator-configuration" /> > </p:processor> > > <p:processor name="oxf:url-generator" > xmlns:p="http://www.orbeon.com/oxf/pipeline"> > <p:input name="config" href="#url-generator-configuration" /> > <p:output name="data" id="page-flow" /> > </p:processor> > > As for namespace errors and such mentioned above, I used your xsl > stylesheet with the output "page-flow" of the above, as input to it > bellow: > > <p:processor name="oxf:xslt"> > <p:input name="data" href="#page-flow" /> > <p:input name="config"> > <xsl:stylesheet version="2.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:pfc="http://www.orbeon.com/oxf/controller"> > <xsl:template match="pfc:epilogue"> > <!-- Make sure the correct epilogue is used --> > <pfc:epilogue url="oxf:/portlet/common/epilogue.xpl" /> > </xsl:template> > <xsl:template match="@*|node()" priority="-100"> > <xsl:copy> > <xsl:apply-templates select="@*|node()" /> > </xsl:copy> > </xsl:template> > </xsl:stylesheet> > </p:input> > <p:output name="data" id="portlet-page-flow" /> > </p:processor> > > <p:processor name="oxf:page-flow"> > <p:input name="controller" href="#portlet-page-flow" /> > </p:processor> > This produces the same errors as I mentioned I was having before, when > the page flow contains relative references to files/resources without > using a uri type identifier like oxf:, http:, etc. > > e.g. the page-flow.xml that produced the exception bellow looks like: > > <config xmlns="http://www.orbeon.com/oxf/controller"> > <page id="page1" path-info="/" model="../common/formatted-request.xpl" > view="page1.xhtml"/> > <page id="page2" path-info="/page2" view="page2.xhtml"/> > <page id="page3" path-info="/page3" view="page3.xhtml"/> > <epilogue url="oxf:/config/epilogue.xpl"/> > </config> > > > Note: This ALWAYS happens when the page-flow is NOT loaded directly from > a file, regardless of where it comes from or how it got produced. > > Stack-trace: > > 2006-06-11 18:45:25,260 INFO org.orbeon.oxf.webapp.ProcessorService > null - / - Received request > 2006-06-11 18:45:25,471 ERROR org.orbeon.oxf.webapp.ProcessorService > null - Exception at oxf:/portlet/common/portlet.xpl, line 124, column > 40, description executing processor > java.net.MalformedURLException: no > protocol: ../common/formatted-request.xpl > at java.net.URL.<init>(URL.java:567) > at java.net.URL.<init>(URL.java:464) > at > org.orbeon.oxf.resources.URLFactory.createURL(URLFactory.java:45) > at > org.orbeon.oxf.resources.URLFactory.createURL(URLFactory.java:41) > at org.orbeon.oxf.processor.PageFlowControllerProcessor > $StepProcessorCall.<init>(PageFlowControllerProcessor.java:1420) > at org.orbeon.oxf.processor.PageFlowControllerProcessor$13$1 > $1.<init>(PageFlowControllerProcessor.java:792) > at org.orbeon.oxf.processor.PageFlowControllerProcessor$13 > $1.<init>(PageFlowControllerProcessor.java:792) > at org.orbeon.oxf.processor.PageFlowControllerProcessor > $13.<init>(PageFlowControllerProcessor.java:786) > at > org.orbeon.oxf.processor.PageFlowControllerProcessor.handlePage(PageFlowControllerProcessor.java:785) > at org.orbeon.oxf.processor.PageFlowControllerProcessor.access > $400(PageFlowControllerProcessor.java:39) > at org.orbeon.oxf.processor.PageFlowControllerProcessor$1 > $1.<init>(PageFlowControllerProcessor.java:337) > at org.orbeon.oxf.processor.PageFlowControllerProcessor > $1.read(PageFlowControllerProcessor.java:176) > at > org.orbeon.oxf.processor.ProcessorImpl.readCacheInputAsObject(ProcessorImpl.java:470) > at > org.orbeon.oxf.processor.PageFlowControllerProcessor.start(PageFlowControllerProcessor.java:90) > at org.orbeon.oxf.processor.pipeline.PipelineProcessor > $5.run(PipelineProcessor.java:652) > at > org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:536) > at > org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:649) > at > org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:233) > at org.orbeon.oxf.processor.pipeline.PipelineProcessor > $5.run(PipelineProcessor.java:652) > at > org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:536) > at > org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:649) > at > org.orbeon.oxf.processor.pipeline.choose.ConcreteChooseProcessor.start(ConcreteChooseProcessor.java:233) > at org.orbeon.oxf.processor.pipeline.PipelineProcessor > $5.run(PipelineProcessor.java:652) > at > org.orbeon.oxf.processor.ProcessorImpl.executeChildren(ProcessorImpl.java:536) > at > org.orbeon.oxf.processor.pipeline.PipelineProcessor.start(PipelineProcessor.java:649) > at > org.orbeon.oxf.pipeline.InitUtils.runProcessor(InitUtils.java:86) > at > org.orbeon.oxf.webapp.ProcessorService.service(ProcessorService.java:95) > at > org.orbeon.oxf.portlet.OPSPortletDelegate.render(OPSPortletDelegate.java:228) > at org.orbeon.oxf.portlet.OPSPortlet.render(OPSPortlet.java:83) > at > com.liferay.portal.shared.servlet.PortletServlet.service(PortletServlet.java:83) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) > at > org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) > at > org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) > at > com.liferay.portlet.CachePortlet._invoke(CachePortlet.java:289) > at > com.liferay.portlet.CachePortlet.render(CachePortlet.java:153) > at > org.apache.jsp.html.portal.render_005fportlet_jsp._jspService(render_005fportlet_jsp.java:653) > at > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) > at > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) > at > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) > at > org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) > at > org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) > at > com.liferay.portal.util.PortalUtil.renderPortlet(PortalUtil.java:927) > at > com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processPortlet(RuntimePortletUtil.java:121) > at > com.liferay.portlet.layoutconfiguration.util.velocity.PortletColumnLogic.processContent(PortletColumnLogic.java:76) > at > com.liferay.portlet.layoutconfiguration.util.velocity.TemplateProcessor.processColumn(TemplateProcessor.java:62) > 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:585) > at org.apache.velocity.util.introspection.UberspectImpl > $VelMethodImpl.invoke(UberspectImpl.java:267) > at > org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:197) > at > org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:175) > at > org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:220) > at > org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:230) > at org.apache.velocity.app.Velocity.evaluate(Velocity.java:316) > at org.apache.velocity.app.Velocity.evaluate(Velocity.java:210) > at > com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate(RuntimePortletUtil.java:163) > at > com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate(RuntimePortletUtil.java:144) > at > org.apache.jsp.html.portal.layout.view.portlet_jsp._jspService(portlet_jsp.java:411) > at > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) > at > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) > at > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) > at > org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) > at > org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) > at > com.liferay.taglib.util.IncludeTag.doEndTag(IncludeTag.java:63) > at > org.apache.jsp.html.portal.layout_jsp._jspService(layout_jsp.java:414) > at > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) > at > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) > at > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) > at > org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) > at > org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) > at > com.liferay.taglib.util.IncludeTag.doEndTag(IncludeTag.java:63) > at > org.apache.jsp.html.themes.classic.templates.portal_005fnormal_jsp._jspService(portal_005fnormal_jsp.java:1022) > at > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) > at > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) > at > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) > at > org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) > at > org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) > at > com.liferay.taglib.util.ThemeUtil.includeJSP(ThemeUtil.java:139) > at com.liferay.taglib.util.ThemeUtil.include(ThemeUtil.java:93) > at > com.liferay.taglib.util.IncludeTag.doEndTag(IncludeTag.java:58) > at > org.apache.jsp.html.common.themes.portal_jsp._jspx_meth_liferay > $1theme_include_0(portal_jsp.java:474) > at > org.apache.jsp.html.common.themes.portal_jsp._jspService(portal_jsp.java:386) > at > org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) > at > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) > at > org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) > at > org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) > at > org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) > at > org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) > at > org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) > at > com.liferay.portal.struts.StrutsUtil.forward(StrutsUtil.java:87) > at > com.liferay.portal.struts.PortalRequestProcessor.doForward(PortalRequestProcessor.java:210) > at > org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:239) > at > org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:302) > at > org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241) > at > com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:185) > at > org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) > at > org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) > at > com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:415) > at > com.liferay.portal.servlet.MainServlet.service(MainServlet.java:810) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) > at > com.liferay.filters.strip.StripFilter.doFilter(StripFilter.java:91) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) > at > com.liferay.filters.secure.SecureFilter.doFilter(SecureFilter.java:131) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) > at > com.liferay.filters.compression.CompressionFilter.doFilter(CompressionFilter.java:112) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) > at > com.liferay.portal.servlet.filters.layoutcache.LayoutCacheFilter.doFilter(LayoutCacheFilter.java:191) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) > at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) > at org.apache.coyote.http11.Http11BaseProtocol > $Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) > at > org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) > at > org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) > at org.apache.tomcat.util.threads.ThreadPool > $ControlRunnable.run(ThreadPool.java:684) > at java.lang.Thread.run(Thread.java:595) > > > > > > Maybe I'm missing something here. > > > > Basically, how would you get the document from the url above (obtained > > from the portlet-prefs processor) to the stylesheet you wrote? > > > > Ray > > > > > > plain text document attachment (message-footer.txt) > > -- > > You receive this message as a subscriber of the [hidden email] mailing list. > > To unsubscribe: mailto:[hidden email] > > For general help: mailto:[hidden email]?subject=help > > ObjectWeb mailing lists service home page: http://www.objectweb.org/wws > > > plain text document attachment (message-footer.txt) > -- > You receive this message as a subscriber of the [hidden email] mailing list. > To unsubscribe: mailto:[hidden email] > For general help: mailto:[hidden email]?subject=help > ObjectWeb mailing lists service home page: http://www.objectweb.org/wws -- You receive this message as a subscriber of the [hidden email] mailing list. To unsubscribe: mailto:[hidden email] For general help: mailto:[hidden email]?subject=help ObjectWeb mailing lists service home page: http://www.objectweb.org/wws |
Free forum by Nabble | Edit this page |