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/01/13 09:34:18 UTC

svn commit: r611546 - in /incubator/tuscany/java/sca/modules: binding-feed/ binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/ implementation-data-api/src/main/java/org/apache/tuscany/sca/implementation/data/collection/

Author: jsdelfino
Date: Sun Jan 13 00:34:14 2008
New Revision: 611546

URL: http://svn.apache.org/viewvc?rev=611546&view=rev
Log:
Changed the data collection getAll method to return an array of Entry objects instead of a Map as a Map can't be easily described using WSDL and XSD and won't work with Web Service interactions.

Added:
    incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomFeedEntryUtil.java
      - copied, changed from r609080, incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomEntryUtil.java
    incubator/tuscany/java/sca/modules/implementation-data-api/src/main/java/org/apache/tuscany/sca/implementation/data/collection/Entry.java   (with props)
Removed:
    incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomEntryUtil.java
Modified:
    incubator/tuscany/java/sca/modules/binding-feed/pom.xml
    incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomBindingInvoker.java
    incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomReferenceBindingProvider.java
    incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListenerServlet.java
    incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/RSSBindingInvoker.java
    incubator/tuscany/java/sca/modules/implementation-data-api/src/main/java/org/apache/tuscany/sca/implementation/data/collection/Collection.java

Modified: incubator/tuscany/java/sca/modules/binding-feed/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-feed/pom.xml?rev=611546&r1=611545&r2=611546&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-feed/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/binding-feed/pom.xml Sun Jan 13 00:34:14 2008
@@ -44,6 +44,12 @@
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-implementation-data-api</artifactId>
+            <version>1.2-incubating-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-core-spi</artifactId>
             <version>1.2-incubating-SNAPSHOT</version>
         </dependency>

Modified: incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomBindingInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomBindingInvoker.java?rev=611546&r1=611545&r2=611546&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomBindingInvoker.java (original)
+++ incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomBindingInvoker.java Sun Jan 13 00:34:14 2008
@@ -40,6 +40,8 @@
 
 /**
  * Invoker for the Atom binding.
+ * 
+ * @version $Rev$ $Date$
  */
 class AtomBindingInvoker implements Invoker {
 
@@ -47,6 +49,8 @@
     String uri;
     HttpClient httpClient;
     String authorizationHeader;
+    
+    //FIXME Support conversion to/from data api entries 
 
     AtomBindingInvoker(Operation operation, String uri, HttpClient httpClient, String authorizationHeader) {
         this.operation = operation;
@@ -64,8 +68,6 @@
 
     /**
      * Get operation invoker
-     * 
-     * @version $Rev$ $Date$
      */
     public static class GetInvoker extends AtomBindingInvoker {
 
@@ -88,9 +90,9 @@
 
                 // Read the Atom entry
                 if (status == 200) {
-                    Entry entry =
-                        AtomEntryUtil.readEntry("atom_1.0", new InputStreamReader(getMethod.getResponseBodyAsStream()));
-                    msg.setBody(entry);
+                    Entry feedEntry =
+                        AtomFeedEntryUtil.readFeedEntry("atom_1.0", new InputStreamReader(getMethod.getResponseBodyAsStream()));
+                    msg.setBody(feedEntry);
 
                 } else if (status == 404) {
                     msg.setFaultBody(new NotFoundException());
@@ -110,8 +112,6 @@
 
     /**
      * Post operation invoker
-     * 
-     * @version $Rev$ $Date$
      */
     public static class PostInvoker extends AtomBindingInvoker {
 
@@ -123,7 +123,7 @@
         public Message invoke(Message msg) {
 
             // Post an entry
-            Entry entry = (Entry)((Object[])msg.getBody())[0];
+            Entry feedEntry = (Entry)((Object[])msg.getBody())[0];
 
             // Send an HTTP POST
             PostMethod postMethod = new PostMethod(uri);
@@ -132,7 +132,7 @@
 
                 // Write the Atom entry
                 StringWriter writer = new StringWriter();
-                AtomEntryUtil.writeEntry(entry, "atom_1.0", writer);
+                AtomFeedEntryUtil.writeFeedEntry(feedEntry, "atom_1.0", writer);
                 postMethod.setRequestHeader("Content-type", "application/atom+xml; charset=utf-8");
                 postMethod.setRequestEntity(new StringRequestEntity(writer.toString()));
 
@@ -142,8 +142,8 @@
                 // Read the Atom entry
                 if (status == 200 || status == 201) {
                     Entry createdEntry =
-                        AtomEntryUtil
-                            .readEntry("atom_1.0", new InputStreamReader(postMethod.getResponseBodyAsStream()));
+                        AtomFeedEntryUtil
+                            .readFeedEntry("atom_1.0", new InputStreamReader(postMethod.getResponseBodyAsStream()));
                     msg.setBody(createdEntry);
 
                 } else if (status == 404) {
@@ -164,8 +164,6 @@
 
     /**
      * Put operation invoker
-     * 
-     * @version $Rev$ $Date$
      */
     public static class PutInvoker extends AtomBindingInvoker {
 
@@ -179,7 +177,7 @@
             // Put an entry
             Object[] args = (Object[])msg.getBody();
             String id = (String)args[0];
-            Entry entry = (Entry)args[1];
+            Entry feedEntry = (Entry)args[1];
 
             // Send an HTTP PUT
             PutMethod putMethod = new PutMethod(uri + "/" + id);
@@ -188,7 +186,7 @@
 
                 // Write the Atom entry
                 StringWriter writer = new StringWriter();
-                AtomEntryUtil.writeEntry(entry, "atom_1.0", writer);
+                AtomFeedEntryUtil.writeFeedEntry(feedEntry, "atom_1.0", writer);
                 putMethod.setRequestHeader("Content-type", "application/atom+xml; charset=utf-8");
                 putMethod.setRequestEntity(new StringRequestEntity(writer.toString()));
 
@@ -199,7 +197,7 @@
                 if (status == 200 || status == 201) {
                     try {
                         Entry updatedEntry =
-                            AtomEntryUtil.readEntry("atom_1.0", new InputStreamReader(putMethod
+                            AtomFeedEntryUtil.readFeedEntry("atom_1.0", new InputStreamReader(putMethod
                                 .getResponseBodyAsStream()));
                         msg.setBody(updatedEntry);
                     } catch (Exception e) {
@@ -224,8 +222,6 @@
 
     /**
      * Delete operation invoker
-     * 
-     * @version $Rev$ $Date$
      */
     public static class DeleteInvoker extends AtomBindingInvoker {
 
@@ -267,13 +263,11 @@
     }
 
     /**
-     * GetCollection operation invoker
-     * 
-     * @version $Rev$ $Date$
+     * GetAll operation invoker
      */
-    public static class GetCollectionInvoker extends AtomBindingInvoker {
+    public static class GetAllInvoker extends AtomBindingInvoker {
 
-        public GetCollectionInvoker(Operation operation, String uri, HttpClient httpClient, String authorizationHeader) {
+        public GetAllInvoker(Operation operation, String uri, HttpClient httpClient, String authorizationHeader) {
             super(operation, uri, httpClient, authorizationHeader);
         }
 
@@ -313,8 +307,6 @@
 
     /**
      * PostMedia operation invoker
-     * 
-     * @version $Rev$ $Date$
      */
     public static class PostMediaInvoker extends AtomBindingInvoker {
 
@@ -331,8 +323,6 @@
 
     /**
      * PutMedia operation invoker
-     * 
-     * @version $Rev$ $Date$
      */
     public static class PutMediaInvoker extends AtomBindingInvoker {
 

Copied: incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomFeedEntryUtil.java (from r609080, incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomEntryUtil.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomFeedEntryUtil.java?p2=incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomFeedEntryUtil.java&p1=incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomEntryUtil.java&r1=609080&r2=611546&rev=611546&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomEntryUtil.java (original)
+++ incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomFeedEntryUtil.java Sun Jan 13 00:34:14 2008
@@ -26,8 +26,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.servlet.ServletException;
-
 import org.jdom.Document;
 import org.jdom.Element;
 import org.jdom.JDOMException;
@@ -47,7 +45,7 @@
  *
  * @version $Rev$ $Date$
  */
-class AtomEntryUtil {
+class AtomFeedEntryUtil {
 
     /**
      * Read an Atom entry
@@ -59,7 +57,7 @@
      * @throws FeedException
      * @throws IllegalArgumentException
      */
-    static Entry readEntry(String feedType, Reader reader) throws JDOMException, IOException, IllegalArgumentException,
+    static Entry readFeedEntry(String feedType, Reader reader) throws JDOMException, IOException, IllegalArgumentException,
         FeedException {
         SAXBuilder builder = new SAXBuilder();
         Document document = builder.build(reader);
@@ -72,9 +70,9 @@
         document.getRootElement().addContent(root);
         WireFeedInput input = new WireFeedInput();
         feed = (Feed)input.build(document);
-        Entry entry = (Entry)feed.getEntries().get(0);
-        if (entry.getContents().size() != 0) {
-            Content content = (Content)entry.getContents().get(0);
+        Entry feedEntry = (Entry)feed.getEntries().get(0);
+        if (feedEntry.getContents().size() != 0) {
+            Content content = (Content)feedEntry.getContents().get(0);
             if ("text/xml".equals(content.getType())) {
                 Element element = root.getChild("content", root.getNamespace());
                 if (!element.getChildren().isEmpty()) {
@@ -86,7 +84,7 @@
                 }
             }
         }
-        return entry;
+        return feedEntry;
     }
 
     /**
@@ -99,13 +97,13 @@
      * @throws IOException
      * @throws ServletException
      */
-    static void writeEntry(Entry entry, String feedType, Writer writer) throws IllegalArgumentException, FeedException,
+    static void writeFeedEntry(Entry feedEntry, String feedType, Writer writer) throws IllegalArgumentException, FeedException,
         IOException {
         Feed feed = new Feed();
         feed.setFeedType(feedType);
-        List<Entry> entries = new ArrayList<Entry>();
-        entries.add(entry);
-        feed.setEntries(entries);
+        List<Entry> feedEntries = new ArrayList<Entry>();
+        feedEntries.add(feedEntry);
+        feed.setEntries(feedEntries);
 
         WireFeedOutput wireFeedOutput = new WireFeedOutput();
         Document document = wireFeedOutput.outputJDom(feed);

Modified: incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomReferenceBindingProvider.java?rev=611546&r1=611545&r2=611546&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomReferenceBindingProvider.java (original)
+++ incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/AtomReferenceBindingProvider.java Sun Jan 13 00:34:14 2008
@@ -45,6 +45,12 @@
     private String authorizationHeader;
     private HttpClient httpClient;
 
+    /**
+     * Construcst a new AtomReferenceBindingProvider
+     * @param component
+     * @param reference
+     * @param binding
+     */
     AtomReferenceBindingProvider(RuntimeComponent component,
                                         RuntimeComponentReference reference,
                                         AtomBinding binding) {
@@ -71,8 +77,8 @@
         } else if (operationName.equals("delete")) {
             return new AtomBindingInvoker.DeleteInvoker(operation, binding.getURI(), httpClient,
                                                         authorizationHeader);
-        } else if (operationName.equals("getFeed")) {
-            return new AtomBindingInvoker.GetCollectionInvoker(operation, binding.getURI(), httpClient,
+        } else if (operationName.equals("getFeed") || operationName.equals("getAll")) {
+            return new AtomBindingInvoker.GetAllInvoker(operation, binding.getURI(), httpClient,
                                                                authorizationHeader);
         } else if (operationName.equals("postMedia")) {
             return new AtomBindingInvoker.PostMediaInvoker(operation, binding.getURI(), httpClient,

Modified: incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListenerServlet.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListenerServlet.java?rev=611546&r1=611545&r2=611546&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListenerServlet.java (original)
+++ incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListenerServlet.java Sun Jan 13 00:34:14 2008
@@ -25,7 +25,6 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.logging.Logger;
 
@@ -90,7 +89,7 @@
     private Mediator mediator;
     private DataType<?> itemClassType;
     private DataType<?> itemXMLType;
-    private boolean supportsEntries;
+    private boolean supportsFeedEntries;
 
     /**
      * Constructs a new binding listener.
@@ -136,7 +135,7 @@
         itemXMLType = new DataTypeImpl<Class<?>>(String.class.getName(), String.class, String.class);
         Class<?> itemClass = getOperation.getOutputType().getPhysical();
         if (itemClass == Entry.class) {
-            supportsEntries = true;
+            supportsFeedEntries = true;
         }
         DataType<XMLType> outputType = getOperation.getOutputType();
         QName qname = outputType.getLogical().getElementName();
@@ -201,7 +200,7 @@
 
                 // Return a feed containing the entries in the collection
                 Feed feed = null;
-                if (supportsEntries) {
+                if (supportsFeedEntries) {
 
                     // The service implementation supports feed entries, invoke its getFeed operation
                     Message requestMessage = messageFactory.createMessage();
@@ -221,14 +220,15 @@
                     if (responseMessage.isFault()) {
                         throw new ServletException((Throwable)responseMessage.getBody());
                     }
-                    Map<Object, Object> collection = (Map<Object, Object>)responseMessage.getBody();
+                    org.apache.tuscany.sca.implementation.data.collection.Entry<Object, Object>[] collection =
+                        (org.apache.tuscany.sca.implementation.data.collection.Entry<Object, Object>[])responseMessage.getBody();
                     if (collection != null) {
                         // Create the feed
                         feed = new Feed();
                         feed.setTitle("Feed");
-                        for (Map.Entry<Object, Object> item: collection.entrySet()) {
-                            Entry entry = createEntry(item.getKey(), item.getValue());
-                            feed.getEntries().add(entry);
+                        for (org.apache.tuscany.sca.implementation.data.collection.Entry<Object, Object> entry: collection) {
+                            Entry feedEntry = createFeedEntry(entry.getKey(), entry.getData());
+                            feed.getEntries().add(feedEntry);
                         }
                     }
                 }
@@ -250,7 +250,7 @@
             } else if (path.startsWith("/")) {
 
                 // Return a specific entry in the collection
-                Entry entry;
+                Entry feedEntry;
 
                 // Invoke the get operation on the service implementation
                 Message requestMessage = messageFactory.createMessage();
@@ -260,23 +260,23 @@
                 if (responseMessage.isFault()) {
                     throw new ServletException((Throwable)responseMessage.getBody());
                 }
-                if (supportsEntries) {
+                if (supportsFeedEntries) {
                     
                     // The service implementation returns a feed entry 
-                    entry = responseMessage.getBody();
+                    feedEntry = responseMessage.getBody();
                     
                 } else {
                     
                     // The service implementation only returns a data item, create an entry
                     // from it
-                    entry = createEntry(id, responseMessage.getBody());
+                    feedEntry = createFeedEntry(id, responseMessage.getBody());
                 }
 
                 // Write the Atom entry
-                if (entry != null) {
+                if (feedEntry != null) {
                     response.setContentType("application/atom+xml; charset=utf-8");
                     try {
-                        AtomEntryUtil.writeEntry(entry, feedType, getWriter(response));
+                        AtomFeedEntryUtil.writeFeedEntry(feedEntry, feedType, getWriter(response));
                     } catch (FeedException e) {
                         throw new ServletException(e);
                     }
@@ -296,7 +296,7 @@
 
                 // Return an RSS feed containing the entries in the collection
                 Feed feed = null;
-                if (supportsEntries) {
+                if (supportsFeedEntries) {
 
                     // The service implementation supports feed entries, invoke its getFeed operation
                     Message requestMessage = messageFactory.createMessage();
@@ -316,14 +316,15 @@
                     if (responseMessage.isFault()) {
                         throw new ServletException((Throwable)responseMessage.getBody());
                     }
-                    Map<Object, Object> collection = (Map<Object, Object>)responseMessage.getBody();
+                    org.apache.tuscany.sca.implementation.data.collection.Entry<Object, Object>[] collection =
+                        (org.apache.tuscany.sca.implementation.data.collection.Entry<Object, Object>[])responseMessage.getBody();
                     if (collection != null) {
                         // Create the feed
                         feed = new Feed();
                         feed.setTitle("Feed");
-                        for (Map.Entry<Object, Object> item: collection.entrySet()) {
-                            Entry entry = createEntry(item.getKey(), item.getValue());
-                            feed.getEntries().add(entry);
+                        for (org.apache.tuscany.sca.implementation.data.collection.Entry<Object, Object> entry: collection) {
+                            Entry feedEntry = createFeedEntry(entry.getKey(), entry.getData());
+                            feed.getEntries().add(feedEntry);
                         }
                     }
                 }
@@ -355,11 +356,11 @@
      * @param item
      * @return
      */
-    private Entry createEntry(Object key, Object item) {
+    private Entry createFeedEntry(Object key, Object item) {
         if (item != null) {
-            Entry entry = new Entry();
-            entry.setId(key.toString());
-            entry.setTitle("item");
+            Entry feedEntry = new Entry();
+            feedEntry.setId(key.toString());
+            feedEntry.setTitle("item");
     
             // Convert the item to XML
             String value = mediator.mediate(item, itemClassType, itemXMLType, null).toString();
@@ -370,19 +371,19 @@
             content.setValue(value);
             List<Content> contents = new ArrayList<Content>();
             contents.add(content);
-            entry.setContents(contents);
+            feedEntry.setContents(contents);
     
             Link link = new Link();
             link.setRel("edit");
             link.setHref(key.toString());
-            entry.getOtherLinks().add(link);
+            feedEntry.getOtherLinks().add(link);
             link = new Link();
             link.setRel("alternate");
             link.setHref(key.toString());
-            entry.getAlternateLinks().add(link);
+            feedEntry.getAlternateLinks().add(link);
     
-            entry.setCreated(new Date());
-            return entry;
+            feedEntry.setCreated(new Date());
+            return feedEntry;
         } else {
             return null;
         }
@@ -394,9 +395,9 @@
      * @param item
      * @return
      */
-    private Object createItem(Entry entry) {
-        if (entry != null) {
-            List<?> contents = entry.getContents();
+    private Object createItem(Entry feedEntry) {
+        if (feedEntry != null) {
+            List<?> contents = feedEntry.getContents();
             if (contents.isEmpty()) {
                 return null;
             }
@@ -427,16 +428,16 @@
         String path = request.getPathInfo();
 
         if (path == null || path.length() == 0 || path.equals("/")) {
-            Entry createdEntry = null;
+            Entry createdFeedEntry = null;
 
             // Create a new Atom entry
             String contentType = request.getContentType();
             if (contentType.startsWith("application/atom+xml")) {
 
                 // Read the entry from the request
-                Entry entry;
+                Entry feedEntry;
                 try {
-                    entry = AtomEntryUtil.readEntry(feedType, request.getReader());
+                    feedEntry = AtomFeedEntryUtil.readFeedEntry(feedType, request.getReader());
                 } catch (JDOMException e) {
                     throw new ServletException(e);
                 } catch (FeedException e) {
@@ -444,28 +445,28 @@
                 }
 
                 // Let the component implementation create it
-                if (supportsEntries) {
+                if (supportsFeedEntries) {
                     
                     // The service implementation supports feed entries, pass the entry to it
                     Message requestMessage = messageFactory.createMessage();
-                    requestMessage.setBody(new Object[] {entry});
+                    requestMessage.setBody(new Object[] {feedEntry});
                     Message responseMessage = postInvoker.invoke(requestMessage);
                     if (responseMessage.isFault()) {
                         throw new ServletException((Throwable)responseMessage.getBody());
                     }
-                    createdEntry = responseMessage.getBody();
+                    createdFeedEntry = responseMessage.getBody();
                 } else {
                     
                     // The service implementation does not support feed entries, pass the data item to it
                     Message requestMessage = messageFactory.createMessage();
-                    Object item = createItem(entry);
+                    Object item = createItem(feedEntry);
                     requestMessage.setBody(new Object[] {item});
                     Message responseMessage = postInvoker.invoke(requestMessage);
                     if (responseMessage.isFault()) {
                         throw new ServletException((Throwable)responseMessage.getBody());
                     }
                     Object key = responseMessage.getBody();
-                    createdEntry = createEntry(key, item);
+                    createdFeedEntry = createFeedEntry(key, item);
                 }
 
             } else if (contentType != null) {
@@ -483,16 +484,16 @@
                 if (responseMessage.isFault()) {
                     throw new ServletException((Throwable)responseMessage.getBody());
                 }
-                createdEntry = responseMessage.getBody();
+                createdFeedEntry = responseMessage.getBody();
             } else {
                 response.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);
             }
 
             // A new entry was created successfully
-            if (createdEntry != null) {
+            if (createdFeedEntry != null) {
 
                 // Set location of the created entry in the Location header
-                for (Object l : createdEntry.getOtherLinks()) {
+                for (Object l : createdFeedEntry.getOtherLinks()) {
                     Link link = (Link)l;
                     if (link.getRel() == null || "edit".equals(link.getRel())) {
                         response.addHeader("Location", link.getHref());
@@ -504,7 +505,7 @@
                 response.setStatus(HttpServletResponse.SC_CREATED);
                 response.setContentType("application/atom+xml; charset=utf-8");
                 try {
-                    AtomEntryUtil.writeEntry(createdEntry, feedType, getWriter(response));
+                    AtomFeedEntryUtil.writeFeedEntry(createdFeedEntry, feedType, getWriter(response));
                 } catch (FeedException e) {
                     throw new ServletException(e);
                 }
@@ -544,9 +545,9 @@
             if (contentType.startsWith("application/atom+xml")) {
 
                 // Read the entry from the request
-                Entry entry;
+                Entry feedEntry;
                 try {
-                    entry = AtomEntryUtil.readEntry(feedType, request.getReader());
+                    feedEntry = AtomFeedEntryUtil.readFeedEntry(feedType, request.getReader());
                 } catch (JDOMException e) {
                     throw new ServletException(e);
                 } catch (FeedException e) {
@@ -554,11 +555,11 @@
                 }
 
                 // Let the component implementation create it
-                if (supportsEntries) {
+                if (supportsFeedEntries) {
                     
                     // The service implementation supports feed entries, pass the entry to it
                     Message requestMessage = messageFactory.createMessage();
-                    requestMessage.setBody(new Object[] {id, entry});
+                    requestMessage.setBody(new Object[] {id, feedEntry});
                     Message responseMessage = putInvoker.invoke(requestMessage);
                     if (responseMessage.isFault()) {
                         Object body = responseMessage.getBody();
@@ -572,7 +573,7 @@
                     
                     // The service implementation does not support feed entries, pass the data item to it
                     Message requestMessage = messageFactory.createMessage();
-                    Object item = createItem(entry);
+                    Object item = createItem(feedEntry);
                     requestMessage.setBody(new Object[] {id, item});
                     Message responseMessage = putInvoker.invoke(requestMessage);
                     if (responseMessage.isFault()) {

Modified: incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/RSSBindingInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/RSSBindingInvoker.java?rev=611546&r1=611545&r2=611546&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/RSSBindingInvoker.java (original)
+++ incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/RSSBindingInvoker.java Sun Jan 13 00:34:14 2008
@@ -65,6 +65,9 @@
                 SyndFeed syndFeed = input.build(new XmlReader(new URL(uri)));
                 feed = (Feed)syndFeed.createWireFeed("atom_1.0");
             }
+            
+            //FIXME Support conversion to data-api entries
+            
             msg.setBody(feed);
 
         } catch (MalformedURLException e) {

Modified: incubator/tuscany/java/sca/modules/implementation-data-api/src/main/java/org/apache/tuscany/sca/implementation/data/collection/Collection.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-data-api/src/main/java/org/apache/tuscany/sca/implementation/data/collection/Collection.java?rev=611546&r1=611545&r2=611546&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-data-api/src/main/java/org/apache/tuscany/sca/implementation/data/collection/Collection.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-data-api/src/main/java/org/apache/tuscany/sca/implementation/data/collection/Collection.java Sun Jan 13 00:34:14 2008
@@ -18,8 +18,6 @@
  */
 package org.apache.tuscany.sca.implementation.data.collection;
 
-import java.util.Map;
-
 import org.osoa.sca.annotations.Remotable;
 
 /**
@@ -35,14 +33,14 @@
      * 
      * @return the whole collection.
      */
-    Map<K, D> getAll();
+    Entry<K, D>[] getAll();
 
     /**
      * Returns a collection resulting from a query.
      * 
      * @return the collection.
      */
-    Map<K, D> query(String queryString);
+    Entry<K, D>[] query(String queryString);
 
     /**
      * Creates a new item.

Added: incubator/tuscany/java/sca/modules/implementation-data-api/src/main/java/org/apache/tuscany/sca/implementation/data/collection/Entry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-data-api/src/main/java/org/apache/tuscany/sca/implementation/data/collection/Entry.java?rev=611546&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-data-api/src/main/java/org/apache/tuscany/sca/implementation/data/collection/Entry.java (added)
+++ incubator/tuscany/java/sca/modules/implementation-data-api/src/main/java/org/apache/tuscany/sca/implementation/data/collection/Entry.java Sun Jan 13 00:34:14 2008
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.tuscany.sca.implementation.data.collection;
+
+
+/**
+ * Represents a key/data pair in a data collection.
+ * 
+ * @version $Rev$ $Date$
+ */
+public class Entry <K, D> {
+
+    private K key;
+    private D data;
+    
+    /**
+     * Constructs a new entry.
+     */
+    public Entry() {
+    }
+    
+    /**
+     * Constructs a new entry.
+     * @param key the entry key
+     * @param data the entry data
+     */
+    public Entry(K key, D data) {
+        this.key = key;
+        this.data = data;
+    }
+    
+    /**
+     * Returns the entry key.
+     * @return the key
+     */
+    public K getKey() {
+        return key;
+    }
+    
+    /**
+     * Sets the entry key.
+     * @param key the key
+     */
+    public void setKey(K key) {
+        this.key = key;
+    }
+    
+    /**
+     * Returns the entry data.
+     * @return the entry data
+     */
+    public D getData() {
+        return data;
+    }
+    
+    /**
+     * Sets the entry data
+     * @param data the entry data
+     */
+    public void setData(D data) {
+        this.data = data;
+    }
+    
+}

Propchange: incubator/tuscany/java/sca/modules/implementation-data-api/src/main/java/org/apache/tuscany/sca/implementation/data/collection/Entry.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/implementation-data-api/src/main/java/org/apache/tuscany/sca/implementation/data/collection/Entry.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org