View Javadoc

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.jetspeed.rewriter;
18  
19  import java.io.Reader;
20  import java.io.Writer;
21  import java.net.URL;
22  
23  import org.apache.commons.logging.Log;
24  import org.apache.commons.logging.LogFactory;
25  /***
26   * AbstractRewriter
27   *
28   * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
29   * @version $Id: AbstractRewriter.java 516448 2007-03-09 16:25:47Z ate $
30   */
31  public abstract class AbstractRewriter implements Rewriter
32  {
33      protected final static Log log = LogFactory.getLog(AbstractRewriter.class);
34      
35      private String baseUrl = null;
36      private boolean useProxy = false; 
37          
38      /* (non-Javadoc)
39       * @see org.apache.jetspeed.syndication.services.crawler.rewriter.Rewriter#rewrite(ParserAdaptor, java.io.Reader)
40       */
41      public void parse(ParserAdaptor adaptor, Reader reader) throws RewriterException
42      {
43          adaptor.parse(this, reader);        
44      }
45      
46      /* (non-Javadoc)
47       * @see org.apache.jetspeed.syndication.services.crawler.rewriter.Rewriter#rewrite(ParserAdaptor, java.io.Reader, java.io.Writer)
48       */
49      public void rewrite(ParserAdaptor adaptor, Reader reader, Writer writer) throws RewriterException
50      {
51          adaptor.rewrite(this, reader, writer);        
52      }
53      
54      /* (non-Javadoc)
55       * @see org.apache.jetspeed.syndication.services.crawler.rewriter.Rewriter#rewriteUrl(java.lang.String, java.lang.String, java.lang.String)
56       */
57      public abstract String rewriteUrl(String url, String tag, String attribute);
58      
59      /* (non-Javadoc)
60       * @see org.apache.jetspeed.syndication.services.crawler.rewriter.Rewriter#setBaseUrl(java.lang.String)
61       */
62      public void setBaseUrl(String base)
63      {
64          this.baseUrl = base;
65      }
66      
67      /* (non-Javadoc)
68       * @see org.apache.jetspeed.syndication.services.crawler.rewriter.Rewriter#getBaseUrl()
69       */
70      public String getBaseUrl()
71      {
72          return baseUrl;
73      }
74      public String getBaseRelativeUrl(String relativeUrl)
75      {        
76          try
77          {
78              String baseUrl = getBaseUrl();
79              if (baseUrl != null)
80              {
81                  URL xlate = new URL(new URL(baseUrl), relativeUrl);
82                  return xlate.toString();
83              }
84          }
85          catch (Exception e)
86          {
87              log.error("Unable to translate URL relative to base URL", e);
88          }
89          return relativeUrl;
90      }
91      
92      /* (non-Javadoc)
93       * @see org.apache.jetspeed.syndication.services.crawler.rewriter.Rewriter#getUseProxy()
94       */
95      public boolean getUseProxy()
96      {
97          return useProxy;
98      }
99      
100     /* (non-Javadoc)
101      * @see org.apache.jetspeed.syndication.services.crawler.rewriter.Rewriter#setUseProxy(boolean)
102      */
103     public void setUseProxy(boolean useProxy)
104     {
105         this.useProxy = useProxy;        
106     }
107     
108     /* (non-Javadoc)
109      * @see org.apache.jetspeed.syndication.services.crawler.rewriter.Rewriter#enterSimpleTagEvent(java.lang.String, MutableAttributes)
110      */
111     public boolean enterSimpleTagEvent(String tag, MutableAttributes attrs)
112     {
113         return true;
114     }
115     
116     /* (non-Javadoc)
117      * @see org.apache.jetspeed.syndication.services.crawler.rewriter.Rewriter#exitSimpleTagEvent(java.lang.String, MutableAttributes)
118      */
119     public String exitSimpleTagEvent(String tag, MutableAttributes attrs)
120     {
121         return null;
122     }
123     
124     /* (non-Javadoc)
125      * @see org.apache.jetspeed.syndication.services.crawler.rewriter.Rewriter#enterStartTagEvent(java.lang.String, MutableAttributes)
126      */
127     public boolean enterStartTagEvent(String tag, MutableAttributes attrs)
128     {
129         return true;
130     }
131     
132     /* (non-Javadoc)
133      * @see org.apache.jetspeed.syndication.services.crawler.rewriter.Rewriter#exitStartTagEvent(java.lang.String, MutableAttributes)
134      */
135     public String exitStartTagEvent(String tag, MutableAttributes attrs)
136     {
137         return null;
138     }
139     
140     /* (non-Javadoc)
141      * @see org.apache.jetspeed.syndication.services.crawler.rewriter.Rewriter#enterEndTagEvent(java.lang.String)
142      */
143     public boolean enterEndTagEvent(String tag)
144     {
145         return true;
146     }
147     
148     /* (non-Javadoc)
149      * @see org.apache.jetspeed.syndication.services.crawler.rewriter.Rewriter#exitEndTagEvent(java.lang.String)
150      */
151     public String exitEndTagEvent(String tag)
152     {
153         return null;
154     }
155     
156     /* (non-Javadoc)
157      * @see org.apache.jetspeed.syndication.services.crawler.rewriter.Rewriter#enterText(char[], int)
158      */
159     public boolean enterText(char[] values, int param)
160     {
161         return true;
162     }
163     /* (non-Javadoc)
164      * @see org.apache.jetspeed.syndication.services.crawler.rewriter.Rewriter#convertTagEvent(java.lang.String, MutableAttributes)
165      */
166     public void enterConvertTagEvent(String tag, MutableAttributes attrs)
167     {
168     }
169 }