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