opensearch.jsp revision 1302
0eb822a1c0c2bea495647510b75f77f0e57633ebcindiCDDL HEADER START
0eb822a1c0c2bea495647510b75f77f0e57633ebcindiThe contents of this file are subject to the terms of the
0eb822a1c0c2bea495647510b75f77f0e57633ebcindiCommon Development and Distribution License (the "License").
0eb822a1c0c2bea495647510b75f77f0e57633ebcindiYou may not use this file except in compliance with the License.
0eb822a1c0c2bea495647510b75f77f0e57633ebcindiSee LICENSE.txt included in this distribution for the specific
0eb822a1c0c2bea495647510b75f77f0e57633ebcindilanguage governing permissions and limitations under the License.
0eb822a1c0c2bea495647510b75f77f0e57633ebcindiWhen distributing Covered Code, include this CDDL HEADER in each
0eb822a1c0c2bea495647510b75f77f0e57633ebcindifile and include the License file at LICENSE.txt.
0eb822a1c0c2bea495647510b75f77f0e57633ebcindiIf applicable, add the following below this CDDL HEADER, with the
0eb822a1c0c2bea495647510b75f77f0e57633ebcindifields enclosed by brackets "[]" replaced with your own identifying
0eb822a1c0c2bea495647510b75f77f0e57633ebcindiinformation: Portions Copyright [yyyy] [name of copyright owner]
0eb822a1c0c2bea495647510b75f77f0e57633ebcindiCDDL HEADER END
0eb822a1c0c2bea495647510b75f77f0e57633ebcindiCopyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
70818f5837509317d1f5dac4d82d7b5a2d547c29tsienPortions Copyright 2011 Jens Elkner.
0eb822a1c0c2bea495647510b75f77f0e57633ebcindi--%><%@page session="false" errorPage="error.jsp" import="
0eb822a1c0c2bea495647510b75f77f0e57633ebcindiinclude file="pageconfig.jspf"
c40d7343efa60b18ad1ceb316eb337caeea79046cindiinclude file="projects.jspf"
c40d7343efa60b18ad1ceb316eb337caeea79046cindi /* ---------------------- opensearch.jsp start --------------------- */
c40d7343efa60b18ad1ceb316eb337caeea79046cindi cfg = PageConfig.get(request);
c40d7343efa60b18ad1ceb316eb337caeea79046cindi // Optimize for URLs up to 128 characters.
c40d7343efa60b18ad1ceb316eb337caeea79046cindi StringBuilder url = new StringBuilder(128);
c40d7343efa60b18ad1ceb316eb337caeea79046cindi String ForwardedHost = request.getHeader("X-Forwarded-Host");
c40d7343efa60b18ad1ceb316eb337caeea79046cindi String scheme = request.getScheme();
c40d7343efa60b18ad1ceb316eb337caeea79046cindi url.append(scheme).append("://");
c40d7343efa60b18ad1ceb316eb337caeea79046cindi // Play nice in proxy environment by using hostname from the original
c40d7343efa60b18ad1ceb316eb337caeea79046cindi // request to construct the URLs.
c40d7343efa60b18ad1ceb316eb337caeea79046cindi // Will not work well if the scheme or port is different for proxied server
c40d7343efa60b18ad1ceb316eb337caeea79046cindi // and original server. Unfortunately the X-Forwarded-Host does not seem to
c40d7343efa60b18ad1ceb316eb337caeea79046cindi // contain the port number so there is no way around it.
c40d7343efa60b18ad1ceb316eb337caeea79046cindi if (ForwardedHost != null) {
0eb822a1c0c2bea495647510b75f77f0e57633ebcindi url.append(ForwardedHost);
0eb822a1c0c2bea495647510b75f77f0e57633ebcindi // Append port if needed.
0eb822a1c0c2bea495647510b75f77f0e57633ebcindi if ((port != 80 && scheme.equals("http")) ||
0eb822a1c0c2bea495647510b75f77f0e57633ebcindi (port != 443 && scheme.equals("https"))) {
0eb822a1c0c2bea495647510b75f77f0e57633ebcindi url.append(':').append(port);
c40d7343efa60b18ad1ceb316eb337caeea79046cindi String imgurl = url + cfg.getCssDir() + "/img/icon.png";
0eb822a1c0c2bea495647510b75f77f0e57633ebcindi /* TODO Bug 11749 ??? */
0eb822a1c0c2bea495647510b75f77f0e57633ebcindi StringBuilder text = new StringBuilder();
0eb822a1c0c2bea495647510b75f77f0e57633ebcindi url.append(request.getContextPath()).append(Prefix.SEARCH_P).append('?');
0eb822a1c0c2bea495647510b75f77f0e57633ebcindi Set<String> projects = cfg.getRequestedProjects();
0eb822a1c0c2bea495647510b75f77f0e57633ebcindi for (String name : projects) {
0eb822a1c0c2bea495647510b75f77f0e57633ebcindi text.append(name).append(',');
0eb822a1c0c2bea495647510b75f77f0e57633ebcindi Util.appendQuery(url, "project", name);
c40d7343efa60b18ad1ceb316eb337caeea79046cindi if (text.length() != 0) {
c40d7343efa60b18ad1ceb316eb337caeea79046cindi%><?xml version="1.0" encoding="UTF-8"?>
c40d7343efa60b18ad1ceb316eb337caeea79046cindi<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
c40d7343efa60b18ad1ceb316eb337caeea79046cindi <ShortName>OpenGrok <%= text.toString() %></ShortName>
c40d7343efa60b18ad1ceb316eb337caeea79046cindi <Description>Search in OpenGrok <%= text.toString() %></Description>
c40d7343efa60b18ad1ceb316eb337caeea79046cindi <InputEncoding>UTF-8</InputEncoding>
c40d7343efa60b18ad1ceb316eb337caeea79046cindi <Image height="16" width="16" type="image/png"><%= imgurl %></Image>
c40d7343efa60b18ad1ceb316eb337caeea79046cindi<%-- <Url type="application/x-suggestions+json" template="suggestionURL"/>--%>
c40d7343efa60b18ad1ceb316eb337caeea79046cindi <Url template="<%= url.toString() %>&q={searchTerms}" type="text/html"/>
c40d7343efa60b18ad1ceb316eb337caeea79046cindi</OpenSearchDescription>
0eb822a1c0c2bea495647510b75f77f0e57633ebcindi/* ---------------------- opensearch.jsp end --------------------- */