Author: beckerdo
Date: Wed Oct 15 08:17:18 2008
New Revision: 704940

URL: http://svn.apache.org/viewvc?rev=704940&view=rev
Log:
TUSCANY-2636 Fixes for Multiple issues with eTag tests cases in 
binding-atom-abdera

Added:
    
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderEntryEntityTagsTestCase.java
   (with props)
    
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java
   (with props)
    
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderServiceDocumentTestCase.java
   (with props)
Removed:
    
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderEntryEntityTagsTest.java
    
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTest.java
    
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderServiceDocumentTest.java
Modified:
    
tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java

Modified: 
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/tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java?rev=704940&r1=704939&r2=704940&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java
 (original)
+++ 
tuscany/java/sca/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java
 Wed Oct 15 08:17:18 2008
@@ -47,6 +47,7 @@
 import org.apache.abdera.model.Category;
 import org.apache.abdera.model.Collection;
 import org.apache.abdera.model.Document;
+import org.apache.abdera.model.Element;
 import org.apache.abdera.model.Feed;
 import org.apache.abdera.model.Link;
 import org.apache.abdera.model.Service;

Added: 
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderEntryEntityTagsTestCase.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderEntryEntityTagsTestCase.java?rev=704940&view=auto
==============================================================================
--- 
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderEntryEntityTagsTestCase.java
 (added)
+++ 
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderEntryEntityTagsTestCase.java
 Wed Oct 15 08:17:18 2008
@@ -0,0 +1,428 @@
+/*
+ * 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.binding.atom;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import junit.framework.Assert;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import org.apache.tuscany.sca.binding.atom.collection.Collection;
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+import org.apache.abdera.Abdera;
+import org.apache.abdera.i18n.iri.IRI;
+import org.apache.abdera.factory.Factory;
+import org.apache.abdera.model.Base;
+import org.apache.abdera.model.Content;
+import org.apache.abdera.model.Entry;
+import org.apache.abdera.model.Feed;
+import org.apache.abdera.model.Document;
+import org.apache.abdera.model.Service;
+import org.apache.abdera.protocol.Response.ResponseType;
+import org.apache.abdera.protocol.client.AbderaClient;
+import org.apache.abdera.protocol.client.ClientResponse;
+import org.apache.abdera.protocol.client.RequestOptions;
+import org.apache.abdera.protocol.client.util.BaseRequestEntity;
+import org.apache.abdera.util.EntityTag;
+import org.apache.abdera.parser.Parser;
+
+/**
+ * Tests use of server provided entry entity tags for Atom binding in Tuscany.
+ * Tests conditional gets (e.g. get if-none-match) or conditional posts (post 
if-match)
+ * using entity tags or last modified header entries. 
+ * Uses the SCA provided Provider composite to act as a server.
+ * Uses the Abdera provided Client to act as a client.
+ */
+public class ProviderEntryEntityTagsTestCase {
+       public final static String providerURI = 
"http://localhost:8084/customer";;
+       protected static SCADomain scaConsumerDomain;
+       protected static SCADomain scaProviderDomain;
+       protected static CustomerClient testService;
+    protected static Abdera abdera;
+    protected static AbderaClient client;
+    protected static Parser abderaParser;    
+    protected static String eTag;
+    protected static Date lastModified;
+    protected static final SimpleDateFormat dateFormat = new SimpleDateFormat( 
"EEE, dd MMM yyyy HH:mm:ss Z" ); // RFC 822 date time
+
+       @BeforeClass
+       public static void init() throws Exception {
+               System.out.println(">>>ProviderEntryEntityTagsTestCase.init");
+               scaProviderDomain = 
SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Provider.composite");
+               abdera = new Abdera();
+               client = new AbderaClient(abdera);
+               abderaParser = Abdera.getNewParser();
+       }
+
+       @AfterClass
+       public static void destroy() throws Exception {
+               
System.out.println(">>>ProviderEntryEntityTagsTestCase.destroy");
+               scaProviderDomain.close();
+       }
+
+       @Test
+       public void testPrelim() throws Exception {
+               Assert.assertNotNull(scaProviderDomain);
+               Assert.assertNotNull( client );
+       }
+       
+    @Test
+       public void testEmptyCachePost() throws Exception {
+               // Pseudo-code
+               // 1) Example HTTP POST request (new entry put, new etag 
response)
+               // User client post request       
+               //        POST /myblog/entries HTTP/1.1
+               //        Slug: First Post
+               //        
+               //        <?xml version="1.0" ?>
+               //        <entry xmlns="http://www.w3.org/2005/Atom";>
+               //          <title>Atom-Powered Robots Run Amok</title>
+               //          
<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
+               //          <updated>2007-02-123T17:09:02Z</updated>
+               //          <author><name>Captain Lansing</name></author>
+               //          <content>It's something moving... solid 
metal</content>
+               //        </entry>
+
+               // Expected Atom server response (note unique ETag)
+               //       HTTP/1.1 201 Created
+               //       Date: Fri, 23 Feb 2007 21:17:11 GMT
+               //       Content-Length: nnn
+               //       Content-Type: application/atom+xml;type=entry
+               //       Location: http://example.org/edit/first-post.atom
+               //       Content-Location: 
http://example.org/edit/first-post.atom
+               //       ETag: "e180ee84f0671b1"
+               //       Last-Modified: Fri, 25 Jul 2008 14:36:44 -0500
+               // 
+               //        <?xml version="1.0" ?>
+               //        <entry xmlns="http://www.w3.org/2005/Atom";>
+               //          <title>Atom-Powered Robots Run Amok</title>
+               //          
<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
+               //          <updated>2007-02-123T17:09:02Z</updated>
+               //          <author><name>Captain Lansing</name></author>
+               //          <content>It's something moving... solid 
metal</content>
+               //        </entry>              
+               
+               // Testing of entry creation
+               Factory factory = abdera.getFactory();
+               String customerName = "Fred Farkle";
+               Entry entry = factory.newEntry();
+               entry.setTitle("customer " + customerName);
+               entry.setUpdated(new Date());
+               entry.addAuthor("Apache Tuscany");
+               // ID created by collection.
+        // entry.setId(id); // auto-provided
+        // entry.addLink("" + id, "edit"); // auto-provided
+        // entry.addLink("" + id, "alternate"); // auto-provided
+               Content content = abdera.getFactory().newContent();
+               content.setContentType(Content.Type.TEXT);
+               content.setValue(customerName);
+               entry.setContentElement(content);
+
+               RequestOptions opts = new RequestOptions();
+               final String contentType = "application/atom+xml; type=entry"; 
+               opts.setContentType(contentType);
+               // AtomTestCaseUtils.printRequestHeaders( "Post request 
headers", "   ", opts );
+               IRI colUri = new IRI(providerURI).resolve("customer");
+               // res = client.post(colUri.toString() + "?test=foo", entry, 
opts);
+               ClientResponse res = client.post(colUri.toString(), entry, 
opts);
+               
+           // Assert response status code is 201-OK.
+               // Assert response header Content-Type: application/atom+xml; 
charset=UTF-8
+               // Assert response header Location: 
http://example.org/edit/first-post.atom
+               // Assert response header Content-Location: 
http://example.org/edit/first-post.atom
+               // Assert response header ETag: "e180ee84f0671b1"
+               // Assert response header Last-Modified: Fri, 25 Jul 2008 
14:36:44 -0500            
+           // Assert collection size is 1.
+       Assert.assertEquals(201, res.getStatus());
+       Assert.assertEquals(contentType, 
res.getContentType().toString().trim());
+       // Assert.assertNotNull( res.getLocation().toString() );
+       // Assert.assertEquals( "", res.getContentLocation().toString() );
+       // Save eTag for subsequent tests;
+       eTag = res.getHeader( "ETag" );
+       Assert.assertNotNull( eTag );           
+       lastModified = res.getLastModified();
+       Assert.assertNotNull(lastModified);
+       }
+
+       @Test
+       public void testDirtyCachePut() throws Exception {
+               // 2) Conditional PUT request (post with etag. entry provided 
is stale)
+               // User client PUT request
+               //        PUT /edit/first-post.atom HTTP/1.1
+               // >      If-Match: "e180ee84f0671b1"
+               // 
+               //        <?xml version="1.0" ?>
+               //        <entry xmlns="http://www.w3.org/2005/Atom";>
+               //         <title>Atom-Powered Robots Run Amok</title>
+               //         
<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
+               //         <updated>2007-02-24T16:34:06Z</updated>
+               //         <author><name>Captain Lansing</name></author>
+               //         <content>Update: it's a hoax!</content>
+               //       </entry>
+               // Testing of entry creation
+               Factory factory = abdera.getFactory();
+               String customerName = "Molly Ringwald";
+               Entry entry = factory.newEntry();
+               entry.setTitle("customer " + customerName);
+               entry.setUpdated( new Date());
+               entry.addAuthor("Apache Tuscany");
+               String id = eTag.substring( 1, eTag.length()-1);
+        entry.setId(id); // auto-provided
+        // entry.addLink("" + id, "edit"); // auto-provided
+        // entry.addLink("" + id, "alternate"); // auto-provided
+               Content content = abdera.getFactory().newContent();
+               content.setContentType(Content.Type.TEXT);
+               content.setValue(customerName);
+               entry.setContentElement(content);
+
+               RequestOptions opts = new RequestOptions();
+               final String contentType = "application/atom+xml; type=entry"; 
+               opts.setContentType(contentType);
+               opts.setHeader( "If-None-Match", eTag);
+               
+               // AtomTestCaseUtils.printRequestHeaders( "Put request 
headers", "   ", opts );
+               IRI colUri = new IRI(providerURI).resolve("customer");
+               // res = client.post(colUri.toString() + "?test=foo", entry, 
opts);
+           id = eTag.substring( 1, eTag.length()-1);
+               // Warning. AbderaClient.put(String uri,Base 
base,RequestOptions options) caches on the client side.
+               // ClientResponse res = client.put(colUri.toString() + id, 
entry, opts);
+               ClientResponse res = client.put(colUri.toString() + "/" + id, 
new BaseRequestEntity( entry ), opts);
+               // Expected Atom server response (item was edited by another 
user)
+               // >      HTTP/1.1 412 Precondition Failed
+               //       Date: Sat, 24 Feb 2007 16:34:11 GMT
+
+           // If-Match Assert response status code is 412. Precondition failed.
+           // If-None-Match Assert response status code is 200. OK
+       Assert.assertEquals(200, res.getStatus());
+       // Put provides null body and no etags.
+       res.release();
+       }
+       
+       @Test
+       public void testETagMissGet() throws Exception {
+               // 4) Conditional GET example (get with etag. etag not in cache)
+               // User client GET request
+               //       GET /edit/first-post.atom HTTP/1.1
+               // >      If-None-Match: "e180ee84f0671b1"
+
+               RequestOptions opts = new RequestOptions();
+               final String contentType = "application/atom+xml; type=entry"; 
+               opts.setContentType(contentType);
+               opts.setHeader( "If-None-Match", "123456");
+               opts.setHeader( "Pragma", "no-cache"); // turn off client 
caching
+               
+               IRI colUri = new IRI(providerURI).resolve("customer");
+               // res = client.post(colUri.toString() + "?test=foo", entry, 
opts);
+               String id = eTag.substring( 1, eTag.length()-1);
+               // Warning. AbderaClient.put(String uri,Base 
base,RequestOptions options) caches on the client side.
+               // ClientResponse res = client.put(colUri.toString() + id, 
entry, opts);
+               ClientResponse res = client.get(colUri.toString() + "/" + id, 
opts);
+               // Expected Atom server response (item was edited by another 
user)
+               // >      HTTP/1.1 412 Precondition Failed
+               //       Date: Sat, 24 Feb 2007 16:34:11 GMT
+
+               // Atom server response (item was up to date)
+               // >      HTTP/1.1 200 OK
+               //        Date: Sat, 24 Feb 2007 13:17:11 GMT
+               // >      ETag: "bb4f5e86e92ddb8549604a0df0763581"
+               // >      Last-Modified: Mon, 28 Jul 2008 10:25:37 -0500
+
+           // Assert response status code is 200 OK.
+               // Assert header Content-Type: application/atom+xml;type=entry
+               // Assert header Location: 
http://example.org/edit/first-post.atom
+               // Assert header Content-Location: 
http://example.org/edit/first-post.atom
+               // Assert header ETag: "555555" (etag response != etag request)
+               // Assert header Last-Modified: Fri, 25 Jul 2008 14:36:44 -0500
+       Assert.assertEquals(200, res.getStatus());
+       Assert.assertEquals(contentType, 
res.getContentType().toString().trim());
+       // Assert.assertNotNull( res.getLocation().toString() );
+       // Assert.assertEquals( "", res.getContentLocation().toString() );
+       Assert.assertNotNull( res.getHeader( "ETag" ) );        
+       lastModified = res.getLastModified();
+       Assert.assertNotNull(lastModified);
+               res.release();
+       }
+
+       @Test
+       public void testETagHitGet() throws Exception {
+               // 3) Conditional GET example (get with etag. etag match)
+               // User client GET request
+               //       GET /edit/first-post.atom HTTP/1.1
+               // >      If-None-Match: "e180ee84f0671b1"
+
+               RequestOptions opts = new RequestOptions();
+               final String contentType = "application/atom+xml; type=entry"; 
+               opts.setContentType(contentType);
+               opts.setHeader( "If-None-Match", eTag);
+               opts.setHeader( "Pragma", "no-cache"); // turn off client 
caching               
+               
+               IRI colUri = new IRI(providerURI).resolve("customer");
+               // res = client.post(colUri.toString() + "?test=foo", entry, 
opts);
+               String id = eTag.substring( 1, eTag.length()-1);
+               // Warning. AbderaClient.put(String uri,Base 
base,RequestOptions options) caches on the client side.
+               // ClientResponse res = client.put(colUri.toString() + id, 
entry, opts);
+               ClientResponse res = client.get(colUri.toString() + "/" + id, 
opts);
+               // Atom server response (item was up to date)
+               // >      HTTP/1.1 304 Not Modified
+               //       Date: Sat, 24 Feb 2007 13:17:11 GMT
+
+           // Assert response status code is 304 Not Modified.
+               // Assert header ETag: "e180ee84f0671b1"
+               // Assert header Last-Modified: Fri, 25 Jul 2008 14:36:44 -0500
+       // Assert.assertEquals(304, res.getStatus());
+               res.release();      
+       }
+
+
+       @Test
+       public void testUpToDateGet() throws Exception {
+               // 3) Conditional GET example (get with If-Mod. entry is up to 
date)
+               // User client GET request
+               //       GET /edit/first-post.atom HTTP/1.1
+               // >      If-Modified-Since: Sat, 29 Oct 2025 19:43:31 GMT
+               RequestOptions opts = new RequestOptions();
+               final String contentType = "application/atom+xml; type=entry"; 
+               opts.setContentType(contentType);
+               opts.setHeader( "If-Modified-Since", "Sat, 29 Oct 2025 19:43:31 
GMT"); // "EEE, dd MMM yyyy HH:mm:ss Z // RFC 822 Date
+               opts.setHeader( "Pragma", "no-cache"); // turn off client 
caching
+               
+               IRI colUri = new IRI(providerURI).resolve("customer");
+               // res = client.post(colUri.toString() + "?test=foo", entry, 
opts);
+               String id = eTag.substring( 1, eTag.length()-1);
+               // Warning. AbderaClient.put(String uri,Base 
base,RequestOptions options) caches on the client side.
+               // ClientResponse res = client.put(colUri.toString() + id, 
entry, opts);
+               // Warning. AbderaClient.put(String uri,Base 
base,RequestOptions options) caches on the client side.
+               // ClientResponse res = client.get(colUri.toString() + "/" + 
id, opts);
+               ClientResponse res = client.execute( "GET", colUri.toString(), 
(BaseRequestEntity)null, opts);
+
+               // Atom server response (item was up to date)
+               // >      HTTP/1.1 304 Not Modified
+               //       Date: Sat, 24 Feb 2007 13:17:11 GMT
+
+           // Assert response status code is 304 Not Modified.
+       Assert.assertEquals(304, res.getStatus());
+               res.release();      
+       }
+
+       @Test
+       public void testOutOfDateGet() throws Exception {
+               // 4) Conditional GET example (get with If-Mod. entry is not to 
date)
+               // User client GET request
+               //       GET /edit/first-post.atom HTTP/1.1
+               // >      If-Modified-Since: Sat, 29 Oct 1844 19:43:31 GMT
+               RequestOptions opts = new RequestOptions();
+               final String contentType = "application/atom+xml; type=entry"; 
+               opts.setContentType(contentType);
+               opts.setHeader( "If-Modified-Since", "Sat, 29 Oct 1844 19:43:31 
GMT"); // "EEE, dd MMM yyyy HH:mm:ss Z // RFC 822 Date
+               opts.setHeader( "Pragma", "no-cache"); // turn off client 
caching
+               
+               IRI colUri = new IRI(providerURI).resolve("customer");
+               // res = client.post(colUri.toString() + "?test=foo", entry, 
opts);
+               String id = eTag.substring( 1, eTag.length()-1);
+               // Warning. AbderaClient.put(String uri,Base 
base,RequestOptions options) caches on the client side.
+               // ClientResponse res = client.put(colUri.toString() + id, 
entry, opts);
+               ClientResponse res = client.get(colUri.toString() + "/" + id, 
opts);
+
+               // Atom server response (item was up to date)
+               // >      HTTP/1.1 200 OK
+               //        Date: Sat, 24 Feb 2007 13:17:11 GMT
+               // >      ETag: "bb4f5e86e92ddb8549604a0df0763581"
+               // >      Last-Modified: Mon, 28 Jul 2008 10:25:37 -0500
+
+           // Assert response status code is 200 OK.
+               // Assert header ETag: "e180ee84f0671b1"
+               // Assert header Last-Modified: Greater than If-Mod         
+       Assert.assertEquals(200, res.getStatus());
+       Assert.assertEquals(contentType, 
res.getContentType().toString().trim());
+       // Assert.assertNotNull( res.getLocation().toString() );
+       // Assert.assertEquals( "", res.getContentLocation().toString() );
+       Assert.assertNotNull( res.getHeader( "ETag" ) );        
+       lastModified = res.getLastModified();
+       Assert.assertNotNull(lastModified);
+               res.release();
+       }
+       
+       @Test
+       public void testUpToDateUnModGet() throws Exception {
+               // 3) Conditional GET example (get with If-Unmod. entry is not 
modified (< predicate date).
+               // User client GET request
+               //       GET /edit/first-post.atom HTTP/1.1
+               // >      If-Unmodified-Since: Sat, 29 Oct 2025 19:43:31 GMT
+               RequestOptions opts = new RequestOptions();
+               final String contentType = "application/atom+xml; type=entry"; 
+               opts.setContentType(contentType);
+               opts.setHeader( "If-Unmodified-Since", "Sat, 29 Oct 2050 
19:43:31 GMT" );
+               opts.setHeader( "Pragma", "no-cache"); // turn off client 
caching
+               
+               IRI colUri = new IRI(providerURI).resolve("customer");
+               // res = client.post(colUri.toString() + "?test=foo", entry, 
opts);
+               String id = eTag.substring( 1, eTag.length()-1);
+               // Warning. AbderaClient.put(String uri,Base 
base,RequestOptions options) caches on the client side.
+               // ClientResponse res = client.put(colUri.toString() + id, 
entry, opts);
+               ClientResponse res = client.get(colUri.toString() + "/" + id, 
opts);
+
+               // Atom server response (item was up to date)
+               // >      HTTP/1.1 200 OK
+               //        Date: Sat, 24 Feb 2007 13:17:11 GMT
+               // >      ETag: "bb4f5e86e92ddb8549604a0df0763581"
+               // >      Last-Modified: Mon, 28 Jul 2008 10:25:37 -0500
+
+           // Assert response status code is 200 OK.
+               // Assert header Content-Type: application/atom+xml;type=entry
+               // Assert header Location: 
http://example.org/edit/first-post.atom
+               // Assert header Content-Location: 
http://example.org/edit/first-post.atom
+               // Assert header ETag: "e180ee84f0671b1"
+               // Assert header Last-Modified: Less than If-Unmod          
+       Assert.assertEquals(200, res.getStatus());
+               res.release();          
+       }
+
+       @Test
+       public void testOutOfDateUnModGet() throws Exception {
+               // 4) Conditional GET example (get with If-Unmod. entry is 
modified (> predicate date)
+               // User client GET request
+               //       GET /edit/first-post.atom HTTP/1.1
+               //        Host: example.org
+               // >      If-Unmodified-Since: Sat, 29 Oct 1844 19:43:31 GMT
+               RequestOptions opts = new RequestOptions();
+               final String contentType = "application/atom+xml; type=entry"; 
+               opts.setContentType(contentType);
+               opts.setHeader( "If-Unmodified-Since", "Sat, 29 Oct 1844 
19:43:31 GMT" );
+               opts.setHeader( "Pragma", "no-cache"); // turn off client 
caching
+               
+               IRI colUri = new IRI(providerURI).resolve("customer");
+               // res = client.post(colUri.toString() + "?test=foo", entry, 
opts);
+               String id = eTag.substring( 1, eTag.length()-1);
+               // Warning. AbderaClient.put(String uri,Base 
base,RequestOptions options) caches on the client side.
+               // ClientResponse res = client.put(colUri.toString() + id, 
entry, opts);
+               ClientResponse res = client.get(colUri.toString() + "/" + id, 
opts);
+
+               // Atom server response (item was up to date)
+               // >      HTTP/1.1 304 Not Modified
+               //       Date: Sat, 24 Feb 2007 13:17:11 GMT
+
+           // Assert response status code is 304 Not Modified.
+       Assert.assertEquals(304, res.getStatus());
+               res.release();      
+       }
+}

Propchange: 
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderEntryEntityTagsTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderEntryEntityTagsTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: 
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java?rev=704940&view=auto
==============================================================================
--- 
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java
 (added)
+++ 
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java
 Wed Oct 15 08:17:18 2008
@@ -0,0 +1,382 @@
+/*
+ * 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.binding.atom;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringReader;
+import java.net.Socket;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import junit.framework.Assert;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+
+import org.apache.abdera.Abdera;
+import org.apache.abdera.i18n.iri.IRI;
+import org.apache.abdera.factory.Factory;
+import org.apache.abdera.model.Base;
+import org.apache.abdera.model.Content;
+import org.apache.abdera.model.Entry;
+import org.apache.abdera.model.Feed;
+import org.apache.abdera.model.Document;
+import org.apache.abdera.model.Service;
+import org.apache.abdera.model.Collection;
+import org.apache.abdera.protocol.Response.ResponseType;
+import org.apache.abdera.protocol.client.AbderaClient;
+import org.apache.abdera.protocol.client.ClientResponse;
+import org.apache.abdera.protocol.client.RequestOptions;
+import org.apache.abdera.protocol.client.util.BaseRequestEntity;
+import org.apache.abdera.util.EntityTag;
+import org.apache.abdera.parser.Parser;
+
+/**
+ * Tests use of server provided feed entity tags for Atom binding in Tuscany.
+ * Tests conditional gets (e.g. get if-none-match) or conditional posts (post 
if-match)
+ * using entity tags and last modified entries in headers. 
+ * Uses the SCA provided Provider composite to act as a server.
+ * Uses the Abdera provided Client to act as a client.
+ */
+public class ProviderFeedEntityTagsTestCase {
+       public final static String providerURI = 
"http://localhost:8084/customer";;
+       protected static SCADomain scaConsumerDomain;
+       protected static SCADomain scaProviderDomain;
+       protected static CustomerClient testService;
+    protected static Abdera abdera;
+    protected static AbderaClient client;
+    protected static Parser abderaParser;    
+    protected static String eTag;
+    protected static Date lastModified;
+    protected static final SimpleDateFormat dateFormat = new SimpleDateFormat( 
"EEE, dd MMM yyyy HH:mm:ss Z" ); // RFC 822 date time
+
+       @BeforeClass
+       public static void init() throws Exception {
+               System.out.println(">>>ProviderFeedEntityTagsTestCase.init");
+               scaProviderDomain = 
SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Provider.composite");
+               abdera = new Abdera();
+               client = new AbderaClient(abdera);
+               abderaParser = Abdera.getNewParser();
+       }
+
+       @AfterClass
+       public static void destroy() throws Exception {
+               System.out.println(">>>ProviderFeedEntityTagsTestCase.destroy");
+               scaProviderDomain.close();
+       }
+
+       @Test
+       public void testPrelim() throws Exception {
+               Assert.assertNotNull(scaProviderDomain);
+               Assert.assertNotNull( client );
+       }
+                       
+       @Test
+    public void testFeedBasics() throws Exception {            
+               
System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedBasics");
+               // Normal feed request
+               ClientResponse res = client.get(providerURI);
+               Assert.assertNotNull(res);
+               try {
+                       // Assert feed provided since no predicates
+                       Assert.assertEquals(200, res.getStatus());
+                       Assert.assertEquals(ResponseType.SUCCESS, 
res.getType());
+               // AtomTestCaseUtils.printResponseHeaders( "Feed response 
headers:", "   ", res );
+               // System.out.println("Feed response content:");
+               // AtomTestCaseUtils.prettyPrint(abdera, res.getDocument());
+
+               // Perform other tests on feed.
+               // Warning. AbderaClient.getEntityTag is very particular on tag 
pattern.
+                       // Document<Feed> doc = res.getDocument();
+               String body = read( res.getInputStream() );
+                       // RFC 4287 requires non-null id, title, updated 
elements
+                       Assert.assertTrue( -1 != body.indexOf( "</id>" ));
+                       Assert.assertTrue( -1 != body.indexOf( "</title>" ));
+                       Assert.assertTrue( -1 != body.indexOf( "</updated>" ));
+                       
+                       eTag = res.getHeader("ETag");
+                       Assert.assertNotNull( eTag );
+                       lastModified = res.getLastModified();
+                       Assert.assertNotNull( lastModified );
+               } finally {
+                       res.release();
+               }
+       }               
+
+       @Test
+    public void testUnmodifiedGetIfMatch() throws Exception {          
+               
System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedUnmodifiedGetIfMatch");
+               // Feed request with predicates
+               RequestOptions opts = new RequestOptions();
+               final String contentType = "application/atom+xml"; 
+               opts.setContentType(contentType);
+               opts.setHeader( "If-Match", eTag);
+               
+               ClientResponse res = client.get(providerURI, opts);
+               Assert.assertNotNull(res);
+               try {
+               String thisETag = res.getHeader("ETag");
+                       Assert.assertNotNull( thisETag );
+                       Date thisLastModified = res.getLastModified();
+                       Assert.assertNotNull( thisLastModified );
+                        
+                       // Should return 200 - Feed provided since it matches 
etag.
+                       Assert.assertEquals(200, res.getStatus());
+                       Assert.assertEquals(ResponseType.SUCCESS, 
res.getType());
+               // AtomTestCaseUtils.printResponseHeaders( "Feed response 
headers:", "   ", res );
+               // System.out.println("Feed response content:");
+               // AtomTestCaseUtils.prettyPrint(abdera, res.getDocument());
+               } finally {
+                       res.release();
+               }
+       }               
+
+       @Test
+    public void testUnmodifiedGetIfNoneMatch() throws Exception {              
+               
System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedUnmodifiedGetIfNoneMatch");
+               // Feed request with predicates
+               RequestOptions opts = new RequestOptions();
+               final String contentType = "application/atom+xml"; 
+               opts.setContentType(contentType);
+               opts.setHeader( "If-None-Match", eTag);
+               
+               ClientResponse res = client.get(providerURI, opts);
+               Assert.assertNotNull(res);
+               try {
+                       // Should return 304 - Feed not provided since it 
matches ETag.
+                       Assert.assertEquals(304, res.getStatus());
+               } finally {
+                       res.release();
+               }
+       }               
+
+       @Test
+    public void testUnmodifiedGetIfUnModified() throws Exception {             
+               
System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedUnmodifiedGetIfUnModified");
+               // Feed request with predicates
+               RequestOptions opts = new RequestOptions();
+               final String contentType = "application/atom+xml"; 
+               opts.setContentType(contentType);
+               opts.setHeader( "If-Unmodified-Since", dateFormat.format( new 
Date() ));
+               
+               ClientResponse res = client.get(providerURI, opts);
+               Assert.assertNotNull(res);
+               try {
+                       // Should return 304 - Feed not provided since feed is 
modified since.
+                       Assert.assertEquals(304, res.getStatus());
+               } finally {
+                       res.release();
+               }
+       }               
+
+       @Test
+    public void testUnmodifiedGetIfModified() throws Exception {               
+               
System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedUnmodifiedGetIfModified");
+               // Feed request with predicates
+               RequestOptions opts = new RequestOptions();
+               final String contentType = "application/atom+xml"; 
+               opts.setContentType(contentType);
+               opts.setHeader( "If-Modified-Since", dateFormat.format( new 
Date( 0 ) ));
+               
+               ClientResponse res = client.get(providerURI, opts);
+               Assert.assertNotNull(res);
+               try {
+                       // Should return 200 - Feed provided since feed is 
changed.
+                       Assert.assertEquals(200, res.getStatus());
+                       Assert.assertEquals(ResponseType.SUCCESS, 
res.getType());
+
+                       String thisETag = res.getHeader("ETag");
+                       Assert.assertNotNull( thisETag );
+                       Date thisLastModified = res.getLastModified();
+                       Assert.assertNotNull( thisLastModified );               
         
+               } finally {
+                       res.release();
+               }
+       }               
+
+       @Test
+    public void testModifiedGetIfNoneMatch() throws Exception {                
+               
System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedModifiedGetIfNoneMatch");
+               // Post some new content to the feed.
+               Factory factory = abdera.getFactory();
+               String customerName = "Fred Farkle";
+               Entry entry = factory.newEntry();
+               entry.setTitle("customer " + customerName);
+               entry.setUpdated(new Date());
+               entry.addAuthor("Apache Tuscany");
+               Content content = abdera.getFactory().newContent();
+               content.setContentType(Content.Type.TEXT);
+               content.setValue(customerName);
+               entry.setContentElement(content);
+
+               RequestOptions opts = new RequestOptions();
+               String contentType = "application/atom+xml; type=entry"; 
+               opts.setContentType(contentType);
+               IRI colUri = new IRI(providerURI).resolve("customer");
+               ClientResponse res = client.post(colUri.toString(), entry, 
opts);
+                       
+               // Feed request with predicates
+               opts = new RequestOptions();
+               contentType = "application/atom+xml"; 
+               opts.setContentType(contentType);
+               opts.setHeader( "If-None-Match", eTag);
+               
+               res = client.get(providerURI, opts);
+               Assert.assertNotNull(res);
+               try {
+                       // Should return 304 - Feed not provided since it 
matches ETag.
+                       Assert.assertEquals(304, res.getStatus());
+               // AtomTestCaseUtils.printResponseHeaders( "Feed response 
headers:", "   ", res );
+               // System.out.println("Feed response content:");
+               // AtomTestCaseUtils.prettyPrint(abdera, res.getDocument());
+               } finally {
+                       res.release();
+               }
+       }               
+
+       @Test
+    public void testModifiedGetIfMatch() throws Exception {            
+               
System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedModifiedGetIfMatch");
+               // Feed request with predicates
+               RequestOptions opts = new RequestOptions();
+               final String contentType = "application/atom+xml"; 
+               opts.setContentType(contentType);
+               opts.setHeader( "If-Match", eTag);
+               
+               ClientResponse res = client.get(providerURI, opts);
+               Assert.assertNotNull(res);
+               try {
+               String thisETag = res.getHeader("ETag");
+                       Assert.assertNotNull( thisETag );
+                       Date thisLastModified = res.getLastModified();
+                       Assert.assertNotNull( thisLastModified );
+                        
+                       // Should return 200 - value since feed is changed
+                       Assert.assertEquals(200, res.getStatus());
+                       Assert.assertEquals(ResponseType.SUCCESS, 
res.getType());
+                       
+               // AtomTestCaseUtils.printResponseHeaders( "Feed modified 
if-none-match response headers:", "   ", res );
+               // System.out.println("Feed response content:");
+               // AtomTestCaseUtils.prettyPrint(abdera, res.getDocument());
+               } finally {
+                       res.release();
+               }
+       }               
+
+       @Test
+    public void testModifiedGetIfUnModified() throws Exception {               
+               
System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedUnmodifiedGetIfUnModified");
+               // Feed request with predicates
+               RequestOptions opts = new RequestOptions();
+               final String contentType = "application/atom+xml"; 
+               opts.setContentType(contentType);
+               opts.setHeader( "If-Unmodified-Since", dateFormat.format( new 
Date() ));
+               
+               ClientResponse res = client.get(providerURI, opts);
+               Assert.assertNotNull(res);
+               try {
+                       // Should return 304 - Feed not provided since feed is 
modified since.                  
+                       Assert.assertEquals(304, res.getStatus());
+               } finally {
+                       res.release();
+               }
+       }               
+
+       @Test
+    public void testModifiedGetIfModified() throws Exception {         
+               
System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedUnmodifiedGetIfModified");
+               // Feed request with predicates
+               RequestOptions opts = new RequestOptions();
+               final String contentType = "application/atom+xml"; 
+               opts.setContentType(contentType);
+               opts.setHeader( "If-Modified-Since", dateFormat.format( 
lastModified ));
+               
+               ClientResponse res = client.get(providerURI, opts);
+               Assert.assertNotNull(res);
+               try {
+                       // Should return 200 - Feed provided since feed is 
changed.
+                       Assert.assertEquals(200, res.getStatus());
+                       Assert.assertEquals(ResponseType.SUCCESS, 
res.getType());
+
+                       String thisETag = res.getHeader("ETag");
+                       Assert.assertNotNull( thisETag );
+                       Date thisLastModified = res.getLastModified();
+                       Assert.assertNotNull( thisLastModified );               
         
+               } finally {
+                       res.release();
+               }
+       }               
+
+
+       public static void printFeed( String title, String indent, Feed feed ) {
+               if ( feed == null ) {
+                       System.out.println( title + " feed is null");
+                       return;
+               }
+                       
+               System.out.println( title );
+               System.out.println( indent + "id=" + feed.getId() );
+               System.out.println( indent + "title=" + feed.getTitle() );
+               System.out.println( indent + "updated=" + feed.getUpdated() );
+               System.out.println( indent + "author=" + feed.getAuthor() );
+               Collection collection = feed.getCollection();
+               if ( collection == null ) {
+                       System.out.println( indent + "collection=null" );
+               } else {
+                       System.out.println( indent + "collection=" + collection 
);
+               }
+               // System.out.println( indent + "collection size=" + 
feed.getCollection() );
+               // for (Collection collection : workspace.getCollections()) {
+               //    if (collection.getTitle().equals("customers")) {
+               //       String expected = uri + "customers";
+               //       String actual = 
collection.getResolvedHref().toString();
+               //       assertEquals(expected, actual);
+               //    }
+               // }
+
+       }
+
+       /**
+        * Read response ream from the given socket.
+        * @param socket
+        * @return
+        * @throws IOException
+        */
+       private static String read(InputStream inputStream) throws IOException {
+               BufferedReader reader = null;
+               try {
+                       reader = new BufferedReader(new InputStreamReader( 
inputStream ));
+                       StringBuffer sb = new StringBuffer();
+                       String str;
+                       while ((str = reader.readLine()) != null) {
+                               sb.append(str);
+                       }
+                       return sb.toString();
+               } finally {
+                       if (reader != null) {
+                               reader.close();
+                       }
+               }
+       }
+}

Propchange: 
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: 
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderServiceDocumentTestCase.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderServiceDocumentTestCase.java?rev=704940&view=auto
==============================================================================
--- 
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderServiceDocumentTestCase.java
 (added)
+++ 
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderServiceDocumentTestCase.java
 Wed Oct 15 08:17:18 2008
@@ -0,0 +1,209 @@
+/*
+ * 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.binding.atom;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+import junit.framework.Assert;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.apache.tuscany.sca.binding.atom.collection.Collection;
+
+import org.apache.abdera.Abdera;
+import org.apache.abdera.i18n.iri.IRI;
+import org.apache.abdera.factory.Factory;
+import org.apache.abdera.model.Content;
+import org.apache.abdera.model.Entry;
+import org.apache.abdera.model.Feed;
+import org.apache.abdera.model.Document;
+import org.apache.abdera.model.Service;
+import org.apache.abdera.protocol.Response.ResponseType;
+import org.apache.abdera.protocol.client.AbderaClient;
+import org.apache.abdera.protocol.client.ClientResponse;
+import org.apache.abdera.protocol.client.RequestOptions;
+import org.apache.abdera.parser.Parser;
+
+/**
+ * Tests use of service documents provided by atom binding based collections.
+ * Uses the SCA provided Provider composite to act as a server.
+ * Uses the Abdera provided Client to act as a client.
+ */
+public class ProviderServiceDocumentTestCase {
+       public final static String providerURI = 
"http://localhost:8084/customer";;
+       protected static SCADomain scaProviderDomain;
+    protected static SCADomain scaConsumerDomain;
+    protected static CustomerClient testService;
+    protected static Abdera abdera;
+    protected static AbderaClient client;
+    protected static Parser abderaParser;    
+
+       @BeforeClass
+       public static void init() throws Exception {
+               scaProviderDomain = 
SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Provider.composite");
+        scaConsumerDomain = 
SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Consumer.composite");
+        testService = scaConsumerDomain.getService(CustomerClient.class, 
"CustomerClient");
+               abdera = new Abdera();
+               client = new AbderaClient(abdera);
+               abderaParser = Abdera.getNewParser();
+       }
+
+       @AfterClass
+       public static void destroy() throws Exception {
+               scaProviderDomain.close();
+       }
+
+       @Test
+       public void testPrelim() throws Exception {
+               Assert.assertNotNull(scaProviderDomain);
+               Assert.assertNotNull( client );
+       }
+                       
+       @Test
+    public void testFeedBasics() throws Exception {            
+               // Normal feed request
+               ClientResponse res = client.get(providerURI);
+               Assert.assertNotNull(res);
+               try {
+                       // Assert feed provided since no predicates
+                       Assert.assertEquals(200, res.getStatus());
+                       Assert.assertEquals(ResponseType.SUCCESS, 
res.getType());
+               // AtomTestCaseUtils.printResponseHeaders( "Feed response 
headers:", "   ", res );
+               // System.out.println("Feed response content:");
+               // AtomTestCaseUtils.prettyPrint(abdera, res.getDocument());
+
+               // Perform other tests on feed.
+               // Warning. AbderaClient.getEntityTag is very particular on tag 
pattern.
+                       // Document<Feed> doc = res.getDocument();
+               String body = read( res.getInputStream() );
+                       // RFC 4287 requires non-null id, title, updated 
elements
+                       Assert.assertTrue( -1 != body.indexOf( "</id>" ));
+                       Assert.assertTrue( -1 != body.indexOf( "</title>" ));
+                       Assert.assertTrue( -1 != body.indexOf( "</updated>" ));
+               } finally {
+                       res.release();
+               }
+       }               
+
+    @Test
+    public void testServiceDocumentGet() throws Exception {
+        Collection resourceCollection = testService.getCustomerCollection();
+        Assert.assertNotNull(resourceCollection);
+
+        Entry postEntry = postEntry("Sponge Bob");
+        Entry newEntry = resourceCollection.post(postEntry);
+        postEntry = postEntry("Austin Powers");
+        newEntry = resourceCollection.post(postEntry);
+        postEntry = postEntry("Count Dracula");
+        newEntry = resourceCollection.post(postEntry);
+
+               // Service document
+               ClientResponse res = client.get(providerURI + "/atomsvc");
+               Assert.assertNotNull(res);
+               try {
+                       // Asser feed provided since no predicates
+                       Assert.assertEquals(200, res.getStatus());
+                       Assert.assertEquals(ResponseType.SUCCESS, 
res.getType());
+
+               // Perform other tests on feed.
+               // AtomTestCaseUtils.prettyPrint(abdera, res.getDocument());    
        
+                       Document<Service> serviceDoc = res.getDocument();
+                       Service service = serviceDoc.getRoot();
+                       Assert.assertNotNull( service );
+                       org.apache.abdera.model.Collection collection =  
service.getCollection( "workspace", "customers" );
+                       String title = collection.getTitle();
+                       Assert.assertEquals("customers", title);
+                       String href = collection.getHref().toString();
+                       Assert.assertTrue( href.contains( "customer") );
+               } finally {
+                       res.release();
+               }
+    }
+
+       public static void printFeed( String title, String indent, Feed feed ) {
+               if ( feed == null ) {
+                       System.out.println( title + " feed is null");
+                       return;
+               }
+                       
+               System.out.println( title );
+               System.out.println( indent + "id=" + feed.getId() );
+               System.out.println( indent + "title=" + feed.getTitle() );
+               System.out.println( indent + "updated=" + feed.getUpdated() );
+               System.out.println( indent + "author=" + feed.getAuthor() );
+               // Collection collection = feed.getCollection();
+               // if ( collection == null ) {
+               //      System.out.println( indent + "collection=null" );
+               // } else {
+               //      System.out.println( indent + "collection=" + collection 
);
+               // }
+               // System.out.println( indent + "collection size=" + 
feed.getCollection() );
+               // for (Collection collection : workspace.getCollections()) {
+               //    if (collection.getTitle().equals("customers")) {
+               //       String expected = uri + "customers";
+               //       String actual = 
collection.getResolvedHref().toString();
+               //       assertEquals(expected, actual);
+               //    }
+               // }
+
+       }
+
+    private Entry postEntry(String value) {
+        Entry entry = abdera.newEntry();
+        entry.setTitle("customer " + value);
+
+        Content content = abdera.getFactory().newContent();
+        content.setContentType(Content.Type.TEXT);
+        content.setValue(value);
+        entry.setContentElement(content);
+
+        return entry;
+    }
+
+    /**
+        * Read response ream from the given socket.
+        * @param socket
+        * @return
+        * @throws IOException
+        */
+       private static String read(InputStream inputStream) throws IOException {
+               BufferedReader reader = null;
+               try {
+                       reader = new BufferedReader(new InputStreamReader( 
inputStream ));
+                       StringBuffer sb = new StringBuffer();
+                       String str;
+                       while ((str = reader.readLine()) != null) {
+                               sb.append(str);
+                       }
+                       return sb.toString();
+               } finally {
+                       if (reader != null) {
+                               reader.close();
+                       }
+               }
+       }
+}

Propchange: 
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderServiceDocumentTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
tuscany/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderServiceDocumentTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date


Reply via email to