list.jsp revision c23e82b612acd5e947c164114377578116f6d298
f2472b79d241967fa28f8284470b1c5cafee7b12wrowe<%--
bf52162f2d05c1fb1a107c7ef108de73f739b3edpquernaCDDL HEADER START
84fbf855118f318dd5e511d8e5b902cecc1177c0jim
84fbf855118f318dd5e511d8e5b902cecc1177c0jimThe contents of this file are subject to the terms of the
0ed19acadd3d3dd593759173d87d2243e97914e2sfCommon Development and Distribution License (the "License").
0ed19acadd3d3dd593759173d87d2243e97914e2sfYou may not use this file except in compliance with the License.
0ed19acadd3d3dd593759173d87d2243e97914e2sf
0ed19acadd3d3dd593759173d87d2243e97914e2sfSee LICENSE.txt included in this distribution for the specific
df419be6d7d4b68823efa05722375552af49c2b6minfrinlanguage governing permissions and limitations under the License.
df419be6d7d4b68823efa05722375552af49c2b6minfrin
df419be6d7d4b68823efa05722375552af49c2b6minfrinWhen distributing Covered Code, include this CDDL HEADER in each
df419be6d7d4b68823efa05722375552af49c2b6minfrinfile and include the License file at LICENSE.txt.
c03e31374e50a227cb554a0f1d4a9056ce80d99asfIf applicable, add the following below this CDDL HEADER, with the
c03e31374e50a227cb554a0f1d4a9056ce80d99asffields enclosed by brackets "[]" replaced with your own identifying
c03e31374e50a227cb554a0f1d4a9056ce80d99asfinformation: Portions Copyright [yyyy] [name of copyright owner]
40b22d3b20454959fe51fdc89907908d77701078minfrin
40b22d3b20454959fe51fdc89907908d77701078minfrinCDDL HEADER END
40b22d3b20454959fe51fdc89907908d77701078minfrin
b4a00883f358625923365ca1560c96edec172a52sfCopyright 2005 Sun Microsystems, Inc. All rights reserved.
b4a00883f358625923365ca1560c96edec172a52sfUse is subject to license terms.
b4a00883f358625923365ca1560c96edec172a52sf
b4a00883f358625923365ca1560c96edec172a52sfident "%Z%%M% %I% %E% SMI"
87af9ffc3a42633fe12e11a0ff77bc099ecdca82sf
87af9ffc3a42633fe12e11a0ff77bc099ecdca82sf--%><%@ page import = "javax.servlet.*,
87af9ffc3a42633fe12e11a0ff77bc099ecdca82sfjava.lang.*,
f58bb3da705eb7ec926f4883597fc2eb1336a360minfrinjavax.servlet.http.*,
f58bb3da705eb7ec926f4883597fc2eb1336a360minfrinjava.util.*,
f58bb3da705eb7ec926f4883597fc2eb1336a360minfrinjava.io.*,
f58bb3da705eb7ec926f4883597fc2eb1336a360minfrinjava.text.*,
f58bb3da705eb7ec926f4883597fc2eb1336a360minfrinorg.opensolaris.opengrok.analysis.*,
be192cefa381d5bae6868034687471754cb43175sforg.opensolaris.opengrok.index.*,
be192cefa381d5bae6868034687471754cb43175sforg.opensolaris.opengrok.analysis.FileAnalyzer.Genre,
be192cefa381d5bae6868034687471754cb43175sforg.opensolaris.opengrok.web.*,
be192cefa381d5bae6868034687471754cb43175sforg.opensolaris.opengrok.history.*
f4a0825e91eec135b5e41c697439e9a13014fa2cminfrin"
f4a0825e91eec135b5e41c697439e9a13014fa2cminfrin%><%@include file="mast.jsp"%><%
f4a0825e91eec135b5e41c697439e9a13014fa2cminfrinString rev = null;
f4a0825e91eec135b5e41c697439e9a13014fa2cminfrinif(!isDir && ef != null) {
5876f43a746f688a32b7201bced8591ddf19bd43minfrin try {
5876f43a746f688a32b7201bced8591ddf19bd43minfrin ef.close();
5876f43a746f688a32b7201bced8591ddf19bd43minfrin } catch (IOException e) {
5876f43a746f688a32b7201bced8591ddf19bd43minfrin }
4aef34911af88f96c5b6d9b71a550a5a97bbc0b6minfrin ef = null;
4aef34911af88f96c5b6d9b71a550a5a97bbc0b6minfrin}
4aef34911af88f96c5b6d9b71a550a5a97bbc0b6minfrin
4aef34911af88f96c5b6d9b71a550a5a97bbc0b6minfrinif (valid) {
4aef34911af88f96c5b6d9b71a550a5a97bbc0b6minfrin if (isDir) {
4cefc38158672f5de8119886d9754cf0609a9371minfrin// If requesting a Directory listing -------------
4cefc38158672f5de8119886d9754cf0609a9371minfrin DirectoryListing dl = new DirectoryListing(IgnoredNames.ignore, ef);
4cefc38158672f5de8119886d9754cf0609a9371minfrin String[] files = resourceFile.list();
4cefc38158672f5de8119886d9754cf0609a9371minfrin if (files != null) {
4cefc38158672f5de8119886d9754cf0609a9371minfrin Arrays.sort(files, String.CASE_INSENSITIVE_ORDER);
11d3c510dca5b5178ad4739ffc1567ef2155bda9minfrin ArrayList readMes = dl.listTo(resourceFile, out, path, files);
11d3c510dca5b5178ad4739ffc1567ef2155bda9minfrin if(readMes != null && readMes.size() > 0) {
11d3c510dca5b5178ad4739ffc1567ef2155bda9minfrin File xdir = new File(getServletContext().getInitParameter("DATA_ROOT") + "/xref" + path);
d974a1624c0bb4f1c2e8b36fcf8ba1f12284ed8dsf if(xdir.exists() && xdir.isDirectory()) {
d974a1624c0bb4f1c2e8b36fcf8ba1f12284ed8dsf char[] buf = new char[8192];
d974a1624c0bb4f1c2e8b36fcf8ba1f12284ed8dsf for(int i = 0; i< readMes.size(); i++) {
1a8c329935111a5059363efe927d631371b78414minfrin try {
1a8c329935111a5059363efe927d631371b78414minfrin BufferedReader br = new BufferedReader(new FileReader(new File(xdir, (String)readMes.get(i))));
fac37c9794a18c24d187f4e0f97a9476c4344118minfrin int len = 0;
fac37c9794a18c24d187f4e0f97a9476c4344118minfrin %><h3><%=(String)readMes.get(i)%></h3><div id="src"><pre><%
fac37c9794a18c24d187f4e0f97a9476c4344118minfrin while((len = br.read(buf)) > 0) {
fc58f0ff708564b67cd578c626b6500d1cd63a51sf out.write(buf, 0, len);
fc58f0ff708564b67cd578c626b6500d1cd63a51sf }
fc58f0ff708564b67cd578c626b6500d1cd63a51sf %></pre></div><%
fc58f0ff708564b67cd578c626b6500d1cd63a51sf br.close();
fc58f0ff708564b67cd578c626b6500d1cd63a51sf } catch(IOException e) {
fc58f0ff708564b67cd578c626b6500d1cd63a51sf }
4e5fe1d203ddf3956a77be3c797c01fd4be8b211sf }
4e5fe1d203ddf3956a77be3c797c01fd4be8b211sf }
4e5fe1d203ddf3956a77be3c797c01fd4be8b211sf }
dcb4802d9ea9fc4ba89671e8f8faa70c9535b202minfrin }
dcb4802d9ea9fc4ba89671e8f8faa70c9535b202minfrin } else if ((rev = request.getParameter("r")) != null && !rev.equals("")) {
dcb4802d9ea9fc4ba89671e8f8faa70c9535b202minfrin// Else if requesting a previous revision -------------
dcb4802d9ea9fc4ba89671e8f8faa70c9535b202minfrin if(noHistory) {
dcb4802d9ea9fc4ba89671e8f8faa70c9535b202minfrin response.sendError(404, "Revision not found");
ce4dc40a4e87991087488f70d96d3447d7557294sf } else if (rev.matches("^[0-9]+(\\.[0-9]+)*$")) {
ce4dc40a4e87991087488f70d96d3447d7557294sf Class a = AnalyzerGuru.find(basename);
0119f1301a880cf39c0aad0fa2a77240af964691sf Genre g = AnalyzerGuru.getGenre(a);
ce4dc40a4e87991087488f70d96d3447d7557294sf if (g == Genre.PLAIN|| g == Genre.HTML || g == null) {
9db0b0ee6ffade769db57b37a06b3f4849b5d367minfrin InputStream in = null;
9db0b0ee6ffade769db57b37a06b3f4849b5d367minfrin try{
9db0b0ee6ffade769db57b37a06b3f4849b5d367minfrin in = HistoryGuru.getInstance().getRevision(resourceFile.getParent(), basename, rev);
9db0b0ee6ffade769db57b37a06b3f4849b5d367minfrin } catch (Exception e) {
033d82412cc4af9d939b7e1645425b9e7f4ebf60minfrin response.sendError(404, "Revision not found");
033d82412cc4af9d939b7e1645425b9e7f4ebf60minfrin }
033d82412cc4af9d939b7e1645425b9e7f4ebf60minfrin if(in != null) {
033d82412cc4af9d939b7e1645425b9e7f4ebf60minfrin try {
033d82412cc4af9d939b7e1645425b9e7f4ebf60minfrin if (g == null) {
1b390add6886fb1c0acdea82be0ef0920f1158casf a = AnalyzerGuru.find(in);
1b390add6886fb1c0acdea82be0ef0920f1158casf g = AnalyzerGuru.getGenre(a);
1b390add6886fb1c0acdea82be0ef0920f1158casf }
5fd471ec540a088d143a223096d35661bf87c15btrawick if (g == Genre.DATA || g == Genre.XREFABLE || g == null) {
5fd471ec540a088d143a223096d35661bf87c15btrawick %> <div id="src">Binary file [Click <a href="<%=context%>/raw<%=path%>?r=<%=rev%>">here</a> to download] </div><%
5fd471ec540a088d143a223096d35661bf87c15btrawick } else {
f2472b79d241967fa28f8284470b1c5cafee7b12wrowe %><div id="src"><span class="pagetitle"><%=basename%> revision <%=rev%> </span><pre>
f2472b79d241967fa28f8284470b1c5cafee7b12wrowe<%
f2472b79d241967fa28f8284470b1c5cafee7b12wroweif (g == Genre.PLAIN) {
f2472b79d241967fa28f8284470b1c5cafee7b12wrowe System.setProperty("urlPrefix", context+"/s?");
f2472b79d241967fa28f8284470b1c5cafee7b12wrowe AnalyzerGuru.writeXref(a, in, out);
f2472b79d241967fa28f8284470b1c5cafee7b12wrowe} else if (g == Genre.IMAGE) {
c9201c790435060b1322d86949183085ca5f6c0cwrowe %><img src="<%=context%>/raw<%=path%>?r=<%=rev%>"/><%
c9201c790435060b1322d86949183085ca5f6c0cwrowe} else if (g == Genre.HTML) {
c9201c790435060b1322d86949183085ca5f6c0cwrowe char[] buf = new char[8192];
c9201c790435060b1322d86949183085ca5f6c0cwrowe Reader br = new InputStreamReader(in);
c9201c790435060b1322d86949183085ca5f6c0cwrowe int len = 0;
c9201c790435060b1322d86949183085ca5f6c0cwrowe while((len = br.read(buf)) > 0) {
38bd9dba7627c6b2f331cd0731c272ee6bd876b1wrowe out.write(buf, 0, len);
38bd9dba7627c6b2f331cd0731c272ee6bd876b1wrowe }
38bd9dba7627c6b2f331cd0731c272ee6bd876b1wrowe} else {
38bd9dba7627c6b2f331cd0731c272ee6bd876b1wrowe %> Click <a href="<%=context%>/raw<%=path%>?r=<%=rev%>">download <%=basename%></a><%
c1ba97f41a4526d84fb7a1596afe3dd11e065a2cminfrin}
c1ba97f41a4526d84fb7a1596afe3dd11e065a2cminfrin }
c1ba97f41a4526d84fb7a1596afe3dd11e065a2cminfrin } catch (IOException e) {
c1ba97f41a4526d84fb7a1596afe3dd11e065a2cminfrin %> <h3 class="error">IO Error</h3> <%
c1ba97f41a4526d84fb7a1596afe3dd11e065a2cminfrin }
97cc46935ec496b83fef9d6feb094d706c895b3bsf %></pre></div><%
4ed33a14c26d78bbe6bd0b9d5091cdb184e348basf in.close();
4ed33a14c26d78bbe6bd0b9d5091cdb184e348basf } else {
4ed33a14c26d78bbe6bd0b9d5091cdb184e348basf %> <h3 class="error">Error reading file</h3> <%
97cc46935ec496b83fef9d6feb094d706c895b3bsf }
72e3829dbd019a63b1091987fc6e7b1c028b089cminfrin
72e3829dbd019a63b1091987fc6e7b1c028b089cminfrin } else if(g == Genre.IMAGE) {
72e3829dbd019a63b1091987fc6e7b1c028b089cminfrin %><div id="src"><img src="<%=context%>/raw<%=path%>?r=<%=rev%>"/></div><%
1081aff66582e2cac722fb3b6f09da4f524b5962minfrin } else {
1081aff66582e2cac722fb3b6f09da4f524b5962minfrin %><div id="src"> Binary file [Click <a href="<%=context%>/raw<%=path%>?r=<%=rev%>">here</a> to download] </div><%
1081aff66582e2cac722fb3b6f09da4f524b5962minfrin }
1081aff66582e2cac722fb3b6f09da4f524b5962minfrin
9f0c32ae318f33c93a47d83f4709242c18339bbcminfrin } else {
9f0c32ae318f33c93a47d83f4709242c18339bbcminfrin %><h3 class="error">Error: Invalid Revision Number!</h3><%
9f0c32ae318f33c93a47d83f4709242c18339bbcminfrin }
9f0c32ae318f33c93a47d83f4709242c18339bbcminfrin } else {
9474e446514b06765775eb0c1ec6645e2c5e50f6minfrin// requesting cross referenced file -------------
9474e446514b06765775eb0c1ec6645e2c5e50f6minfrin
9474e446514b06765775eb0c1ec6645e2c5e50f6minfrin String xrefSource = getServletContext().getInitParameter("DATA_ROOT") + "/xref";
9f0c32ae318f33c93a47d83f4709242c18339bbcminfrin String resourceXFile = xrefSource + path;
b7557ab9828d2017224a12968f82c3118b6a8c0aminfrin File xrefFile = new File(resourceXFile);
b7557ab9828d2017224a12968f82c3118b6a8c0aminfrin if(xrefFile.exists()) {
b7557ab9828d2017224a12968f82c3118b6a8c0aminfrin char[] buf = new char[8192];
b7557ab9828d2017224a12968f82c3118b6a8c0aminfrin BufferedReader br = new BufferedReader(new FileReader(resourceXFile));
b7557ab9828d2017224a12968f82c3118b6a8c0aminfrin int len = 0;
b7557ab9828d2017224a12968f82c3118b6a8c0aminfrin %><div id="src"><pre><%
9474e446514b06765775eb0c1ec6645e2c5e50f6minfrin while((len = br.read(buf)) > 0) {
9474e446514b06765775eb0c1ec6645e2c5e50f6minfrin out.write(buf, 0, len);
9474e446514b06765775eb0c1ec6645e2c5e50f6minfrin }
b7557ab9828d2017224a12968f82c3118b6a8c0aminfrin %></pre></div><%
e302f38fd646764ce1a1e1c578d794aef514a9e5sf br.close();
e302f38fd646764ce1a1e1c578d794aef514a9e5sf } else {
e302f38fd646764ce1a1e1c578d794aef514a9e5sf BufferedInputStream bin = new BufferedInputStream(new FileInputStream(resourceFile));
b32d756dae79045a9bc90e0d0b85582f6f28eaf3sf Class a = AnalyzerGuru.find(basename);
e302f38fd646764ce1a1e1c578d794aef514a9e5sf Genre g = AnalyzerGuru.getGenre(a);
9c233808c898095865fcc0a2dc1cf594d0d8faf3sf if(g == null) {
9c233808c898095865fcc0a2dc1cf594d0d8faf3sf a = AnalyzerGuru.find(bin);
3b41ccdaa163f4e900bbf8a7aa6a366df033822dminfrin g = AnalyzerGuru.getGenre(a);
3b41ccdaa163f4e900bbf8a7aa6a366df033822dminfrin }
3b41ccdaa163f4e900bbf8a7aa6a366df033822dminfrin if (g == Genre.IMAGE) {
3b41ccdaa163f4e900bbf8a7aa6a366df033822dminfrin %><div id="src"><img src="<%=context%>/raw<%=path%>"/></div><%
3b41ccdaa163f4e900bbf8a7aa6a366df033822dminfrin } else if( g == Genre.HTML) {
28587db43bc4bea96a36fbcffdd967e7b422bb97minfrin char[] buf = new char[8192];
28587db43bc4bea96a36fbcffdd967e7b422bb97minfrin Reader br = new InputStreamReader(bin);
28587db43bc4bea96a36fbcffdd967e7b422bb97minfrin int len = 0;
28587db43bc4bea96a36fbcffdd967e7b422bb97minfrin while((len = br.read(buf)) > 0) {
5a2dcc476c33985b7681aa72256bcd7266057eddsf out.write(buf, 0, len);
5a2dcc476c33985b7681aa72256bcd7266057eddsf }
5a2dcc476c33985b7681aa72256bcd7266057eddsf } else if(g == Genre.PLAIN) {
e08076ca56e6cb68b30846b9e9339061058aae6dpoirier %><div id="src"><pre><%
e08076ca56e6cb68b30846b9e9339061058aae6dpoirier System.setProperty("urlPrefix", context+"/s?");
e08076ca56e6cb68b30846b9e9339061058aae6dpoirier AnalyzerGuru.writeXref(a, bin, out);
e08076ca56e6cb68b30846b9e9339061058aae6dpoirier %></pre></div><%
e08076ca56e6cb68b30846b9e9339061058aae6dpoirier } else {
e08076ca56e6cb68b30846b9e9339061058aae6dpoirier %> Click <a href="<%=context%>/raw<%=path%>">download <%=basename%></a><%
e08076ca56e6cb68b30846b9e9339061058aae6dpoirier }
e08076ca56e6cb68b30846b9e9339061058aae6dpoirier }
f3a19422957c2e9eb827c8e38e5982f678591aa5minfrin }
b7a2f855b5e31abc24dab2eef28e9e2f985ae25brpluem%><%@include file="foot.html"%><%
b7a2f855b5e31abc24dab2eef28e9e2f985ae25brpluem}
fa1c7ce09927decc1eecd1e9a35cc5331078a052covenerif(ef != null) {
fa1c7ce09927decc1eecd1e9a35cc5331078a052covener try {
fa1c7ce09927decc1eecd1e9a35cc5331078a052covener ef.close();
84fbf855118f318dd5e511d8e5b902cecc1177c0jim } catch (IOException e) {
ac45a43afbf38aa4a91c1402c6beef6ef8a2696dniq }
ac45a43afbf38aa4a91c1402c6beef6ef8a2696dniq}
ac45a43afbf38aa4a91c1402c6beef6ef8a2696dniq%>
ac45a43afbf38aa4a91c1402c6beef6ef8a2696dniq