// Handle an RSS request
if (path == null || path.length() == 0 || path.equals("/")) {
// Return an RSS feed containing the entries in the collection
SyndFeed feed = null;
if (supportsFeedEntries) {
// The service implementation supports feed entries, invoke its getFeed operation
Message requestMessage = messageFactory.createMessage();
Message responseMessage = getFeedInvoker.invoke(requestMessage);
if (responseMessage.isFault()) {
throw new ServletException((Throwable)responseMessage.getBody());
}
feed = (SyndFeed)responseMessage.getBody();
} else {
// The service implementation does not support feed entries, invoke its
// getAll operation to get the data item collection. then create feed entries
// from the data items
Message requestMessage = messageFactory.createMessage();
Message responseMessage;
if (request.getQueryString() != null) {
requestMessage.setBody(new Object[] {request.getQueryString()});
responseMessage = queryInvoker.invoke(requestMessage);
} else {
responseMessage = getAllInvoker.invoke(requestMessage);
}
if (responseMessage.isFault()) {
throw new ServletException((Throwable)responseMessage.getBody());
}
org.apache.tuscany.sca.data.collection.Entry<Object, Object>[] collection =
(org.apache.tuscany.sca.data.collection.Entry<Object, Object>[])responseMessage.getBody();
if (collection != null) {
// Create the feed
feed = new SyndFeedImpl();
feed.setTitle("Feed");
feed.setDescription("Feed description");
for (org.apache.tuscany.sca.data.collection.Entry<Object, Object> entry: collection) {
SyndEntry feedEntry = createFeedEntry(entry);
feed.getEntries().add(feedEntry);
}
}
}
// Convert to an RSS feed
if (feed != null) {
response.setContentType("application/rss+xml; charset=utf-8");
feed.setFeedType("rss_2.0");
feed.setLink(path);
SyndFeedOutput syndOutput = new SyndFeedOutput();
try {
syndOutput.output(feed, getWriter(response));
} catch (FeedException e) {
throw new ServletException(e);