RSSWebCacheItem.java |
1 /** 2 * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved. 3 * 4 * The contents of this file are subject to the terms of the Liferay Enterprise 5 * Subscription License ("License"). You may not use this file except in 6 * compliance with the License. You can obtain a copy of the License by 7 * contacting Liferay, Inc. See the License for the specific language governing 8 * permissions and limitations under the License, including but not limited to 9 * distribution rights of the Software. 10 * 11 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 12 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 13 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 14 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 15 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 17 * SOFTWARE. 18 */ 19 20 package com.liferay.portlet.rss.util; 21 22 import com.liferay.portal.kernel.util.Time; 23 import com.liferay.portal.kernel.webcache.WebCacheException; 24 import com.liferay.portal.kernel.webcache.WebCacheItem; 25 26 import com.sun.syndication.feed.synd.SyndFeed; 27 import com.sun.syndication.io.SyndFeedInput; 28 import com.sun.syndication.io.XmlReader; 29 30 import java.net.URL; 31 32 /** 33 * <a href="RSSWebCacheItem.java.html"><b><i>View Source</i></b></a> 34 * 35 * @author Brian Wing Shun Chan 36 * 37 */ 38 public class RSSWebCacheItem implements WebCacheItem { 39 40 public RSSWebCacheItem(String url) { 41 _url = url; 42 } 43 44 public Object convert(String key) throws WebCacheException { 45 SyndFeed feed = null; 46 47 try { 48 49 // com.liferay.portal.kernel.util.HttpUtil will break the connection 50 // if it spends more than 5 seconds looking up a location. However, 51 // German umlauts do not get encoded correctly. This may be a bug 52 // with commons-httpclient or with how FeedParser uses 53 // java.io.Reader. 54 55 // Use http://xml.newsisfree.com/feeds/29/629.xml and 56 // http://test.domosoft.com/up/RSS to test if German umlauts show 57 // up correctly. 58 59 /*Reader reader = new StringReader( 60 new String(HttpUtil.URLtoByteArray(_url))); 61 62 channel = FeedParser.parse(builder, reader);*/ 63 64 SyndFeedInput input = new SyndFeedInput(); 65 66 feed = input.build(new XmlReader(new URL(_url))); 67 } 68 catch (Exception e) { 69 throw new WebCacheException(_url + " " + e.toString()); 70 } 71 72 return feed; 73 } 74 75 public long getRefreshTime() { 76 return _REFRESH_TIME; 77 } 78 79 private static final long _REFRESH_TIME = Time.MINUTE * 20; 80 81 private String _url; 82 83 }