1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.portals.bridges.perl;
18
19
20 import javax.portlet.PortletURL;
21
22 import org.apache.jetspeed.rewriter.Rewriter;
23 import org.apache.jetspeed.rewriter.RulesetRewriterImpl;
24
25 /***
26 * PerlContentRewriter
27 *
28 * @author <a href="mailto:rogerrutr@apache.org">Roger Ruttimann </a>
29 * @version $Id: PerlContentRewriter.java 517068 2007-03-12 01:44:37Z ate $
30 */
31 public class PerlContentRewriter extends RulesetRewriterImpl implements
32 Rewriter {
33
34 /*** WebContentURL */
35 public static final String ACTION_PARAMETER_URL = "WCURL";
36
37 /* Portlet URL will be used to replace all URL's */
38 private PortletURL actionURL = null;
39
40 /* Parameter name attached to action */
41 private String actionParameterName = null;
42
43 /*
44 * LocalhostIP Some perl script refer to localhost which doesn't work for
45 * remote connections. The rewriter will replace any localhost references
46 * with the IP address
47 */
48 private String localHostIP = null;
49
50 /***
51 * Setters/getters for members
52 */
53 public void setActionURL(PortletURL action) {
54 this.actionURL = action;
55 }
56
57 public PortletURL getActionURL() {
58 return this.actionURL;
59 }
60
61 /***
62 * @return Returns the localHostIP.
63 */
64 public String getLocalHostIP() {
65 return localHostIP;
66 }
67
68 /***
69 * @param localHostIP
70 * The localHostIP to set.
71 */
72 public void setLocalHostIP(String localHostIP) {
73 this.localHostIP = localHostIP;
74 }
75
76 /***
77 * @return Returns the actionParameterName.
78 */
79 public String getActionParameterName() {
80 return actionParameterName;
81 }
82
83 /***
84 * @param actionParameterName
85 * The actionParameterName to set.
86 */
87 public void setActionParameterName(String actionParameterName) {
88 this.actionParameterName = actionParameterName;
89 }
90
91 /***
92 * rewriteURL
93 *
94 * @param url
95 * @param tag
96 * @param attribute
97 * @return the modified url which is a portlet action
98 *
99 * Rewrites all URL's in the perl script with portlet actions. Tags include
100 * A (AREA) and FORM and replaces any localhost with the real IP address if
101 * provided
102 */
103 public String rewriteUrl(String url, String tag, String attribute) {
104 String modifiedURL = url;
105 // TODO: Remove debug
106 System.out.println("Perl HTML output TAG = " + tag + " Attribute = " + attribute);
107
108 // For now only add PortletActions to URL's which are anchors (tag=a) or
109 // FORMS and HREF's (attribute= HREF) -- ignore all others links
110 if (( tag.compareToIgnoreCase("A") == 0
111 || tag.compareToIgnoreCase("FORM") == 0)
112 && attribute.compareToIgnoreCase("HREF") == 0) {
113 // Regular URL just add a portlet action
114 if (this.actionURL != null) {
115 // create Action URL
116 actionURL.setParameter(actionParameterName, modifiedURL);
117 modifiedURL = actionURL.toString();
118 }
119 }
120
121 return modifiedURL;
122 }
123
124 /*
125 * (non-Javadoc)
126 *
127 * @see org.apache.jetspeed.rewriter.Rewriter#shouldRemoveTag(java.lang.String)
128 */
129 /*
130 * public boolean shouldRemoveTag(String tag) { if
131 * (tag.equalsIgnoreCase("html")) { return true; } return false; }
132 */
133
134 /*
135 * (non-Javadoc)
136 *
137 * @see org.apache.jetspeed.rewriter.Rewriter#shouldStripTag(java.lang.String)
138 */
139 /*
140 * public boolean shouldStripTag(String tag) { if
141 * (tag.equalsIgnoreCase("head")) { return true; } return false; }
142 */
143
144 /*
145 * (non-Javadoc)
146 *
147 * @see org.apache.jetspeed.rewriter.Rewriter#shouldRemoveComments()
148 */
149 /*
150 * public boolean shouldRemoveComments() { return true; }
151 */
152
153 }