diff --git a/source/test-resources/websites/alfresco/ROOT/media/releases/index.jsp b/source/test-resources/websites/alfresco/ROOT/media/releases/index.jsp new file mode 100644 index 0000000000..5b984aaa28 --- /dev/null +++ b/source/test-resources/websites/alfresco/ROOT/media/releases/index.jsp @@ -0,0 +1,225 @@ + + + + + + + + +<%! +class PressRelease +{ + public final String title; + public final String theAbstract; + public final Date date; + public final String href; + + public PressRelease(String title, String theAbstract, Date d, String href) + { + this.title = title; + this.theAbstract = theAbstract; + this.date = d; + this.href = href; + } +} + +public List getPressReleases(HttpServletRequest request, ServletContext servletContext, JspWriter out) + throws Exception +{ + final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + dbf.setNamespaceAware(true); + dbf.setValidating(false); + final DocumentBuilder db = dbf.newDocumentBuilder(); + + // The real_path will look somethign like this: + // /alfresco.avm/avm.alfresco.localhost/$-1$alfreco-guest-main:/appBase/avm_webapps/my_webapp + // + String real_path = servletContext.getRealPath("/media/releases/content"); + + // The avm_path to the root of the context will look soemthign like this: + // alfreco-guest-main:/appBase/avm_webapps/my_webapp + // + String avm_path = real_path.substring( real_path.indexOf('$', real_path.indexOf('$') + 1) + 1 ); + + AVMRemote avm_remote = AVMFileDirContext.getAVMRemote(); + Map< String, AVMNodeDescriptor> entries = avm_remote.getDirectoryListing(-1, avm_path); + + List result = new LinkedList(); + for ( Map.Entry entry : entries.entrySet() ) + { + String entry_name = entry.getKey(); + AVMNodeDescriptor entry_node = entry.getValue(); + if (entry_node.isFile()) + { + InputStream istream = new AVMRemoteInputStream( avm_remote.getInputHandle( -1, avm_path + '/' + entry_name ), avm_remote ); + try + { + Document d = db.parse(istream); + if ("alfresco:press-release".equals(d.getDocumentElement().getNodeName())) + { + Element t = (Element)d.getElementsByTagName("alfresco:title").item(0); + Element a = (Element)d.getElementsByTagName("alfresco:abstract").item(0); + Element dateEl = (Element)d.getElementsByTagName("alfresco:launch_date").item(0); + Date date = new SimpleDateFormat("yyyy-MM-dd").parse(dateEl.getFirstChild().getNodeValue()); + String href = "/media/releases/content/" + entry_name; + href = href.replaceAll(".xml$", ".shtml"); + result.add(new PressRelease(t.getFirstChild().getNodeValue(), + a.getFirstChild().getNodeValue(), + date, + href)); + } + } + catch (Throwable t) + { + t.printStackTrace(); + } + finally + { + istream.close(); + } + } + } + return result; +} +%> + + + + +Alfresco Press Releases - Open Source Content Management + + + + + + + + + +
+
+ + + +
+ +
+
+
+

Company  |  Contact  |  News  |  Events  |  People

+
+
+
+
+ +
+ + + +

Alfresco Press Releases

+ +<% +List pressReleases = getPressReleases(request, application, out); +for (PressRelease pr : pressReleases) +{ +%> +

<%= pr.title %>

+

<%= DateFormat.getDateInstance(DateFormat.LONG).format(pr.date) %>

<%= pr.theAbstract %>

+<% +} +%> + + + +
+ +
+
+

Press Release Archive

+ +
+
+
+
+ + + +
+ + +