1 /*
2 * Copyright (c) 2004, Henri Yandell
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or
6 * without modification, are permitted provided that the
7 * following conditions are met:
8 *
9 * + Redistributions of source code must retain the above copyright notice,
10 * this list of conditions and the following disclaimer.
11 *
12 * + Redistributions in binary form must reproduce the above copyright notice,
13 * this list of conditions and the following disclaimer in the documentation
14 * and/or other materials provided with the distribution.
15 *
16 * + Neither the name of OSJava nor the names of its contributors
17 * may be used to endorse or promote products derived from this software
18 * without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 * POSSIBILITY OF SUCH DAMAGE.
31 */
32
33 package org.osjava.taglib.trail;
34
35 import java.net.URL;
36 import java.net.MalformedURLException;
37
38 import java.io.IOException;
39 import java.io.StringWriter;
40
41 import javax.servlet.http.HttpServletRequest;
42
43 import javax.servlet.jsp.JspException;
44 import javax.servlet.jsp.JspTagException;
45 import javax.servlet.jsp.JspWriter;
46 import javax.servlet.jsp.tagext.TagSupport;
47
48 // <trail:push url="listMenu.jsp" label="Menu"/>
49 // <trail:push label="Menu"/>
50 public class PushTag extends TagSupport {
51
52 private String url;
53 private String label;
54
55 public PushTag() {
56 }
57
58 public String getLabel() { return this.label; }
59 public void setLabel(String label) { this.label = label; }
60
61 public String getUrl() { return this.url; }
62 public void setUrl(String url) { this.url = url; }
63
64 public int doEndTag() throws JspException {
65 BreadCrumbs breadcrumbs = JspUtils.getBreadCrumbs(pageContext);
66 HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
67
68 String uri = this.url;
69 if(this.url == null) {
70 Object requestUri = request.getAttribute("javax.servlet.forward.request_uri");
71 if(requestUri != null) {
72 uri = ""+requestUri;
73 Object queryString = request.getAttribute("javax.servlet.forward.query_string");
74 if(queryString != null) {
75 uri += "?" + queryString;
76 }
77 } else {
78 uri = request.getRequestURI();
79 if(request.getQueryString() != null) {
80 uri += "?" + request.getQueryString();
81 }
82 }
83 }
84
85 String referer = request.getHeader("Referer");
86
87 // check if referer is from the same machine
88 // ...
89
90 // strip out the url part
91 if(referer != null) {
92 try {
93 URL url = new URL(referer);
94 referer = url.getFile();
95 } catch(MalformedURLException murle) {
96 referer = null;
97 }
98 }
99
100 breadcrumbs.addToTrail( referer, new BreadCrumb(uri, this.label) );
101
102 return EVAL_PAGE;
103 }
104
105 }
This page was automatically generated by Maven