Re: creating pages using the API [Our Ref:CPTEE8C7 Your Ref:CPTB3A81]
Serge Huber <[email protected]>
| Newsgroups | gmane.comp.cms.jahia.template |
|---|---|
| Message-ID | <[email protected]> |
The ParamBean object tries to decode the URL, looking for certain parameters such as a page ID, current editing mode, etc... Basically try to generate an URL that would look like this : http://localhost:8080/jahia/CreatePersonalHomePage/pid/3/op/edit or something like that. When Jahia creates a page it needs to know the current page that will automatically become the parent page. Also, when creating a page you also need to create the "navigation container" that will contain it. All this is not trivial but has been covered in the various mailing lists before, I suggest you search for it. Regards, Serge Huber. [email protected] wrote: > > hi there, > > I've created a servlet in the Jahia context, from which I can get the > sites base service (JahiaSitesBaseService.getInstance()), page base > service (JahiaPageBaseService.getInstance()), etc -- the getInstance() > methods work. I now wish to call this servlet from my portlet. > > I'm trying to create a page using the API. It looks like I should use > JahiaPageBaseService.createPage. I'm having trouble constructing the > last argument - ParamBean. > > When running the servlet by typing in the URL in a browser, setting > the parameter to NULL I get a NullPointerException. > > I use the following code to run the servlet from my portlet: > URL url = new > URL("http://localhost:8080/jahia/CreatePersonalHomePage"); > HttpURLConnection con = (HttpURLConnection)url.openConnection(); > con.setRequestMethod("POST"); > con.setDoInput(true); > con.setDoOutput(true); > con.setUseCaches(false); > con.getInputStream(); > > In my servlet, I construct my parambean as follows -- I construct the > parambean and call createPage from the "service" method of my servlet: > ParamBean paramBean = > new ParamBean( > request, > response, > this.getServletContext(), > settingsBean, > System.currentTimeMillis(), > 1); > > I construct settingsBean as follows: > String licenseFilename = > > "C:\\jahia404_build5822\\tomcat\\webapps\\jahia\\WEB-INF\\etc\\config\\license.xml"; > > String propertiesFilename = > > "C:\\jahia404_build5822\\tomcat\\webapps\\jahia\\WEB-INF\\etc\\config"; > SettingsBean settingsBean = > new SettingsBean(this.config, propertiesFilename, > licenseFilename, 6131); > > create page looks as follows: > svc.createPage( > 1, > 0, > JahiaPage.TYPE_DIRECT, > "my personal page", > 25, > "http://", > 0, > "thepage", > -8, > paramBean); > > Problem: the process appears to hang - the last output on my tomcat > console is as follows: > 64297 DEBUG > org.jahia.services.database.ConnectionDispenser.getConnection:195 - > Retrieving new onnection from pool.. > 64328 DEBUG org.jahia.bin.JahiaWebAppListener.sessionCreated:32 - > Session 093E81F94E6D374963AC8558475636FE was just created... > 64328 DEBUG org.jahia.params.ParamBean.getSiteInfos:1598 - Can't find > site in serverName, trying to reverse from page ID... > 64328 DEBUG org.jahia.params.ParamBean.getSiteInfos:1647 - No site > found in URL, serverName or via page ID, going to default site... > > My browser displays an empty page, and looks like it is still waiting > for a response (the icon in the top-right corner continues spinning). > > Am I on the right track for creating pages? How should I construct > paramBean? > > thanks, > Manoj > > > > > > > > > *[email protected]* > > 2004/09/02 10:14 AM > Please respond to > [email protected] > > > > To > [email protected] > cc > > Subject > Re: how to use ServicesRegistry? > > > > > > > > > OREF:CPTB3A81 > > > > > > > Hi, > > This is probably the same problem of trying to call the Jahia API from a > servlet in another context. Please read the Web application developer > guide. > > Regards, > Serge Huber. > > [email protected] wrote: > > > > > hi there, > > > > I wish to create pages using the Jahia API. It looks like I've got to > > use ServicesRegistry (ServicesRegistry.getInstance > > ().getJahiaPageTemplateService(), etc). From my servlet, I've got the > > code ServicesRegistry.getInstance() but that returns an exception and > > my servlet doesn't render -- I've attached the console output (as well > > as the exception) below. > > > > What setup do I have to do before calling ServicesRegistry.getInstance > > ()? > > > > thanks, > > Manoj > > > > > > > > To > > [email protected] > > cc > > > > Subject > > JahiaSitesBaseService API > > > > > > > > > > > > > > > > > > OREF:CPT60548 > > > > > > > > > > hi there, > > > > I'm trying to use the Jahia API to create pages and then to set ACLs > > on the pages. > > > > As a starting point, I'm trying to use the JahiaService classes - like > > JahiaSitesBaseService to get a handle to the site and then perhaps > > JahiaPageBaseService to get a handle to a page. > > > > When calling the static getInstance() methods from my servlet, I get > > an exception (extract attached below). What is the correct way of > > using the API? Should I be able to use the JahiaServices from my > > servlets? > > > > 756594 DEBUG org.jahia.exceptions.JahiaException.dispatchRequest:335 - > > called. > > org.jahia.exceptions.JahiaException: Can't access application > > NCOP_Portlet_Test, Servlet Exception occured in getAppOutput > > dispatching process ! Message = [javax.servlet.ServletException: Error > > instantiating servlet class org.ncop.minimal.HelloServlet], root > > cause:Error instantiating servlet class org.ncop.minimal.HelloServlet > > root cause=javax.servlet.ServletException: Error instantiating servlet > > class org.ncop.minimal.HelloServlet > > at > > > org.jahia.services.applications.JahiaApplicationsDispatchingServletService.dispatchRequest(JahiaApplicationsDispatchingServletService.java:335) > > > > > at > > > org.jahia.services.applications.JahiaApplicationsDispatchingServletService.getAppOutputNoAction(JahiaApplicationsDispatchingServletService.java:653) > > > > > at > > > org.jahia.services.applications.JahiaApplicationsDispatchingServletService.getAppOutput(JahiaApplicationsDispatchingServletService.java:910) > > > > > at > > > org.jahia.services.fields.ContentApplicationField.getValue(ContentApplicationField.java:102) > > > > > at > > org.jahia.services.fields.ContentField.getValue(ContentField.java:265) > > at > > > org.jahia.data.fields.JahiaApplicationField.load(JahiaApplicationField.java:65) > > > > > at > > > org.jahia.services.fields.JahiaFieldBaseService.loadField(JahiaFieldBaseService.java:811) > > > > > at > > > org.jahia.services.fields.JahiaFieldBaseService.loadField(JahiaFieldBaseService.java:774) > > > > > at > > > org.jahia.services.containers.ContainerFactory.fullyLoadContainer(ContainerFactory.java:147) > > > > > at > > > org.jahia.services.containers.ContainerFactoryProxy.load(ContainerFactoryProxy.java:136) > > > > > at > > > org.jahia.data.containers.JahiaContainer.checkProxy(JahiaContainer.java:870) > > > > > at > > > org.jahia.data.containers.JahiaContainer.getField(JahiaContainer.java:462) > > > > > at > > > org.jahia.taglibs.field.AbstractFieldTag.doStartTag(AbstractFieldTag.java:142) > > > > > > > thanks, > > Manoj > > > > > > This e-mail is intended exclusively for the addressee. > > If you are not the addressee you must not read, copy, use or disclose > > the e-mail nor the content; please notify us immediately (by clicking > > "Reply") and delete this e-mail. > > > > > This e-mail is intended exclusively for the addressee. > If you are not the addressee you must not read, copy, use or disclose > the e-mail nor the content; please notify us immediately (by clicking > "Reply") and delete this e-mail. >