xref: /OpenGrok/opengrok-web/src/main/webapp/rss.jsp (revision 0d40e9d0d07acb46ebe450cbc6042a9705a36e41)
1*0d40e9d0SAdam Hornáček<%--
2*0d40e9d0SAdam Hornáček$Id$
3*0d40e9d0SAdam Hornáček
4*0d40e9d0SAdam HornáčekCDDL HEADER START
5*0d40e9d0SAdam Hornáček
6*0d40e9d0SAdam HornáčekThe contents of this file are subject to the terms of the
7*0d40e9d0SAdam HornáčekCommon Development and Distribution License (the "License").
8*0d40e9d0SAdam HornáčekYou may not use this file except in compliance with the License.
9*0d40e9d0SAdam Hornáček
10*0d40e9d0SAdam HornáčekSee LICENSE.txt included in this distribution for the specific
11*0d40e9d0SAdam Hornáčeklanguage governing permissions and limitations under the License.
12*0d40e9d0SAdam Hornáček
13*0d40e9d0SAdam HornáčekWhen distributing Covered Code, include this CDDL HEADER in each
14*0d40e9d0SAdam Hornáčekfile and include the License file at LICENSE.txt.
15*0d40e9d0SAdam HornáčekIf applicable, add the following below this CDDL HEADER, with the
16*0d40e9d0SAdam Hornáčekfields enclosed by brackets "[]" replaced with your own identifying
17*0d40e9d0SAdam Hornáčekinformation: Portions Copyright [yyyy] [name of copyright owner]
18*0d40e9d0SAdam Hornáček
19*0d40e9d0SAdam HornáčekCDDL HEADER END
20*0d40e9d0SAdam Hornáček
21*0d40e9d0SAdam HornáčekCopyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
22*0d40e9d0SAdam Hornáček
23*0d40e9d0SAdam HornáčekPortions Copyright 2011 Jens Elkner.
24*0d40e9d0SAdam Hornáček
25*0d40e9d0SAdam Hornáček--%><%@page import="
26*0d40e9d0SAdam Hornáčekjava.io.File,
27*0d40e9d0SAdam Hornáčekjava.text.SimpleDateFormat,
28*0d40e9d0SAdam Hornáčekjava.util.Set,
29*0d40e9d0SAdam Hornáček
30*0d40e9d0SAdam Hornáčekorg.opensolaris.opengrok.history.DirectoryHistoryReader,
31*0d40e9d0SAdam Hornáčekorg.opensolaris.opengrok.history.History,
32*0d40e9d0SAdam Hornáčekorg.opensolaris.opengrok.history.HistoryEntry,
33*0d40e9d0SAdam Hornáčekorg.opensolaris.opengrok.history.HistoryGuru,
34*0d40e9d0SAdam Hornáčekorg.opensolaris.opengrok.web.Util,
35*0d40e9d0SAdam Hornáčekorg.opensolaris.opengrok.web.Prefix,
36*0d40e9d0SAdam Hornáčekorg.opensolaris.opengrok.web.PageConfig"
37*0d40e9d0SAdam Hornáček%><%@ page session="false" errorPage="error.jsp"%><%
38*0d40e9d0SAdam Hornáček/* ---------------------- rss.jsp start --------------------- */
39*0d40e9d0SAdam Hornáček{
40*0d40e9d0SAdam Hornáček    PageConfig cfg = PageConfig.get(request);
41*0d40e9d0SAdam Hornáček    cfg.checkSourceRootExistence();
42*0d40e9d0SAdam Hornáček
43*0d40e9d0SAdam Hornáček    String redir = cfg.canProcess();
44*0d40e9d0SAdam Hornáček    if (redir == null || redir.length() > 0) {
45*0d40e9d0SAdam Hornáček        if (redir != null) {
46*0d40e9d0SAdam Hornáček            response.sendRedirect(redir);
47*0d40e9d0SAdam Hornáček        } else {
48*0d40e9d0SAdam Hornáček            response.sendError(HttpServletResponse.SC_NOT_FOUND);
49*0d40e9d0SAdam Hornáček        }
50*0d40e9d0SAdam Hornáček        return;
51*0d40e9d0SAdam Hornáček    }
52*0d40e9d0SAdam Hornáček    cfg.getEnv().setUrlPrefix(request.getContextPath() + Prefix.SEARCH_R + '?');
53*0d40e9d0SAdam Hornáček    String path = cfg.getPath();
54*0d40e9d0SAdam Hornáček    String dtag = cfg.getDefineTagsIndex();
55*0d40e9d0SAdam Hornáček    String ForwardedHost = request.getHeader("X-Forwarded-Host");
56*0d40e9d0SAdam Hornáček    response.setContentType("text/xml");
57*0d40e9d0SAdam Hornáček%><?xml version="1.0"?>
58*0d40e9d0SAdam Hornáček<?xml-stylesheet type="text/xsl" href="<%= request.getContextPath()
59*0d40e9d0SAdam Hornáček    %>/rss.xsl.xml"?>
60*0d40e9d0SAdam Hornáček<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
61*0d40e9d0SAdam Hornáček<channel>
62*0d40e9d0SAdam Hornáček    <title>Changes in <%= path.length() == 0
63*0d40e9d0SAdam Hornáček        ? "Cross Reference"
64*0d40e9d0SAdam Hornáček        : Util.htmlize(cfg.getResourceFile().getName()) %></title>
65*0d40e9d0SAdam Hornáček    <description><%= Util.htmlize(dtag) %></description>
66*0d40e9d0SAdam Hornáček    <language>en</language>
67*0d40e9d0SAdam Hornáček    <copyright>Copyright 2015</copyright>
68*0d40e9d0SAdam Hornáček    <generator>Java</generator><%
69*0d40e9d0SAdam Hornáček    History hist = null;
70*0d40e9d0SAdam Hornáček    String newline = System.getProperty("line.separator");
71*0d40e9d0SAdam Hornáček    if(cfg.isDir()) {
72*0d40e9d0SAdam Hornáček        hist = new DirectoryHistoryReader(cfg.getHistoryDirs()).getHistory();
73*0d40e9d0SAdam Hornáček    } else {
74*0d40e9d0SAdam Hornáček        hist = HistoryGuru.getInstance().getHistory(cfg.getResourceFile());
75*0d40e9d0SAdam Hornáček    }
76*0d40e9d0SAdam Hornáček    if (hist != null) {
77*0d40e9d0SAdam Hornáček        int i = 20;
78*0d40e9d0SAdam Hornáček        for (HistoryEntry entry : hist.getHistoryEntries()) {
79*0d40e9d0SAdam Hornáček            if (i-- <= 0) {
80*0d40e9d0SAdam Hornáček                break;
81*0d40e9d0SAdam Hornáček            }
82*0d40e9d0SAdam Hornáček            if (entry.isActive()) {
83*0d40e9d0SAdam Hornáček    %>
84*0d40e9d0SAdam Hornáček    <item>
85*0d40e9d0SAdam Hornáček        <title><%
86*0d40e9d0SAdam Hornáček            /*
87*0d40e9d0SAdam Hornáček             * Newlines would result in HTML tags inside the 'title' which
88*0d40e9d0SAdam Hornáček             * causes the title to be displayed as 'null'. Print first line
89*0d40e9d0SAdam Hornáček             * of the message. The whole message will be printed in description.
90*0d40e9d0SAdam Hornáček             */
91*0d40e9d0SAdam Hornáček            String replaced = entry.getMessage().split("\n")[0];
92*0d40e9d0SAdam Hornáček        %><%= Util.htmlize(entry.getRevision()) %> - <%= Util.htmlize(replaced) %></title>
93*0d40e9d0SAdam Hornáček        <link><%
94*0d40e9d0SAdam Hornáček            // Play nice in proxy environment by using hostname from the original
95*0d40e9d0SAdam Hornáček            // request to construct the URLs.
96*0d40e9d0SAdam Hornáček            // Will not work well if the scheme or port is different for proxied server
97*0d40e9d0SAdam Hornáček            // and original server. Unfortunately the X-Forwarded-Host does not seem to
98*0d40e9d0SAdam Hornáček            // contain the port number so there is no way around it.
99*0d40e9d0SAdam Hornáček            String requestURL = request.getScheme() + "://";
100*0d40e9d0SAdam Hornáček            if (ForwardedHost != null) {
101*0d40e9d0SAdam Hornáček                requestURL += ForwardedHost;
102*0d40e9d0SAdam Hornáček            } else {
103*0d40e9d0SAdam Hornáček                requestURL += request.getServerName();
104*0d40e9d0SAdam Hornáček                String port = Integer.toString(request.getLocalPort());
105*0d40e9d0SAdam Hornáček                if (!port.isEmpty()) {
106*0d40e9d0SAdam Hornáček                    requestURL += ":" + port;
107*0d40e9d0SAdam Hornáček                }
108*0d40e9d0SAdam Hornáček            }
109*0d40e9d0SAdam Hornáček            requestURL += request.getContextPath();
110*0d40e9d0SAdam Hornáček            requestURL += Prefix.HIST_L + cfg.getPath() + "#" + entry.getRevision();
111*0d40e9d0SAdam Hornáček        %><%= Util.htmlize(requestURL) %></link>
112*0d40e9d0SAdam Hornáček        <description><%
113*0d40e9d0SAdam Hornáček            for (String e : entry.getMessage().split("\n")) {
114*0d40e9d0SAdam Hornáček            %>
115*0d40e9d0SAdam Hornáček            <%= Util.htmlize(e) %><%
116*0d40e9d0SAdam Hornáček            }
117*0d40e9d0SAdam Hornáček            %>
118*0d40e9d0SAdam Hornáček
119*0d40e9d0SAdam Hornáček            List of files:
120*0d40e9d0SAdam Hornáček            <%
121*0d40e9d0SAdam Hornáček            if (cfg.isDir()) {
122*0d40e9d0SAdam Hornáček                Set<String> files = entry.getFiles();
123*0d40e9d0SAdam Hornáček                if (files != null) {
124*0d40e9d0SAdam Hornáček                    for (String ifile : files) {
125*0d40e9d0SAdam Hornáček            %>
126*0d40e9d0SAdam Hornáček            <%= Util.htmlize(ifile) %><%
127*0d40e9d0SAdam Hornáček                    }
128*0d40e9d0SAdam Hornáček                }
129*0d40e9d0SAdam Hornáček            } else {
130*0d40e9d0SAdam Hornáček            %><%= Util.htmlize(path) %><%
131*0d40e9d0SAdam Hornáček            }
132*0d40e9d0SAdam Hornáček        %>
133*0d40e9d0SAdam Hornáček        </description>
134*0d40e9d0SAdam Hornáček        <pubDate><%
135*0d40e9d0SAdam Hornáček            SimpleDateFormat df =
136*0d40e9d0SAdam Hornáček                new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
137*0d40e9d0SAdam Hornáček        %><%= Util.htmlize(df.format(entry.getDate())) %></pubDate>
138*0d40e9d0SAdam Hornáček        <dc:creator><%= Util.htmlize(entry.getAuthor()) %></dc:creator>
139*0d40e9d0SAdam Hornáček    </item>
140*0d40e9d0SAdam Hornáček<%
141*0d40e9d0SAdam Hornáček            }
142*0d40e9d0SAdam Hornáček        }
143*0d40e9d0SAdam Hornáček    }
144*0d40e9d0SAdam Hornáček%>
145*0d40e9d0SAdam Hornáček</channel>
146*0d40e9d0SAdam Hornáček</rss>
147*0d40e9d0SAdam Hornáček<%
148*0d40e9d0SAdam Hornáček}
149*0d40e9d0SAdam Hornáček/* ---------------------- rss.jsp end --------------------- */
150*0d40e9d0SAdam Hornáček%>
151