/*
* Copyright 2000-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jetspeed.util.rewriter;
// java.io
import java.io.Reader;
// java.net
import java.net.MalformedURLException;
// this makes it dependent on Swing...need an abstraction WTP
import javax.swing.text.html.HTML;
import javax.swing.text.MutableAttributeSet;
/**
*
* Interface for URL rewriting.
*
* @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
* @version $Id: Rewriter.java,v 1.6 2004/02/23 03:18:59 jford Exp $
*/
public interface Rewriter
{
/*
* Entry point into rewriting HTML content.
*
* Reads stream from proxied host, runs configured HTML parser against that stream,
* rewriting relevant links, and writes the parsed stream back to the client.
*
* @param input the HTML input stream.
* @param input the base URL host string used to create full links back to host
* @return the rewritten HTML output stream.
*
* @exception MalformedURLException a servlet exception.
*/
String rewrite(Reader input, String baseURL)
throws MalformedURLException;
/* <p>
* This callback is called by the HTMLParserAdaptor implementation to write
* back all rewritten URLs to point to the proxy server. Each implementation
* writes specifically for their own type of resources.</p>
* <p>
* Given the targetURL, rewrites the link as a link back to the proxy server.
* </p>
* @param targetURL the URL to be rewritten back to the proxy server.
* @param baseURL the base URL of the target host.
* @param proxyURL the base URL of the proxy server.
* @return the rewritten URL to the proxy server.
*
* @exception MalformedURLException a servlet exception.
*/
String generateNewUrl(String targetURL, HTML.Tag tag, HTML.Attribute attribute);
/*
* Returns true if all rewritten URLs should be sent back to the proxy server.
*
* @return true if all URLs are rewritten back to proxy server.
*/
boolean proxyAllTags();
// parser event handling
boolean enterSimpleTagEvent(HTML.Tag tag, MutableAttributeSet attrs);
String exitSimpleTagEvent(HTML.Tag tag, MutableAttributeSet attrs);
boolean enterStartTagEvent(HTML.Tag tag, MutableAttributeSet attrs);
String exitStartTagEvent(HTML.Tag tag, MutableAttributeSet attrs);
boolean enterEndTagEvent(HTML.Tag tag);
String exitEndTagEvent(HTML.Tag tag);
boolean enterText(char[] values, int param);
void convertTagEvent(HTML.Tag tag, MutableAttributeSet attrs);
}