[opencms-dev] need a little Java help (out.println())

Tim Howland th at wdogsystems.com
Fri Sep 19 14:51:30 CEST 2008


Hey Christoph-

I think that looks like my old sitemap code; anyway, the issue is that 
the method declaration is in the <%! block, so it doesn't run in the 
same method as the rest of the java code. Normally, JSP's get compiled 
into a single method, with things like a params Map and a responswriter 
(called out) available. Since I needed to define a recursive function, I 
had to define this code outside of that method.

You may be able to get away with it by changing the method signature for 
the recurseTree method to:

private String recurseTree(CmsObject cmso,CmsJspActionElement jsp, String path, ResponseWriter out) {

}

and passing the responsewriter to it from the body of the calling JSP.

Hope this helps,

TIm



Christoph P. Kukulies wrote:
> I'm using this piece of code that I grabbed from the net with minor
> modifications to generate a google sitemap file.
> I would like to modify this code to print out a recursive directory
> directory listing of the site with all folders and files. (kind of
> ls -lR).
> So all I would need is to put an out.println() into the most inner
> code section where the <loc>url</loc> is written (appended to the
> string). Appending to the string a costly anyway when doing recursion
> that's why this piece of code runs quite a while :).
>
> Anyway, whan I put an out.println() into the private function
> recurseTree(), out is an unknown variable. 
>
> So I'm 
> a) wondering what magic makes it known in the outer scope when I use it
>    there
> b) asking for help, what I have to do to make it known. I tried
>    System.out.println() but I see no output in the browser window.
>    (it goes into the logs/stdout_20080918.log file)
>
> Here is the code again:
>
> <%@ page session="false" %>
> <%@ page
> import="java.util.*,org.opencms.jsp.*,org.opencms.file.*,java.text.DateFormat,
> java.text.SimpleDateFormat,org.opencms.main.*" %>
> <%@ page import="org.opencms.lock.CmsLockType" %>
> <%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>
> <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
> <?xml version="1.0" encoding="UTF-8" ?>
> <urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
> <%!
> protected String BASE_URL="";
> public static SimpleDateFormat ISO8601FORMAT = new
> SimpleDateFormat("yyyy-MM-dd");
> private String recurseTree(CmsObject cmso,CmsJspActionElement jsp,
> String path)  {
> 	StringBuffer sb = new StringBuffer();
>         
> 	try {
> 		ArrayList files = (ArrayList)
> cmso.getFilesInFolder(path);
> 		Iterator i = files.iterator();
> 		while (i.hasNext()) {
> 			CmsFile f = (CmsFile) i.next();	
> 			String thispath = jsp.link(cmso.getSitePath(f));
> 			CmsProperty secret =
> cmso.readPropertyObject(f,"sitemap_hidden",true);
> 			CmsProperty changeFreqProperty =
> cmso.readPropertyObject(f,"sitemap_change_frequency",true);
> 			CmsProperty priorityProperty =
> cmso.readPropertyObject(f,"sitemap_priority",true);
> 			String changeFrequency =
> changeFreqProperty.getValue("weekly");
> 			String priority =
> priorityProperty.getValue("1");
> 			if ((secret.getValue("false") == "false") 
> 				&&
> (thispath.endsWith("html")||thispath.endsWith("jsp")||thispath.endsWith("pdf")||thispath.endsWith("htm")))
> {		
> 				sb.append("<url>\n");			
> 				sb.append("<loc>"+BASE_URL+thispath+"</loc>\n");
> 				//DateFormat df =
> 				//DateFormat.getDateInstance();
> 				String niceDate =
> ISO8601FORMAT.format(new Date(f.getDateLastModified()));
> 				sb.append("<lastmod>"+niceDate+"</lastmod>\n");
> 				sb.append("<changefreq>"+changeFrequency+"</changefreq>\n");
> 				sb.append("<priority>"+priority+"</priority>\n");
> 				sb.append("</url>\n");
> 			}
> 		}
> 		ArrayList folders = (ArrayList)
> cmso.getSubFolders(path);
> 		Iterator j = folders.iterator();	
> 		while (j.hasNext()) {
> 			CmsFolder f = (CmsFolder) j.next();
> 			sb.append( recurseTree(cmso,jsp,
> cmso.getSitePath(f) ) );
> 		}
> 	}
> 	catch (CmsException cmsException) {
> 		sb.append("A CMS exception occurred:
> "+cmsException.toString());
> 	
> 	}
> 	return sb.toString();
>
> }
> %>
> <%
>
>  CmsJspActionElement cms = new
> org.opencms.jsp.CmsJspActionElement(pageContext, request, response);
>  CmsObject cmso = cms.getCmsObject();
>  String filename="sitemap.xml";
>  String s_filecontent;
>  cmso.getRequestContext().setCurrentProject(cmso.readProject("Offline"));
> if (cmso.existsResource(filename)) {
>        cmso.lockResource(filename,CmsLock.TEMPORARY);
>         cmso.deleteResource(filename,
> CmsResource.DELETE_PRESERVE_SIBLINGS);
>         if (cmso.existsResource(filename)) {
>                 cmso.unlockResource(filename);
>                 cmso.publishResource(filename);
>         }
> }
>
>
> String url = cms.info("opencms.url");
> int lastSlash = url.indexOf("/",8);
> BASE_URL = url.substring(0,lastSlash);
> s_filecontent=recurseTree(cmso,cms, "/");
> s_filecontent=s_filecontent+"</urlset>\n";
> cmso.createResource(
>         filename,
>         OpenCms.getResourceManager().getResourceType("plain").getTypeId(),
>         s_filecontent.getBytes(),
>         new ArrayList()
> );
> cmso.unlockResource(filename);
> cmso.publishResource(filename);
> %> 
>
> Thanks for helping,
>
>
> --
> Chris Christoph P. U. Kukulies kukulies (at) rwth-aachen.de
>
>   


-- 
 Tim Howland
 th at wdogsystems.com
 http://wdogsystems.com
 




More information about the opencms-dev mailing list