You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2008/03/22 19:51:28 UTC
svn commit: r640053 - in /incubator/tuscany/java/sca:
demos/alert-aggregator-webapp/src/main/java/org/apache/tuscany/sca/demos/aggregator/
modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/collection/
modules/binding-atom-ab...
Author: jsdelfino
Date: Sat Mar 22 11:51:27 2008
New Revision: 640053
URL: http://svn.apache.org/viewvc?rev=640053&view=rev
Log:
Fixed support for query strings in the RSS binding. Added a query method to the RSS and ATOM binding collection interfaces. Changed binding-rss-rome to return Synd feeds instead of Atom feeds. Adjusted samples and demos to these changes.
Removed:
incubator/tuscany/java/sca/samples/feed-aggregator-webapp/src/main/java/feed/SampleServer.java
Modified:
incubator/tuscany/java/sca/demos/alert-aggregator-webapp/src/main/java/org/apache/tuscany/sca/demos/aggregator/AlertsFeedServiceImpl.java
incubator/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/collection/Collection.java
incubator/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java
incubator/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomServiceBindingProvider.java
incubator/tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/CustomerCollectionImpl.java
incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/collection/Collection.java
incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/provider/RSSBindingInvoker.java
incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/provider/RSSBindingListenerServlet.java
incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/provider/RSSServiceBindingProvider.java
incubator/tuscany/java/sca/modules/binding-rss-rome/src/test/java/org/apache/tuscany/sca/binding/rss/CustomerClientImpl.java
incubator/tuscany/java/sca/modules/binding-rss-rome/src/test/java/org/apache/tuscany/sca/binding/rss/CustomerCollectionImpl.java
incubator/tuscany/java/sca/modules/implementation-widget/src/test/java/store/ShoppingCartImpl.java
incubator/tuscany/java/sca/samples/feed-aggregator-webapp/src/main/java/feed/AggregatorImpl.java
incubator/tuscany/java/sca/samples/feed-aggregator/src/main/java/feed/AggregatorImpl.java
incubator/tuscany/java/sca/samples/feed-aggregator/src/main/java/feed/SampleServer.java
incubator/tuscany/java/sca/samples/store/src/main/java/services/ShoppingCartImpl.java
Modified: incubator/tuscany/java/sca/demos/alert-aggregator-webapp/src/main/java/org/apache/tuscany/sca/demos/aggregator/AlertsFeedServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/demos/alert-aggregator-webapp/src/main/java/org/apache/tuscany/sca/demos/aggregator/AlertsFeedServiceImpl.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/demos/alert-aggregator-webapp/src/main/java/org/apache/tuscany/sca/demos/aggregator/AlertsFeedServiceImpl.java (original)
+++ incubator/tuscany/java/sca/demos/alert-aggregator-webapp/src/main/java/org/apache/tuscany/sca/demos/aggregator/AlertsFeedServiceImpl.java Sat Mar 22 11:51:27 2008
@@ -84,6 +84,10 @@
return feed;
}
+
+ public Feed query(String queryString) {
+ return getFeed();
+ }
public void delete(String id) throws NotFoundException {
}
Modified: incubator/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/collection/Collection.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/collection/Collection.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/collection/Collection.java (original)
+++ incubator/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/collection/Collection.java Sat Mar 22 11:51:27 2008
@@ -31,12 +31,20 @@
public interface Collection {
/**
- * Get an RSS or Atom feed for a collection of resources.
+ * Get an Atom feed for a collection of resources.
*
- * @param uri the URI of the feed
- * @return the RSS or Atom feed
+ * @return the Atom feed
*/
Feed getFeed();
+
+ /**
+ * Get an Atom feed for a collection of resources resulting
+ * from a query.
+ *
+ * @param queryString a query string
+ * @return the Atom feed
+ */
+ Feed query(String queryString);
/**
* Creates a new entry.
Modified: incubator/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java (original)
+++ incubator/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java Sat Mar 22 11:51:27 2008
@@ -82,7 +82,6 @@
private Invoker putMediaInvoker;
private Invoker deleteInvoker;
private MessageFactory messageFactory;
- private String feedType;
private String title;
private Mediator mediator;
private DataType<?> itemClassType;
@@ -96,11 +95,10 @@
* @param messageFactory
* @param feedType
*/
- AtomBindingListenerServlet(RuntimeWire wire, MessageFactory messageFactory, Mediator mediator, String feedType, String title) {
+ AtomBindingListenerServlet(RuntimeWire wire, MessageFactory messageFactory, Mediator mediator, String title) {
this.wire = wire;
this.messageFactory = messageFactory;
this.mediator = mediator;
- this.feedType = feedType;
this.title = title;
// Get the invokers for the supported operations
@@ -152,17 +150,7 @@
// Get the request path
String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8");
- // The feedType parameter is used to override what type of feed is going
- // to be produced
- String requestFeedType = request.getParameter("feedType");
- if (requestFeedType == null)
- requestFeedType = feedType;
-
- if (! requestFeedType.startsWith("atom_")) {
- throw new UnsupportedOperationException(requestFeedType + " Not supported !");
- }
-
- logger.info(">>> FeedEndPointServlet (" + requestFeedType + ") " + request.getRequestURI());
+ logger.info(">>> FeedEndPointServlet " + request.getRequestURI());
// Handle an Atom request
if (path != null && path.equals("/atomsvc")) {
@@ -217,7 +205,13 @@
// The service implementation supports feed entries, invoke its getFeed operation
Message requestMessage = messageFactory.createMessage();
- Message responseMessage = getFeedInvoker.invoke(requestMessage);
+ Message responseMessage;
+ if (request.getQueryString() != null) {
+ requestMessage.setBody(new Object[] {request.getQueryString()});
+ responseMessage = queryInvoker.invoke(requestMessage);
+ } else {
+ responseMessage = getFeedInvoker.invoke(requestMessage);
+ }
if (responseMessage.isFault()) {
throw new ServletException((Throwable)responseMessage.getBody());
}
Modified: incubator/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomServiceBindingProvider.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomServiceBindingProvider.java (original)
+++ incubator/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomServiceBindingProvider.java Sat Mar 22 11:51:27 2008
@@ -67,7 +67,7 @@
RuntimeWire wire = componentService.getRuntimeWire(binding);
AtomBindingListenerServlet servlet =
- new AtomBindingListenerServlet(wire, messageFactory, mediator, "atom_1.0", binding.getTitle());
+ new AtomBindingListenerServlet(wire, messageFactory, mediator, binding.getTitle());
servletMapping = binding.getURI();
if (!servletMapping.endsWith("/")) {
Modified: incubator/tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/CustomerCollectionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/CustomerCollectionImpl.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/CustomerCollectionImpl.java (original)
+++ incubator/tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/CustomerCollectionImpl.java Sat Mar 22 11:51:27 2008
@@ -111,14 +111,17 @@
feed.setUpdated(new Date());
feed.addLink("");
feed.addLink("","self");
-
-
for (Entry entry : entries.values()) {
feed.addEntry(entry);
}
return feed;
+ }
+
+ public Feed query(String queryString) {
+ System.out.println(">>> ResourceCollectionImpl.query collection " + queryString);
+ return getFeed();
}
}
Modified: incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/collection/Collection.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/collection/Collection.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/collection/Collection.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/collection/Collection.java Sat Mar 22 11:51:27 2008
@@ -20,10 +20,11 @@
import org.osoa.sca.annotations.Remotable;
-import com.sun.syndication.feed.atom.Entry;
+import com.sun.syndication.feed.synd.SyndFeed;
+
/**
- * Provides access to a collection of resources using Atom.
+ * Provides access to a collection of resources using RSS.
*
* @version $Rev$ $Date$
*/
@@ -31,43 +32,18 @@
public interface Collection {
/**
- * Get an RSS or Atom feed for a collection of resources.
- *
- * @param uri the URI of the feed
- * @return the RSS or Atom feed
- */
- com.sun.syndication.feed.atom.Feed getFeed();
-
- /**
- * Creates a new entry.
- *
- * @param entry
- * @return
- */
- Entry post(Entry entry);
-
- /**
- * Retrieves an entry.
- *
- * @param id
- * @return
- */
- Entry get(String id) throws NotFoundException;
-
- /**
- * Update an entry.
+ * Get an RSS feed for a collection of resources.
*
- * @param id
- * @param entry
- * @return
+ * @return the RSS feed
*/
- void put(String id, Entry entry) throws NotFoundException;
+ SyndFeed getFeed();
/**
- * Delete an entry.
+ * Get an RSS feed for a collection of resources resulting from a query.
*
- * @param id
+ * @param query the query string
+ * @return the RSS feed
*/
- void delete(String id) throws NotFoundException;
+ SyndFeed query(String queryString);
}
Modified: incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/provider/RSSBindingInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/provider/RSSBindingInvoker.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/provider/RSSBindingInvoker.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/provider/RSSBindingInvoker.java Sat Mar 22 11:51:27 2008
@@ -27,11 +27,9 @@
import org.apache.tuscany.sca.invocation.Invoker;
import org.apache.tuscany.sca.invocation.Message;
-import com.sun.syndication.feed.atom.Feed;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.FeedException;
import com.sun.syndication.io.SyndFeedInput;
-import com.sun.syndication.io.WireFeedInput;
import com.sun.syndication.io.XmlReader;
/**
@@ -45,27 +43,15 @@
RSSBindingInvoker(String uri, String feedType) {
this.uri = uri;
- this.feedType = feedType;
}
public Message invoke(Message msg) {
try {
logger.info(">>> RSSBindingInvoker (" + feedType + ") " + uri);
- // Read the configured feed URI into a Feed object
- Feed feed;
- if (feedType.startsWith("atom_")) {
-
- // Read an Atom feed
- WireFeedInput input = new WireFeedInput();
- feed = (Feed)input.build(new XmlReader(new URL(uri)));
- } else {
-
- // Read an RSS feed and convert it to an Atom feed
- SyndFeedInput input = new SyndFeedInput();
- SyndFeed syndFeed = input.build(new XmlReader(new URL(uri)));
- feed = (Feed)syndFeed.createWireFeed("atom_1.0");
- }
+ // Read an RSS feed into a Synd feed
+ SyndFeedInput input = new SyndFeedInput();
+ SyndFeed feed = input.build(new XmlReader(new URL(uri)));
//FIXME Support conversion to data-api entries
Modified: incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/provider/RSSBindingListenerServlet.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/provider/RSSBindingListenerServlet.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/provider/RSSBindingListenerServlet.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/provider/RSSBindingListenerServlet.java Sat Mar 22 11:51:27 2008
@@ -48,17 +48,19 @@
import org.apache.tuscany.sca.invocation.MessageFactory;
import org.apache.tuscany.sca.runtime.RuntimeWire;
-import com.sun.syndication.feed.atom.Content;
-import com.sun.syndication.feed.atom.Entry;
-import com.sun.syndication.feed.atom.Feed;
-import com.sun.syndication.feed.atom.Link;
+import com.sun.syndication.feed.synd.SyndContent;
+import com.sun.syndication.feed.synd.SyndContentImpl;
+import com.sun.syndication.feed.synd.SyndEntry;
+import com.sun.syndication.feed.synd.SyndEntryImpl;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.feed.synd.SyndFeedImpl;
+import com.sun.syndication.feed.synd.SyndLink;
+import com.sun.syndication.feed.synd.SyndLinkImpl;
import com.sun.syndication.io.FeedException;
import com.sun.syndication.io.SyndFeedOutput;
/**
- * A resource collection binding listener, implemented as a Servlet and
+ * An RSS binding listener, implemented as a Servlet and
* registered in a Servlet host provided by the SCA hosting runtime.
*/
class RSSBindingListenerServlet extends HttpServlet {
@@ -69,9 +71,7 @@
private Invoker getFeedInvoker;
private Invoker getAllInvoker;
private Invoker queryInvoker;
- private Invoker getInvoker;
private MessageFactory messageFactory;
- private String feedType;
private Mediator mediator;
private DataType<?> itemClassType;
private DataType<?> itemXMLType;
@@ -82,13 +82,11 @@
*
* @param wire
* @param messageFactory
- * @param feedType
*/
- RSSBindingListenerServlet(RuntimeWire wire, MessageFactory messageFactory, Mediator mediator, String feedType) {
+ RSSBindingListenerServlet(RuntimeWire wire, MessageFactory messageFactory, Mediator mediator) {
this.wire = wire;
this.messageFactory = messageFactory;
this.mediator = mediator;
- this.feedType = feedType;
// Get the invokers for the supported operations
Operation getOperation = null;
@@ -103,7 +101,6 @@
} else if (operationName.equals("query")) {
queryInvoker = invocationChain.getHeadInvoker();
} else if (operationName.equals("get")) {
- getInvoker = invocationChain.getHeadInvoker();
getOperation = operation;
}
}
@@ -111,7 +108,7 @@
// Determine the collection item type
itemXMLType = new DataTypeImpl<Class<?>>(String.class.getName(), String.class, String.class);
Class<?> itemClass = getOperation.getOutputType().getPhysical();
- if (itemClass == Entry.class) {
+ if (itemClass == SyndEntry.class) {
supportsFeedEntries = true;
}
DataType<XMLType> outputType = getOperation.getOutputType();
@@ -129,24 +126,13 @@
// Get the request path
String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8");
- // The feedType parameter is used to override what type of feed is going
- // to be produced
- String requestFeedType = request.getParameter("feedType");
- if (requestFeedType == null) {
- requestFeedType = feedType;
- }
-
- if (requestFeedType.startsWith("atom_")) {
- throw new UnsupportedOperationException(requestFeedType + " Not supported !");
- }
-
- logger.info(">>> FeedEndPointServlet (" + requestFeedType + ") " + request.getRequestURI());
+ logger.info(">>> RSSBindingListenerServlet " + request.getRequestURI());
// Handle an RSS request
if (path == null || path.length() == 0 || path.equals("/")) {
// Return an RSS feed containing the entries in the collection
- Feed feed = null;
+ SyndFeed feed = null;
if (supportsFeedEntries) {
// The service implementation supports feed entries, invoke its getFeed operation
@@ -155,7 +141,7 @@
if (responseMessage.isFault()) {
throw new ServletException((Throwable)responseMessage.getBody());
}
- feed = (Feed)responseMessage.getBody();
+ feed = (SyndFeed)responseMessage.getBody();
} else {
@@ -177,11 +163,11 @@
(org.apache.tuscany.sca.implementation.data.collection.Entry<Object, Object>[])responseMessage.getBody();
if (collection != null) {
// Create the feed
- feed = new Feed();
+ feed = new SyndFeedImpl();
feed.setTitle("Feed");
for (org.apache.tuscany.sca.implementation.data.collection.Entry<Object, Object> entry: collection) {
- Entry feedEntry = createFeedEntry(entry);
+ SyndEntry feedEntry = createFeedEntry(entry);
feed.getEntries().add(feedEntry);
}
}
@@ -190,13 +176,11 @@
// Convert to an RSS feed
if (feed != null) {
response.setContentType("application/rss+xml; charset=utf-8");
- feed.setFeedType("atom_1.0");
- SyndFeed syndFeed = new SyndFeedImpl(feed);
- syndFeed.setFeedType(requestFeedType);
- syndFeed.setLink(path);
+ feed.setFeedType("rss_2.0");
+ feed.setLink(path);
SyndFeedOutput syndOutput = new SyndFeedOutput();
try {
- syndOutput.output(syndFeed, getWriter(response));
+ syndOutput.output(feed, getWriter(response));
} catch (FeedException e) {
throw new ServletException(e);
}
@@ -214,22 +198,22 @@
* @param entry
* @return
*/
- private Entry createFeedEntry(org.apache.tuscany.sca.implementation.data.collection.Entry<Object, Object> entry) {
+ private SyndEntry createFeedEntry(org.apache.tuscany.sca.implementation.data.collection.Entry<Object, Object> entry) {
Object key = entry.getKey();
Object data = entry.getData();
if (data instanceof Item) {
Item item = (Item)data;
- Entry feedEntry = new Entry();
- feedEntry.setId(key.toString());
+ SyndEntry feedEntry = new SyndEntryImpl();
+ feedEntry.setUri(key.toString());
feedEntry.setTitle(item.getTitle());
String value = item.getContents();
if (value != null) {
- Content content = new Content();
+ SyndContent content = new SyndContentImpl();
content.setType("text/xml");
content.setValue(value);
- List<Content> contents = new ArrayList<Content>();
+ List<SyndContent> contents = new ArrayList<SyndContent>();
contents.add(content);
feedEntry.setContents(contents);
}
@@ -238,47 +222,47 @@
if (href == null) {
href = key.toString();
}
- Link link = new Link();
+ SyndLink link = new SyndLinkImpl();
link.setRel("edit");
link.setHref(href);
- feedEntry.getOtherLinks().add(link);
- link = new Link();
+ feedEntry.getLinks().add(link);
+ link = new SyndLinkImpl();
link.setRel("alternate");
link.setHref(href);
- feedEntry.getAlternateLinks().add(link);
+ feedEntry.getLinks().add(link);
Date date = item.getDate();
if (date == null) {
date = new Date();
}
- feedEntry.setCreated(date);
+ feedEntry.setPublishedDate(date);
return feedEntry;
} else if (data != null) {
- Entry feedEntry = new Entry();
- feedEntry.setId(key.toString());
+ SyndEntry feedEntry = new SyndEntryImpl();
+ feedEntry.setUri(key.toString());
feedEntry.setTitle("item");
// Convert the item to XML
String value = mediator.mediate(data, itemClassType, itemXMLType, null).toString();
- Content content = new Content();
+ SyndContent content = new SyndContentImpl();
content.setType("text/xml");
content.setValue(value);
- List<Content> contents = new ArrayList<Content>();
+ List<SyndContent> contents = new ArrayList<SyndContent>();
contents.add(content);
feedEntry.setContents(contents);
- Link link = new Link();
+ SyndLink link = new SyndLinkImpl();
link.setRel("edit");
link.setHref(key.toString());
- feedEntry.getOtherLinks().add(link);
- link = new Link();
+ feedEntry.getLinks().add(link);
+ link = new SyndLinkImpl();
link.setRel("alternate");
link.setHref(key.toString());
- feedEntry.getAlternateLinks().add(link);
+ feedEntry.getLinks().add(link);
- feedEntry.setCreated(new Date());
+ feedEntry.setPublishedDate(new Date());
return feedEntry;
} else {
return null;
@@ -286,27 +270,27 @@
}
/**
- * Create a data collection entry from an Atom entry.
+ * Create a data collection entry from an RSS entry.
* @param feedEntry
* @return
*/
- private org.apache.tuscany.sca.implementation.data.collection.Entry<Object, Object> createEntry(Entry feedEntry) {
+ private org.apache.tuscany.sca.implementation.data.collection.Entry<Object, Object> createEntry(SyndEntry feedEntry) {
if (feedEntry != null) {
if (itemClassType.getPhysical() == Item.class) {
- String key = feedEntry.getId();
+ String key = feedEntry.getUri();
Item item = new Item();
item.setTitle(feedEntry.getTitle());
List<?> contents = feedEntry.getContents();
if (!contents.isEmpty()) {
- Content content = (Content)contents.get(0);
+ SyndContent content = (SyndContent)contents.get(0);
String value = content.getValue();
item.setContents(value);
}
- for (Object l : feedEntry.getOtherLinks()) {
- Link link = (Link)l;
+ for (Object l : feedEntry.getLinks()) {
+ SyndLink link = (SyndLink)l;
if (link.getRel() == null || "edit".equals(link.getRel())) {
String href = link.getHref();
if (href.startsWith("null/")) {
@@ -317,19 +301,19 @@
}
}
- item.setDate(feedEntry.getCreated());
+ item.setDate(feedEntry.getPublishedDate());
return new org.apache.tuscany.sca.implementation.data.collection.Entry<Object, Object>(key, item);
} else {
- String key = feedEntry.getId();
+ String key = feedEntry.getUri();
// Create the item from XML
List<?> contents = feedEntry.getContents();
if (contents.isEmpty()) {
return null;
}
- Content content = (Content)contents.get(0);
+ SyndContent content = (SyndContent)contents.get(0);
String value = content.getValue();
Object data = mediator.mediate(value, itemXMLType, itemClassType, null);
Modified: incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/provider/RSSServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/provider/RSSServiceBindingProvider.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/provider/RSSServiceBindingProvider.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rss-rome/src/main/java/org/apache/tuscany/sca/binding/rss/provider/RSSServiceBindingProvider.java Sat Mar 22 11:51:27 2008
@@ -67,7 +67,7 @@
RuntimeWire wire = componentService.getRuntimeWire(binding);
RSSBindingListenerServlet servlet =
- new RSSBindingListenerServlet(wire, messageFactory, mediator, "rss_2.0");
+ new RSSBindingListenerServlet(wire, messageFactory, mediator);
servletMapping = binding.getURI();
servletHost.addServletMapping(servletMapping, servlet);
Modified: incubator/tuscany/java/sca/modules/binding-rss-rome/src/test/java/org/apache/tuscany/sca/binding/rss/CustomerClientImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rss-rome/src/test/java/org/apache/tuscany/sca/binding/rss/CustomerClientImpl.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rss-rome/src/test/java/org/apache/tuscany/sca/binding/rss/CustomerClientImpl.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rss-rome/src/test/java/org/apache/tuscany/sca/binding/rss/CustomerClientImpl.java Sat Mar 22 11:51:27 2008
@@ -19,15 +19,12 @@
package org.apache.tuscany.sca.binding.rss;
-import java.util.ArrayList;
-import java.util.List;
-
import org.apache.tuscany.sca.binding.rss.collection.Collection;
import org.osoa.sca.annotations.Reference;
-import com.sun.syndication.feed.atom.Content;
-import com.sun.syndication.feed.atom.Entry;
-import com.sun.syndication.feed.atom.Feed;
+import com.sun.syndication.feed.synd.SyndEntry;
+import com.sun.syndication.feed.synd.SyndFeed;
+
public class CustomerClientImpl implements CustomerClient {
@@ -36,62 +33,13 @@
public void testCustomerCollection() throws Exception {
- Entry newEntry = newEntry("Sponge Bob");
- System.out.println(">>> post entry=" + newEntry.getTitle());
- newEntry = resourceCollection.post(newEntry);
- System.out.println("<<< post id=" + newEntry.getId() + " entry=" + newEntry.getTitle());
-
- newEntry = newEntry("Jane Bond");
- System.out.println(">>> post entry=" + newEntry.getTitle());
- newEntry = resourceCollection.post(newEntry);
- System.out.println("<<< post id=" + newEntry.getId() + " entry=" + newEntry.getTitle());
-
- System.out.println(">>> get id=" + newEntry.getId());
- Entry entry = resourceCollection.get(newEntry.getId());
- System.out.println("<<< get id=" + entry.getId() + " entry=" + entry.getTitle());
-
- System.out.println(">>> put id=" + newEntry.getId() + " entry=" + entry.getTitle());
- resourceCollection.put(entry.getId(), updateEntry(entry, "James Bond"));
- System.out.println("<<< put id=" + entry.getId() + " entry=" + entry.getTitle());
-
- System.out.println(">>> delete id=" + entry.getId());
- resourceCollection.delete(entry.getId());
- System.out.println("<<< delete id=" + entry.getId());
-
System.out.println(">>> get collection");
- Feed feed = resourceCollection.getFeed();
+ SyndFeed feed = resourceCollection.getFeed();
System.out.println("<<< get collection");
for (Object o : feed.getEntries()) {
- Entry e = (Entry)o;
- System.out.println("id = " + e.getId() + " entry = " + e.getTitle());
+ SyndEntry e = (SyndEntry)o;
+ System.out.println("id = " + e.getUri() + " entry = " + e.getTitle());
}
}
- private Entry newEntry(String value) {
-
- Entry entry = new Entry();
- entry.setTitle("customer " + value);
-
- Content content = new Content();
- content.setValue(value);
- content.setType(Content.TEXT);
- List<Object> list = new ArrayList<Object>();
- list.add(content);
- entry.setContents(list);
-
- return entry;
- }
-
- private Entry updateEntry(Entry entry, String value) {
-
- entry.setTitle("customer " + value);
- Content content = new Content();
- content.setValue(value);
- content.setType(Content.TEXT);
- List<Object> list = new ArrayList<Object>();
- list.add(content);
- entry.setContents(list);
-
- return entry;
- }
}
Modified: incubator/tuscany/java/sca/modules/binding-rss-rome/src/test/java/org/apache/tuscany/sca/binding/rss/CustomerCollectionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rss-rome/src/test/java/org/apache/tuscany/sca/binding/rss/CustomerCollectionImpl.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rss-rome/src/test/java/org/apache/tuscany/sca/binding/rss/CustomerCollectionImpl.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rss-rome/src/test/java/org/apache/tuscany/sca/binding/rss/CustomerCollectionImpl.java Sat Mar 22 11:51:27 2008
@@ -31,104 +31,71 @@
import org.osoa.sca.annotations.Scope;
import com.sun.syndication.feed.atom.Content;
-import com.sun.syndication.feed.atom.Entry;
-import com.sun.syndication.feed.atom.Feed;
-import com.sun.syndication.feed.atom.Link;
+import com.sun.syndication.feed.synd.SyndContent;
+import com.sun.syndication.feed.synd.SyndContentImpl;
+import com.sun.syndication.feed.synd.SyndEntry;
+import com.sun.syndication.feed.synd.SyndEntryImpl;
+import com.sun.syndication.feed.synd.SyndFeed;
+import com.sun.syndication.feed.synd.SyndFeedImpl;
+import com.sun.syndication.feed.synd.SyndLink;
+import com.sun.syndication.feed.synd.SyndLinkImpl;
@Scope("COMPOSITE")
public class CustomerCollectionImpl implements Collection {
- private Map<String, Entry> entries = new HashMap<String, Entry>();
+ private Map<String, SyndEntry> entries = new HashMap<String, SyndEntry>();
public CustomerCollectionImpl() {
for (int i = 0; i < 4; i++) {
String id = "urn:uuid:customer-" + UUID.randomUUID().toString();
- Entry entry = new Entry();
+ SyndEntry entry = new SyndEntryImpl();
entry.setTitle("customer " + "Jane Doe_" + String.valueOf(i));
- entry.setId(id);
+ entry.setUri(id);
- Content content = new Content();
+ SyndContent content = new SyndContentImpl();
content.setValue("Jane Doe_" + String.valueOf(i));
content.setType(Content.TEXT);
entry.setContents(Collections.singletonList(content));
- List<Link> links = new ArrayList<Link>();
- Link link = new Link();
+ List<SyndLink> links = new ArrayList<SyndLink>();
+ SyndLink link = new SyndLinkImpl();
link.setRel("edit");
link.setHref("" + id);
links.add(link);
- entry.setOtherLinks(links);
+ entry.setLinks(links);
- links = new ArrayList<Link>();
- link = new Link();
+ links = new ArrayList<SyndLink>();
+ link = new SyndLinkImpl();
link.setRel("alternate");
link.setHref("" + id);
links.add(link);
- entry.setAlternateLinks(links);
+ entry.setLinks(links);
- entry.setCreated(new Date());
+ entry.setPublishedDate(new Date());
entries.put(id, entry);
System.out.println(">>> id=" + id);
}
}
- public Entry post(Entry entry) {
- System.out.println(">>> ResourceCollectionImpl.post entry=" + entry.getTitle());
+ public SyndFeed getFeed() {
+ System.out.println(">>> CustomerCollectionImpl.getFeed");
- String id = "urn:uuid:customer-" + UUID.randomUUID().toString();
- entry.setId(id);
-
- List<Link> links = new ArrayList<Link>();
- Link link = new Link();
- link.setRel("edit");
- link.setHref("" + id);
- links.add(link);
- entry.setOtherLinks(links);
-
- links = new ArrayList<Link>();
- link = new Link();
- link.setRel("alternate");
- link.setHref("" + id);
- links.add(link);
- entry.setAlternateLinks(links);
-
- entry.setCreated(new Date());
-
- entries.put(id, entry);
- System.out.println(">>> ResourceCollectionImpl.post return id=" + id);
-
- return entry;
- }
-
- public Entry get(String id) {
- System.out.println(">>> ResourceCollectionImpl.get id=" + id);
- return entries.get(id);
- }
-
- public void put(String id, Entry entry) {
- System.out.println(">>> ResourceCollectionImpl.put id=" + id + " entry=" + entry.getTitle());
-
- entry.setUpdated(new Date());
- entries.put(id, entry);
- }
-
- public void delete(String id) {
- System.out.println(">>> ResourceCollectionImpl.delete id=" + id);
- entries.remove(id);
+ SyndFeed feed = new SyndFeedImpl();
+ feed.setTitle("customers");
+ feed.setDescription("This is a sample feed");
+ feed.getEntries().addAll(entries.values());
+ return feed;
}
- @SuppressWarnings("unchecked")
- public Feed getFeed() {
- System.out.println(">>> ResourceCollectionImpl.get collection");
+ public SyndFeed query(String queryString) {
+ System.out.println(">>> CustomerCollectionImpl.query");
- Feed feed = new Feed();
+ SyndFeed feed = new SyndFeedImpl();
feed.setTitle("customers");
- Content subtitle = new Content();
- subtitle.setValue("This is a sample feed");
- feed.setSubtitle(subtitle);
+ feed.setDescription("This is a sample feed");
feed.getEntries().addAll(entries.values());
return feed;
}
Modified: incubator/tuscany/java/sca/modules/implementation-widget/src/test/java/store/ShoppingCartImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-widget/src/test/java/store/ShoppingCartImpl.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-widget/src/test/java/store/ShoppingCartImpl.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-widget/src/test/java/store/ShoppingCartImpl.java Sat Mar 22 11:51:27 2008
@@ -40,10 +40,30 @@
feed.setSubtitle("Total : " + getTotal());
for (Entry entry : cart.values()) {
- feed.addEntry(entry);
+ feed.addEntry(entry);
}
return feed;
+ }
+
+ public Feed query(String queryString) {
+ if (queryString.startsWith("name=")) {
+ String name = queryString.substring(5);
+
+ Feed feed = Abdera.getNewFactory().newFeed();
+ feed.setTitle("shopping cart");
+ feed.setSubtitle("Total : " + getTotal());
+
+ for (Entry entry : cart.values()) {
+ if (entry.getTitle().contains(name)) {
+ feed.addEntry(entry);
+ }
+ }
+ return feed;
+
+ } else {
+ return getFeed();
+ }
}
public Entry get(String id) throws NotFoundException {
Modified: incubator/tuscany/java/sca/samples/feed-aggregator-webapp/src/main/java/feed/AggregatorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/feed-aggregator-webapp/src/main/java/feed/AggregatorImpl.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/samples/feed-aggregator-webapp/src/main/java/feed/AggregatorImpl.java (original)
+++ incubator/tuscany/java/sca/samples/feed-aggregator-webapp/src/main/java/feed/AggregatorImpl.java Sat Mar 22 11:51:27 2008
@@ -22,6 +22,7 @@
import java.io.ByteArrayOutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import org.apache.abdera.Abdera;
@@ -116,6 +117,29 @@
return feed;
}
+ public Feed query(String queryString) {
+ Factory factory = Abdera.getNewFactory();
+ Feed feed = factory.newFeed();
+ feed.setTitle(feedTitle);
+ feed.setSubtitle(feedDescription);
+ Person author = factory.newAuthor();
+ author.setName(feedAuthor);
+ feed.addAuthor(author);
+ feed.addLink("http://incubator.apache.org/tuscany", "alternate");
+
+ Feed allFeed = getFeed();
+ if (queryString.startsWith("title=")) {
+ String title = queryString.substring(6);
+
+ for (Entry entry: allFeed.getEntries()) {
+ if (entry.getTitle().contains(title)) {
+ feed.addEntry(entry);
+ }
+ }
+ }
+ return feed;
+ }
+
public void delete(String id) throws NotFoundException {
}
@@ -136,10 +160,9 @@
* @param romeFeed
* @return
*/
- private static Feed atomFeed(com.sun.syndication.feed.atom.Feed romeFeed) {
+ private static Feed atomFeed(SyndFeed syndFeed) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
- SyndFeed syndFeed = new SyndFeedImpl(romeFeed);
syndFeed.setFeedType("atom_1.0");
SyndFeedOutput syndOutput = new SyndFeedOutput();
try {
Modified: incubator/tuscany/java/sca/samples/feed-aggregator/src/main/java/feed/AggregatorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/feed-aggregator/src/main/java/feed/AggregatorImpl.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/samples/feed-aggregator/src/main/java/feed/AggregatorImpl.java (original)
+++ incubator/tuscany/java/sca/samples/feed-aggregator/src/main/java/feed/AggregatorImpl.java Sat Mar 22 11:51:27 2008
@@ -22,6 +22,7 @@
import java.io.ByteArrayOutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import org.apache.abdera.Abdera;
@@ -116,6 +117,29 @@
return feed;
}
+ public Feed query(String queryString) {
+ Factory factory = Abdera.getNewFactory();
+ Feed feed = factory.newFeed();
+ feed.setTitle(feedTitle);
+ feed.setSubtitle(feedDescription);
+ Person author = factory.newAuthor();
+ author.setName(feedAuthor);
+ feed.addAuthor(author);
+ feed.addLink("http://incubator.apache.org/tuscany", "alternate");
+
+ Feed allFeed = getFeed();
+ if (queryString.startsWith("title=")) {
+ String title = queryString.substring(6);
+
+ for (Entry entry: allFeed.getEntries()) {
+ if (entry.getTitle().contains(title)) {
+ feed.addEntry(entry);
+ }
+ }
+ }
+ return feed;
+ }
+
public void delete(String id) throws NotFoundException {
}
@@ -136,10 +160,9 @@
* @param romeFeed
* @return
*/
- private static Feed atomFeed(com.sun.syndication.feed.atom.Feed romeFeed) {
+ private static Feed atomFeed(SyndFeed syndFeed) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
- SyndFeed syndFeed = new SyndFeedImpl(romeFeed);
syndFeed.setFeedType("atom_1.0");
SyndFeedOutput syndOutput = new SyndFeedOutput();
try {
Modified: incubator/tuscany/java/sca/samples/feed-aggregator/src/main/java/feed/SampleServer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/feed-aggregator/src/main/java/feed/SampleServer.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/samples/feed-aggregator/src/main/java/feed/SampleServer.java (original)
+++ incubator/tuscany/java/sca/samples/feed-aggregator/src/main/java/feed/SampleServer.java Sat Mar 22 11:51:27 2008
@@ -34,8 +34,6 @@
System.out.println("http://localhost:8083/atomAggregator");
System.out.println("http://localhost:8083/atomAggregator/atomsvc (for the Atom service document)");
System.out.println("http://localhost:8083/rssAggregator");
- System.out.println("http://localhost:8083/atomAggregator?feedType=rss_2.0");
- System.out.println("http://localhost:8083/rssAggregator?feedType=atom_1.0");
System.out.println();
System.in.read();
} catch (IOException e) {
Modified: incubator/tuscany/java/sca/samples/store/src/main/java/services/ShoppingCartImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/store/src/main/java/services/ShoppingCartImpl.java?rev=640053&r1=640052&r2=640053&view=diff
==============================================================================
--- incubator/tuscany/java/sca/samples/store/src/main/java/services/ShoppingCartImpl.java (original)
+++ incubator/tuscany/java/sca/samples/store/src/main/java/services/ShoppingCartImpl.java Sat Mar 22 11:51:27 2008
@@ -47,6 +47,26 @@
return feed;
}
+ public Feed query(String queryString) {
+ if (queryString.startsWith("name=")) {
+ String name = queryString.substring(5);
+
+ Feed feed = Abdera.getNewFactory().newFeed();
+ feed.setTitle("shopping cart");
+ feed.setSubtitle("Total : " + getTotal());
+
+ for (Entry entry : cart.values()) {
+ if (entry.getTitle().contains(name)) {
+ feed.addEntry(entry);
+ }
+ }
+ return feed;
+
+ } else {
+ return getFeed();
+ }
+ }
+
public Entry get(String id) throws NotFoundException {
return cart.get(id);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org