[opencms-dev] SOLVED Re: Programmatically create Structured-Content with addValue : ClassCastException

Marc Johnen opencms at johnen.biz
Wed Mar 25 15:56:00 CET 2009


Just in case anyone is interested:
The element "int_link" which gave me the error is of the type
OpenCmsVfsFile.
Instead of adding the elements "link" and "uuid" to "int_link" one can
simply
make a setStringValue(cmso, "/sites/mysite/somevalidlink.html) and "link"
and "uuid" are beeing added automatically.
Greetings
Marc


Marc Johnen wrote:
> 
> Hello everyone,
> 
> I try to programatically create a page with Structured-Content.
> For that I unmarshall a file created with the article.xsd but
> with no content (Control-Code "Template").
> Then I try to add the elements I need. Everything is going
> well till I try to add the element "link" below "int_link",
> this results in an "ClassCastException" (see exception at bottom).
> Is it because of the missing attribute?
> 
> Any hint would be very welcome.
> 
> Greetings
> Marc
> 
> 
> Control-Code "Template":
> 
> <?xml version="1.0" encoding="UTF-8"?>
> 
> <Articles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:noNamespaceSchemaLocation="opencms://system/modules/de.mymodule/schemas/article.xsd">
>   <Article language="en">
>     <title/>
>     <sub_title/>
>     <teaser/>
>     <page>
>       <text name="text0">
>         <links/>
>         <content/>
>       </text>
>     </page>
>     <image/>
>     <image_text/>
>     <servicebox_title/>
>     <servicebox_show_left>false</servicebox_show_left>
>     <servicebox_show_below>false</servicebox_show_below>
>   </Article>
> </Articles>
> 
> Control-Code, manualy created Article:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> 
> <Articles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:noNamespaceSchemaLocation="opencms://system/modules/de.mymodule/schemas/article.xsd">
>   <Article language="en">
>     <title><![CDATA[mytitle]]></title>
>     <sub_title><![CDATA[mysubtitle]]></sub_title>
>     <teaser><![CDATA[teasing.]]></teaser>
>     <page>
>       <text name="text0">
>         <links/>
>         <content><![CDATA[mycontent]]></content>
>       </text>
>     </page>
>     <image><![CDATA[/sites/mysite/_image_gallery/mypic.jpg]]></image>
>     <image_text><![CDATA[imagetext]]></image_text>
>     <servicebox_title><![CDATA[Lesen Sie auch:]]></servicebox_title>
>     <servicebox_show_left>true</servicebox_show_left>
>     <servicebox_show_below>true</servicebox_show_below>
>     <servicebox_topic>
>       <title/>
>       <link>
>         <link_target><![CDATA[_self]]></link_target>
>         <link_title><![CDATA[more]]></link_title>
>         <int_link>
>           <link type="WEAK">
>             <target><![CDATA[/sites/mysite/index.html]]></target>
>             <uuid>638aa556-17ba-11de-b2ab-8d16e8b7cfa1</uuid>
>           </link>
>         </int_link>
>       </link>
>     </servicebox_topic>
>   </Article>
> </Articles>
> 
> 
> Code:
> 
> 			CmsResource xmlContentResource = cmso.readResource(template);
> 			CmsFile xmlContentFile = CmsFile.upgrade(xmlContentResource, cmso);
> 			CmsXmlContent xmlContent = CmsXmlContentFactory.unmarshal(cmso,
> xmlContentFile);
> 			
> 			I_CmsXmlContentValue page = xmlContent.getValue("page", locale); 
> 			I_CmsXmlContentValue text = xmlContent.getValue(page.getPath() + "/" +
> "text", locale); 
> 			I_CmsXmlContentValue c = xmlContent.getValue(text.getPath(), locale);
> 			c.setStringValue(cmso, content);
> 
> 			I_CmsXmlContentValue title = xmlContent.getValue("title", locale); 
> 			I_CmsXmlContentValue t = xmlContent.getValue(title.getPath(), locale);
> 			t.setStringValue(cmso, titleString);
> 			
> 			I_CmsXmlContentValue subheadlineCV = xmlContent.getValue("sub_title",
> locale); 
> 			subheadlineCV.setStringValue(cmso, subheadline);
> 
> 			I_CmsXmlContentValue articleImageCV = xmlContent.getValue("image",
> locale); 
> 			articleImageCV.setStringValue(cmso, article_image1);
> 
> 			I_CmsXmlContentValue articleImageTextCV =
> xmlContent.getValue("image_text", locale); 
> 			articleImageTextCV.setStringValue(cmso, article_image_text);
> 			
> 			I_CmsXmlContentValue articleTeaserCV = xmlContent.getValue("teaser",
> locale); 
> 			articleTeaserCV.setStringValue(cmso, teaser );
> 
> 			 String serviceBoxTitle = "servicebox_title";
> 			 String serviceboxShowLeft = "servicebox_show_left";
> 			 String serviceboxShowBelow = "servicebox_show_below";
> 			 String serviceboxTopic = "servicebox_topic";
> 			 String serviceboxLink_target = "link_target";
> 			 String serviceboxLink_title = "link_title";
> 			 String serviceBoxIntLink = "int_link";
> 			 
> 			 I_CmsXmlContentValue serviceBoxTitleCV =
> xmlContent.getValue(serviceBoxTitle, locale);
> 			 serviceBoxTitleCV.setStringValue(cmso, "Lesen Sie auch:");
> 			 I_CmsXmlContentValue serviceboxShowLeftCV =
> xmlContent.getValue(serviceboxShowLeft, locale);
> 			 serviceboxShowLeftCV.setStringValue(cmso, "true");
> 			 
> 			 I_CmsXmlContentValue serviceboxShowBelowCV =
> xmlContent.getValue(serviceboxShowBelow, locale);
> 			 serviceboxShowBelowCV.setStringValue(cmso, "true");
> 			 
> 			 I_CmsXmlContentValue serviceboxTopicCV = xmlContent.addValue(cmso,
> serviceboxTopic, locale, 0);
> 
> 			 I_CmsXmlContentValue serviceboxLinkTargetCV =
> xmlContent.getValue(serviceboxTopicCV.getPath()+"/link[1]/"+
> serviceboxLink_target, locale, 0);
> 			 String lt = "_self";
> 			 serviceboxLinkTargetCV.setStringValue(cmso, lt);
> 			 I_CmsXmlContentValue serviceboxLinkTitleCV =
> xmlContent.getValue(serviceboxTopicCV.getPath()+"/link[1]/"+
> serviceboxLink_title, locale, 0);
> 			 String ltitle = "Mehr zu:";
> 			 serviceboxLinkTitleCV.setStringValue(cmso, ltitle);
> 			 
> 			 I_CmsXmlContentValue serviceboxIntLinkCV = xmlContent.addValue(cmso,
> serviceboxTopicCV.getPath()+"/link[1]/"+ serviceBoxIntLink, locale, 0);
> 			 serviceboxIntLinkCV.getPath();
> 			 
> 			 I_CmsXmlContentValue serviceboxIntLinkLinkCV =
> xmlContent.addValue(cmso, serviceboxIntLinkCV.getPath()+"/link",
> locale,0);
> 
> 
> 
> 
> Exception:
> 
> java.lang.ClassCastException: org.opencms.xml.types.CmsXmlVfsFileValue
> cannot be cast to org.opencms.xml.types.CmsXmlNestedContentDefinition
> [0003465] [tomcat opencms ] 	at
> org.opencms.xml.content.CmsXmlContent.addValue(CmsXmlContent.java:247)
> [0003466] [tomcat opencms ] 	at
> de.mysite.migration.MigrateOpenCms.createArticle(MigrateOpenCms.java:392)
> [0003467] [tomcat opencms ] 	at
> de.mysite.migration.MigrateOpenCms.migrateArticles(MigrateOpenCms.java:170)
> [0003468] [tomcat opencms ] 	at
> de.mysite.migration.MigrateOpenCms.<init>(MigrateOpenCms.java:88)
> [0003469] [tomcat opencms ] 	at
> org.apache.jsp.WEB_002dINF.jsp.offline.system.modules.de_mysite_migration.generieren.migrate_jsp._jspService(migrate_jsp.java:63)
> [0003470] [tomcat opencms ] 	at
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
> [0003471] [tomcat opencms ] 	at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
> [0003472] [tomcat opencms ] 	at
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
> [0003473] [tomcat opencms ] 	at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
> [0003474] [tomcat opencms ] 	at
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
> [0003475] [tomcat opencms ] 	at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
> [0003476] [tomcat opencms ] 	at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
> [0003477] [tomcat opencms ] 	at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> [0003478] [tomcat opencms ] 	at
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
> [0003479] [tomcat opencms ] 	at
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
> [0003480] [tomcat opencms ] 	at
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:497)
> [0003481] [tomcat opencms ] 	at
> org.opencms.flex.CmsFlexRequestDispatcher.includeExternal(CmsFlexRequestDispatcher.java:194)
> [0003482] [tomcat opencms ] 	at
> org.opencms.flex.CmsFlexRequestDispatcher.include(CmsFlexRequestDispatcher.java:169)
> [0003483] [tomcat opencms ] 	at
> org.opencms.loader.CmsJspLoader.service(CmsJspLoader.java:1193)
> [0003484] [tomcat opencms ] 	at
> org.opencms.flex.CmsFlexRequestDispatcher.includeInternalWithCache(CmsFlexRequestDispatcher.java:423)
> [0003485] [tomcat opencms ] 	at
> org.opencms.flex.CmsFlexRequestDispatcher.include(CmsFlexRequestDispatcher.java:173)
> [0003486] [tomcat opencms ] 	at
> org.opencms.loader.CmsJspLoader.dispatchJsp(CmsJspLoader.java:1227)
> [0003487] [tomcat opencms ] 	at
> org.opencms.loader.CmsJspLoader.load(CmsJspLoader.java:1171)
> [0003488] [tomcat opencms ] 	at
> org.opencms.loader.CmsResourceManager.loadResource(CmsResourceManager.java:964)
> [0003489] [tomcat opencms ] 	at
> org.opencms.main.OpenCmsCore.showResource(OpenCmsCore.java:1498)
> [0003490] [tomcat opencms ] 	at
> org.opencms.main.OpenCmsServlet.doGet(OpenCmsServlet.java:152)
> [0003491] [tomcat opencms ] 	at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
> [0003492] [tomcat opencms ] 	at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
> [0003493] [tomcat opencms ] 	at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
> [0003494] [tomcat opencms ] 	at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> [0003495] [tomcat opencms ] 	at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
> [0003496] [tomcat opencms ] 	at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
> [0003497] [tomcat opencms ] 	at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> [0003498] [tomcat opencms ] 	at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
> [0003499] [tomcat opencms ] 	at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
> [0003500] [tomcat opencms ] 	at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
> [0003501] [tomcat opencms ] 	at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
> [0003502] [tomcat opencms ] 	at
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
> [0003503] [tomcat opencms ] 	at
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
> [0003504] [tomcat opencms ] 	at
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
> [0003505] [tomcat opencms ] 	at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
> [0003506] [tomcat opencms ] 	at java.lang.Thread.run(Thread.java:619)
> 
> 

-- 
View this message in context: http://www.nabble.com/Programmatically-create-Structured-Content-with-addValue-%3A-ClassCastException-tp22668421p22703322.html
Sent from the OpenCMS - Dev mailing list archive at Nabble.com.




More information about the opencms-dev mailing list