Author: jsdelfino
Date: Wed Feb 20 13:52:12 2008
New Revision: 629626

URL: http://svn.apache.org/viewvc?rev=629626&view=rev
Log:
Added support for collections of Items.

Modified:
    
incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListenerServlet.java

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=629626&r1=629625&r2=629626&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
 Wed Feb 20 13:52:12 2008
@@ -28,7 +28,6 @@
 import java.util.StringTokenizer;
 import java.util.logging.Logger;
 
-import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
@@ -37,6 +36,7 @@
 
 import org.apache.commons.codec.binary.Base64;
 import org.apache.tuscany.sca.databinding.Mediator;
+import org.apache.tuscany.sca.implementation.data.collection.Item;
 import org.apache.tuscany.sca.interfacedef.DataType;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.interfacedef.impl.DataTypeImpl;
@@ -352,14 +352,51 @@
      * @param item
      * @return
      */
-    private Entry createFeedEntry(Object key, Object item) {
-        if (item != null) {
+    private Entry createFeedEntry(Object key, Object data) {
+        if (data instanceof Item) {
+            Item item = (Item)data;
+            
+            Entry feedEntry = new Entry();
+            feedEntry.setId(key.toString());
+            feedEntry.setTitle(item.getTitle());
+    
+            String value = item.getContents();
+            if (value != null) {
+                Content content = new Content();
+                content.setType("text/xml");
+                content.setValue(value);
+                List<Content> contents = new ArrayList<Content>();
+                contents.add(content);
+                feedEntry.setContents(contents);
+            }
+    
+            String href = item.getLink();
+            if (href == null) {
+                href = key.toString();
+            }
+            Link link = new Link();
+            link.setRel("edit");
+            link.setHref(href);
+            feedEntry.getOtherLinks().add(link);
+            link = new Link();
+            link.setRel("alternate");
+            link.setHref(href);
+            feedEntry.getAlternateLinks().add(link);
+    
+            Date date = item.getDate();
+            if (date == null) {
+                date = new Date();
+            }
+            feedEntry.setCreated(date);
+            return feedEntry;
+            
+        } else if (data != null) {
             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();
+            String value = mediator.mediate(data, itemClassType, itemXMLType, 
null).toString();
             value = value.substring(value.indexOf('>') +1);
             
             Content content = new Content();
@@ -393,17 +430,43 @@
      */
     private Object createItem(Entry feedEntry) {
         if (feedEntry != null) {
-            List<?> contents = feedEntry.getContents();
-            if (contents.isEmpty()) {
-                return null;
-            }
-            Content content = (Content)contents.get(0);
-    
-            // Create the item from XML
-            String value = content.getValue();
-            Object item = mediator.mediate(value, itemXMLType, itemClassType, 
null);
+            if (itemClassType.getPhysical() == Item.class) {
+                Item item = new Item();
+                
+                item.setTitle(feedEntry.getTitle());
+                
+                List<?> contents = feedEntry.getContents();
+                if (!contents.isEmpty()) {
+                    Content content = (Content)contents.get(0);
+                    String value = content.getValue();
+                    item.setContents(value);
+                }
+                
+                for (Object l : feedEntry.getOtherLinks()) {
+                    Link link = (Link)l;
+                    if (link.getRel() == null || "edit".equals(link.getRel())) 
{
+                        item.setLink(link.getHref());
+                        break;
+                    }
+                }
+                
+                item.setDate(feedEntry.getCreated());
+                
+                return item;
+                
+            } else {
+                
+                // Create the item from XML
+                List<?> contents = feedEntry.getContents();
+                if (contents.isEmpty()) {
+                    return null;
+                }
+                Content content = (Content)contents.get(0);
+                String value = content.getValue();
+                Object data = mediator.mediate(value, itemXMLType, 
itemClassType, null);
 
-            return item;
+                return data;
+            }
         } else {
             return null;
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to