rss.jsp revision 17b343cecb69da82215b124f39fed80167a6f2bd
cd348e325366620fe047edcc849e3c9424828599Peter Bray<%--
cd348e325366620fe047edcc849e3c9424828599Peter BrayCDDL HEADER START
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco
cd348e325366620fe047edcc849e3c9424828599Peter BrayThe contents of this file are subject to the terms of the
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayCommon Development and Distribution License (the "License").
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir KotalYou may not use this file except in compliance with the License.
983523cf73bc85cce6282cb5aa78b60f6bcd959fLubos Kosco
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BraySee LICENSE.txt included in this distribution for the specific
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Braylanguage governing permissions and limitations under the License.
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray
d20bb899e2e6c692130af57903cb0f909e7bec2aGerbrand van DieijenWhen distributing Covered Code, include this CDDL HEADER in each
983523cf73bc85cce6282cb5aa78b60f6bcd959fLubos Koscofile and include the License file at LICENSE.txt.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayIf applicable, add the following below this CDDL HEADER, with the
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayfields enclosed by brackets "[]" replaced with your own identifying
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayinformation: Portions Copyright [yyyy] [name of copyright owner]
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter BrayCDDL HEADER END
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayCopyright 2005 Sun Microsystems, Inc. All rights reserved.
d2a02e104622a26dd90fa88f4f17188f2039809fPeter BrayUse is subject to license terms.
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayident "@(#)rss.jsp 1.2 05/12/02 SMI"
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray--%><%@ page import = "javax.servlet.*,
d961aa46ea0d50fed47802497e45226b1965b12dVladimir Kotaljava.lang.*,
d961aa46ea0d50fed47802497e45226b1965b12dVladimir Kotaljavax.servlet.http.*,
d961aa46ea0d50fed47802497e45226b1965b12dVladimir Kotaljava.util.*,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayjava.io.*,
983523cf73bc85cce6282cb5aa78b60f6bcd959fLubos Koscoorg.opensolaris.opengrok.analysis.*,
983523cf73bc85cce6282cb5aa78b60f6bcd959fLubos Koscoorg.opensolaris.opengrok.web.*,
983523cf73bc85cce6282cb5aa78b60f6bcd959fLubos Koscoorg.opensolaris.opengrok.history.*,
983523cf73bc85cce6282cb5aa78b60f6bcd959fLubos Koscoorg.opensolaris.opengrok.index.IgnoredNames,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayorg.opensolaris.opengrok.configuration.*,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayorg.apache.lucene.analysis.*,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayorg.apache.lucene.document.*,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayorg.apache.lucene.index.*,
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Brayorg.apache.lucene.search.*,
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotalorg.apache.lucene.queryParser.*,
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotaljava.text.*"
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray%><%@ page session="false" %><%@ page errorPage="error.jsp"%><%
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter BrayString context = request.getContextPath();
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir KotalString servlet = request.getServletPath();
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir KotalString reqURI = request.getRequestURI();
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir KotalString path = request.getPathInfo();
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotalif(path == null) path = "";
9dc24f2da404ab474e38fc4d428e5717dc9bcee4Vladimir KotalRuntimeEnvironment env = RuntimeEnvironment.getInstance();
9dc24f2da404ab474e38fc4d428e5717dc9bcee4Vladimir Kotalenv.setUrlPrefix(context + Constants.searchR+"?");
9dc24f2da404ab474e38fc4d428e5717dc9bcee4Vladimir Kotalenv.register();
9dc24f2da404ab474e38fc4d428e5717dc9bcee4Vladimir KotalString rawSource = env.getSourceRootPath();
9dc24f2da404ab474e38fc4d428e5717dc9bcee4Vladimir KotalString resourcePath = rawSource + path;
9dc24f2da404ab474e38fc4d428e5717dc9bcee4Vladimir KotalFile resourceFile = new File(resourcePath);
9dc24f2da404ab474e38fc4d428e5717dc9bcee4Vladimir KotalresourcePath = resourceFile.getAbsolutePath();
9dc24f2da404ab474e38fc4d428e5717dc9bcee4Vladimir Kotalboolean valid;
9dc24f2da404ab474e38fc4d428e5717dc9bcee4Vladimir KotalString basename = resourceFile.getName();
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotalif("/".equals(path)) {
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotal basename = "Cross Reference";
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotal}
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotalboolean isDir = false;
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir KotalString parent = null;
6ce0623fa4ef95af9d77700a1c9c19ec1a919326Guillaume SmetString parentBasename = resourceFile.getParentFile().getName();
6ce0623fa4ef95af9d77700a1c9c19ec1a919326Guillaume SmetIgnoredNames ignoredNames = env.getIgnoredNames();
56c25decc0427c204cd35856e521ddf28337e75dLubos Koscoif (resourcePath.length() < rawSource.length()
56c25decc0427c204cd35856e521ddf28337e75dLubos Kosco|| !resourcePath.startsWith(rawSource)
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotal|| !resourceFile.canRead()
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotal|| ignoredNames.ignore(basename) || ignoredNames.ignore(parentBasename)) {
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotal valid = false;
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotal response.sendError(404);
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotal return;
83439b4ed8fe40097dc3f2c05168d26bd7926159Vladimir Kotal} else {
83439b4ed8fe40097dc3f2c05168d26bd7926159Vladimir Kotal valid = true;
83439b4ed8fe40097dc3f2c05168d26bd7926159Vladimir Kotal path = resourcePath.substring(rawSource.length());
3ba66fbb56ef22f183da783a1b2718280c357a4eStanislav Kozina if (File.separatorChar == '\\') {
3ba66fbb56ef22f183da783a1b2718280c357a4eStanislav Kozina path = path.replace('\\','/');
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotal }
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotal isDir = resourceFile.isDirectory();
983523cf73bc85cce6282cb5aa78b60f6bcd959fLubos Kosco if (isDir && !reqURI.endsWith("/")) {
983523cf73bc85cce6282cb5aa78b60f6bcd959fLubos Kosco response.sendRedirect(context + servlet + path +"/");
983523cf73bc85cce6282cb5aa78b60f6bcd959fLubos Kosco } else {
983523cf73bc85cce6282cb5aa78b60f6bcd959fLubos Kosco String dtag = "";
983523cf73bc85cce6282cb5aa78b60f6bcd959fLubos Kosco
bc5565fc58603964988b42b6aee40e246f35d94fVladimir Kotal try {
9132ad6a7ba5525fd1a6ccd4f4bcb497385c8597ralphmayr EftarFileReader ef = new EftarFileReader(env.getDataRootPath() + "/index/dtags.eftar");
9132ad6a7ba5525fd1a6ccd4f4bcb497385c8597ralphmayr dtag = ef.get(path);
9132ad6a7ba5525fd1a6ccd4f4bcb497385c8597ralphmayr ef.close();
9132ad6a7ba5525fd1a6ccd4f4bcb497385c8597ralphmayr } catch (Exception e) {
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray dtag = "";
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray }
c577d2f6c082eaff9af5bc997d12f3d3bcef537cPeter Bray int lastSlash = path.lastIndexOf('/');
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray parent = (lastSlash != -1) ? path.substring(0, lastSlash) : "";
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco int pLastSlash = parent.lastIndexOf('/');
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotal parentBasename = pLastSlash != -1 ? parent.substring(pLastSlash+1) : parent;
425278cfacbc73f1e955ab6016f206fc5ed93ccbVladimir Kotal response.setContentType("text/xml");
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotal Date start = new Date();
cd348e325366620fe047edcc849e3c9424828599Peter Bray%><?xml version="1.0"?>
3b0448fdd830b8d04c6a71511e5d26a4fc3b5b80Lubos Kosco<?xml-stylesheet type="text/xsl" href="<%=context%>/rss.xsl.xml"?>
cd348e325366620fe047edcc849e3c9424828599Peter Bray<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
cd348e325366620fe047edcc849e3c9424828599Peter Bray<channel>
cd348e325366620fe047edcc849e3c9424828599Peter Bray <title>Changes in <%=Util.htmlize(basename)%></title>
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotal <link><%=Util.htmlize(request.getRequestURL())%></link>
6c8465e3b4611cb632cba9b0572e3e3737c8c341Vladimir Kotal <description><%=Util.htmlize(dtag)%></description>
43dac746513591adbd09bc4f417feb385f4fd87eVladimir Kotal <language>en</language>
fbf97ea1786d1e25add88bbfb91810170473bc9fLubos Kosco <copyright>Copyright 2005</copyright>
3a4816d2417e1abe89a913616de36f200793bea3Vladimir Kotal <generator>Java</generator>
fbf97ea1786d1e25add88bbfb91810170473bc9fLubos Kosco <%
610915d59310c9aba810740e858ba64c5e3e6a2fVladimir Kotal Format df = new SimpleDateFormat("dd-MMM-yyyy");
527d116ec0f031818982101f4475298b930d515bVladimir Kotal History hist = null;
fbf97ea1786d1e25add88bbfb91810170473bc9fLubos Kosco if(isDir) {
fbf97ea1786d1e25add88bbfb91810170473bc9fLubos Kosco String[] apaths = request.getParameterValues("also");
fbf97ea1786d1e25add88bbfb91810170473bc9fLubos Kosco String apath = path;
fbf97ea1786d1e25add88bbfb91810170473bc9fLubos Kosco if (apaths!= null && apaths.length>0) {
fbf97ea1786d1e25add88bbfb91810170473bc9fLubos Kosco StringBuilder paths = new StringBuilder(path);
f21b682cd9b414738a4f5a38b56f6682e537e1d2Trond Norbye for(int i=0; i< apaths.length; i++) {
3b0448fdd830b8d04c6a71511e5d26a4fc3b5b80Lubos Kosco paths.append(' ');
3b0448fdd830b8d04c6a71511e5d26a4fc3b5b80Lubos Kosco paths.append(apaths[i]);
cd348e325366620fe047edcc849e3c9424828599Peter Bray }
cd348e325366620fe047edcc849e3c9424828599Peter Bray apath = paths.toString();
cd348e325366620fe047edcc849e3c9424828599Peter Bray }
cd348e325366620fe047edcc849e3c9424828599Peter Bray hist = new DirectoryHistoryReader(apath).getHistory();
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray } else {
cd348e325366620fe047edcc849e3c9424828599Peter Bray File f = new File(rawSource + parent, basename);
c276b1ec9722ee95a86a4a381b39c5f405fc1cc4Vladimir Kotal hist = HistoryGuru.getInstance().getHistory(f);
c276b1ec9722ee95a86a4a381b39c5f405fc1cc4Vladimir Kotal }
c276b1ec9722ee95a86a4a381b39c5f405fc1cc4Vladimir Kotal if (hist != null) {
c276b1ec9722ee95a86a4a381b39c5f405fc1cc4Vladimir Kotal int i = 20;
c276b1ec9722ee95a86a4a381b39c5f405fc1cc4Vladimir Kotal for (HistoryEntry entry : hist.getHistoryEntries()) {
c276b1ec9722ee95a86a4a381b39c5f405fc1cc4Vladimir Kotal if (i-- <= 0) break;
2cf31ec93bd5d8a2efeab511ce051da51e69aedaLubos Kosco String rev = entry.getRevision();
c276b1ec9722ee95a86a4a381b39c5f405fc1cc4Vladimir Kotal if (entry.isActive()) {
c276b1ec9722ee95a86a4a381b39c5f405fc1cc4Vladimir Kotal%>
2cf31ec93bd5d8a2efeab511ce051da51e69aedaLubos Kosco<item>
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco <title><%=Util.htmlize(entry.getMessage())%></title>
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray <description><%
5a0ed1213a40c9ab7c990b442b77455ee27bc799Vladimir Kotal if(isDir) {
5a0ed1213a40c9ab7c990b442b77455ee27bc799Vladimir Kotal Set<String> files = entry.getFiles();
d280c5e286f5b98be13237f52281ae5afdcf51b9Peter Bray if(files != null) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray for (String ifile : files) {
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray %><%=Util.htmlize(ifile)%>
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray<%
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray } else {
cd348e325366620fe047edcc849e3c9424828599Peter Bray %><%=Util.htmlize(path)%> - <%=Util.htmlize(entry.getRevision())%><%
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
cd348e325366620fe047edcc849e3c9424828599Peter Bray %></description>
cd348e325366620fe047edcc849e3c9424828599Peter Bray <pubDate><%=Util.htmlize(entry.getDate().toString())%></pubDate>
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray <dc:creator><%=Util.htmlize(entry.getAuthor())%></dc:creator>
cd348e325366620fe047edcc849e3c9424828599Peter Bray</item>
cd348e325366620fe047edcc849e3c9424828599Peter Bray<%
cd348e325366620fe047edcc849e3c9424828599Peter Bray }
cd348e325366620fe047edcc849e3c9424828599Peter Bray }
cd348e325366620fe047edcc849e3c9424828599Peter Bray }
cd348e325366620fe047edcc849e3c9424828599Peter Bray%></channel></rss>
cd348e325366620fe047edcc849e3c9424828599Peter Bray<%
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray }
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray}
d2a02e104622a26dd90fa88f4f17188f2039809fPeter Bray%>
0ca9a2c194523c517c3aafe5758e217ac88d6baaLubos Kosco