You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wink.apache.org by bl...@apache.org on 2009/09/26 21:21:12 UTC

svn commit: r819192 [1/3] - in /incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src: main/resources/ main/resources/tests/ main/resources/tests/test-resources/ test/java/org/apache/wink/itest/addressbook/ test/java/org/apache/wink/ites...

Author: bluk
Date: Sat Sep 26 19:21:10 2009
New Revision: 819192

URL: http://svn.apache.org/viewvc?rev=819192&view=rev
Log:
Port wink-itest-targeting to RestClient

Added:
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/resources/
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/resources/tests/
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/resources/tests/test-resources/
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/resources/tests/test-resources/1040_2007.xml   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/resources/tests/test-resources/1040_2008.xml   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/WinkApacheClientStringTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/WinkClientStringTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/NewsWinkApacheClient.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/NewsWinkClient.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/WinkApacheNewsClientTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/WinkNewsClientTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentencoding/WinkApacheContentEncodingTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentencoding/WinkContentEncodingTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/WinkApacheContentNegotiationClientTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/WinkContentNegotiationClientTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/WinkApacheExceptionsDuringTargetingTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/WinkApacheNullValuesDuringTargetingTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/WinkApacheValidationDuringTargetingTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/WinkExceptionsWhileTargetingTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/WinkNullValuesDuringTargetingTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/WinkValidationDuringTargetingTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/headers/WinkApacheHeadersTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/headers/WinkHeadersTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/largeentity/WinkApacheClientLargeEntityTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/largeentity/WinkClientLargeEntityTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/lifecycles/WinkApacheClientLifeCycleTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/lifecycles/WinkClientLifeCycleTest.java
      - copied, changed from r819007, incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/lifecycles/LifeCycleTest.java
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/methodannotations/WinkApacheHttpMethodTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/methodannotations/WinkApacheHttpMethodWarningsTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/methodannotations/WinkHttpMethodTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/methodannotations/WinkHttpMethodWarningsTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/nofindmethods/WinkApacheDoNotUseMethodNamesForHTTPVerbsTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/nofindmethods/WinkDoNotUseMethodNamesForHTTPVerbsTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/returntypes/WinkApacheClientReturnTypeStatusTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/returntypes/WinkClientReturnTypeStatusTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/sequence/WinkApacheClientSequenceTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/sequence/WinkClientSequenceTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/transferencoding/WinkApacheTransferEncodingTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/transferencoding/WinkTransferEncodingTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/version/VersioningTest.java   (contents, props changed)
      - copied, changed from r819007, incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/version/VersioningTests.java
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/version/WinkApacheClientVersioningTest.java   (with props)
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/version/WinkClientVersioningTest.java   (with props)
Removed:
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/version/VersioningTests.java
Modified:
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/StringTest.java
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/ContentNegotiationClientTest.java
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/ExceptionsWhileTargettingTest.java
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/NullValuesDuringTargettingTest.java
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/ValidationDuringTargettingTest.java
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/headers/HeadersTest.java
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/largeentity/LargeEntityTest.java
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/lifecycles/LifeCycleTest.java
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/nofindmethods/DoNotUseMethodNamesForHTTPVerbsTest.java
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/returntypes/ReturnTypeStatusTest.java
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/sequence/SequenceTest.java

Added: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/resources/tests/test-resources/1040_2007.xml
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/resources/tests/test-resources/1040_2007.xml?rev=819192&view=auto
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/resources/tests/test-resources/1040_2007.xml (added)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/resources/tests/test-resources/1040_2007.xml Sat Sep 26 19:21:10 2009
@@ -0,0 +1,25 @@
+<!--
+    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.
+-->
+<taxform name="1040" version="2007">
+
+<name></name>
+<address></address>
+<income></income>
+<deductions></deductions>
+</taxform>

Propchange: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/resources/tests/test-resources/1040_2007.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/resources/tests/test-resources/1040_2008.xml
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/resources/tests/test-resources/1040_2008.xml?rev=819192&view=auto
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/resources/tests/test-resources/1040_2008.xml (added)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/resources/tests/test-resources/1040_2008.xml Sat Sep 26 19:21:10 2009
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<taxform name="1040" version="2007">
+<name></name>
+<address></address>
+<income></income>
+</taxform>

Propchange: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/resources/tests/test-resources/1040_2008.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/StringTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/StringTest.java?rev=819192&r1=819191&r2=819192&view=diff
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/StringTest.java (original)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/StringTest.java Sat Sep 26 19:21:10 2009
@@ -29,8 +29,6 @@
 import org.apache.commons.httpclient.methods.PostMethod;
 import org.apache.commons.httpclient.methods.PutMethod;
 import org.apache.commons.httpclient.methods.RequestEntity;
-import org.apache.wink.itest.addressbook.Address;
-import org.apache.wink.itest.addressbook.AddressBook;
 import org.apache.wink.test.integration.ServerContainerAssertions;
 import org.apache.wink.test.integration.ServerEnvironmentInfo;
 
@@ -41,20 +39,33 @@
  */
 public class StringTest extends TestCase {
 
-    final private static String BASE_URI =
-                                             ServerEnvironmentInfo.getBaseURI() + (ServerEnvironmentInfo
-                                                 .isRestFilterUsed() ? "" : "/addressBook/")
-                                                 + "/unittests/addresses";
+    protected static String getBaseURI() {
+        if (ServerEnvironmentInfo.isRestFilterUsed()) {
+            return ServerEnvironmentInfo.getBaseURI() + "/unittests/addresses";
+        }
+        return ServerEnvironmentInfo.getBaseURI() + "/addressBook/unittests/addresses";
+    }
+
+    protected HttpClient client;
 
     @Override
-    public void setUp() {
+    public void setUp() throws Exception {
+        super.setUp();
+        client = new HttpClient();
+
+        /*
+         * clear the database entries
+         */
+        clearDatabase();
+    }
+
+    public void clearDatabase() {
         /*
          * clear the database entries
          */
-        HttpClient client = new HttpClient();
         HttpMethod method = null;
         try {
-            method = new PostMethod(BASE_URI + "/clear");
+            method = new PostMethod(getBaseURI() + "/clear");
             client.executeMethod(method);
             assertEquals(204, method.getStatusCode());
         } catch (Exception e) {
@@ -75,7 +86,7 @@
         HttpMethod method = null;
         try {
             HttpClient client = new HttpClient();
-            method = new GetMethod(BASE_URI);
+            method = new GetMethod(getBaseURI());
             client.executeMethod(method);
             String responseBody = method.getResponseBodyAsString();
             Address addr = AddressBook.defaultAddress;
@@ -105,13 +116,13 @@
 
             // make sure everything is clear before testing
             HttpClient client = new HttpClient();
-            method = new PostMethod(BASE_URI);
+            method = new PostMethod(getBaseURI());
             method
                 .setQueryString("entryName=newAddress&streetAddress=1234+Any+Street&city=" + "AnyTown&zipCode=90210&state=TX&country=US");
             client.executeMethod(method);
 
             // now let's see if the address we just created is available
-            getMethod = new GetMethod(BASE_URI + "/newAddress");
+            getMethod = new GetMethod(getBaseURI() + "/newAddress");
             client.executeMethod(getMethod);
             assertEquals(200, getMethod.getStatusCode());
             String responseBody = getMethod.getResponseBodyAsString();
@@ -149,14 +160,14 @@
 
             // make sure everything is clear before testing
             HttpClient client = new HttpClient();
-            method = new PostMethod(BASE_URI + "/fromBody");
+            method = new PostMethod(getBaseURI() + "/fromBody");
             String input = "tempAddress&1234 Any Street&AnyTown&90210&TX&US";
             RequestEntity entity = new ByteArrayRequestEntity(input.getBytes(), "text/xml");
             method.setRequestEntity(entity);
             client.executeMethod(method);
 
             // now let's see if the address we just created is available
-            getMethod = new GetMethod(BASE_URI + "/tempAddress");
+            getMethod = new GetMethod(getBaseURI() + "/tempAddress");
             client.executeMethod(getMethod);
             String responseBody = getMethod.getResponseBodyAsString();
             getMethod.releaseConnection();
@@ -172,7 +183,7 @@
             String query =
                 "entryName=tempAddress&streetAddress=1234+Any+Street&city=" + "AnyTown&zipCode=90210&state=AL&country=US";
             client = new HttpClient();
-            put = new PutMethod(BASE_URI);
+            put = new PutMethod(getBaseURI());
             put.setQueryString(query);
             client.executeMethod(put);
 
@@ -187,7 +198,7 @@
 
             // now let's delete the address
             client = new HttpClient();
-            deleteMethod = new DeleteMethod(BASE_URI + "/tempAddress");
+            deleteMethod = new DeleteMethod(getBaseURI() + "/tempAddress");
             client.executeMethod(deleteMethod);
             assertEquals(204, deleteMethod.getStatusCode());
 

Added: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/WinkApacheClientStringTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/WinkApacheClientStringTest.java?rev=819192&view=auto
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/WinkApacheClientStringTest.java (added)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/WinkApacheClientStringTest.java Sat Sep 26 19:21:10 2009
@@ -0,0 +1,36 @@
+/*
+ * 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.wink.itest.addressbook;
+
+import org.apache.wink.client.ApacheHttpClientConfig;
+import org.apache.wink.client.RestClient;
+
+public class WinkApacheClientStringTest extends WinkClientStringTest {
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        client = new RestClient(new ApacheHttpClientConfig());
+
+        /*
+         * clear the database entries
+         */
+        clearDatabase();
+    }
+}

Propchange: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/WinkApacheClientStringTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/WinkClientStringTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/WinkClientStringTest.java?rev=819192&view=auto
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/WinkClientStringTest.java (added)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/WinkClientStringTest.java Sat Sep 26 19:21:10 2009
@@ -0,0 +1,146 @@
+/*
+ * 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.wink.itest.addressbook;
+
+import javax.ws.rs.core.MediaType;
+
+import junit.framework.TestCase;
+
+import org.apache.wink.client.ClientResponse;
+import org.apache.wink.client.RestClient;
+import org.apache.wink.common.internal.MultivaluedMapImpl;
+import org.apache.wink.test.integration.ServerEnvironmentInfo;
+
+/**
+ * These tests drive calls to a REST resource that is deployed on our test
+ * framework server. The resources being tested by this class exchange data via
+ * String objects.
+ */
+public class WinkClientStringTest extends TestCase {
+
+    protected static String getBaseURI() {
+        if (ServerEnvironmentInfo.isRestFilterUsed()) {
+            return ServerEnvironmentInfo.getBaseURI() + "/unittests/addresses";
+        }
+        return ServerEnvironmentInfo.getBaseURI() + "/addressBook/unittests/addresses";
+    }
+
+    protected RestClient client;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        client = new RestClient();
+
+        /*
+         * clear the database entries
+         */
+        clearDatabase();
+    }
+
+    public void clearDatabase() {
+        ClientResponse response = client.resource(getBaseURI() + "/clear").post(null);
+        assertEquals(204, response.getStatusCode());
+    }
+
+    /**
+     * This will drive a GET request with no input parameters
+     */
+    public void testGetNoParams() {
+        String responseBody = client.resource(getBaseURI()).get(String.class);
+
+        Address addr = AddressBook.defaultAddress;
+        assertTrue(responseBody.contains(addr.getEntryName()));
+        assertTrue(responseBody.contains(addr.getStreetAddress()));
+        assertTrue(responseBody.contains(addr.getZipCode()));
+        assertTrue(responseBody.contains(addr.getCity()));
+        assertTrue(responseBody.contains(addr.getCountry()));
+        assertTrue(responseBody.contains(addr.getState()));
+    }
+
+    /**
+     * This will drive a POST request with parameters from the query string
+     */
+    public void testPostWithQueryParams() {
+        MultivaluedMapImpl<String, String> queryParams = new MultivaluedMapImpl<String, String>();
+        queryParams.putSingle("entryName", "newAddress");
+        queryParams.putSingle("streetAddress", "1234 Any Street");
+        queryParams.putSingle("city", "AnyTown");
+        queryParams.putSingle("zipCode", "90210");
+        queryParams.putSingle("state", "TX");
+        queryParams.putSingle("country", "US");
+        client.resource(getBaseURI()).queryParams(queryParams).post(null);
+
+        // now let's see if the address we just created is available
+        ClientResponse response = client.resource(getBaseURI() + "/newAddress").get();
+        assertEquals(200, response.getStatusCode());
+        String responseBody = response.getEntity(String.class);
+        assertNotNull(responseBody);
+        assertTrue(responseBody, responseBody.contains("newAddress"));
+        assertTrue(responseBody, responseBody.contains("1234 Any Street"));
+        assertTrue(responseBody, responseBody.contains("AnyTown"));
+        assertTrue(responseBody, responseBody.contains("90210"));
+        assertTrue(responseBody, responseBody.contains("TX"));
+        assertTrue(responseBody, responseBody.contains("US"));
+    }
+
+    /**
+     * This will drive a POST, GET, UPDATE, and DELETE on the
+     * AddressBookResource
+     */
+    public void testAddressBookResource() {
+        // make sure everything is clear before testing
+        String input = "tempAddress&1234 Any Street&AnyTown&90210&TX&US";
+        ClientResponse response =
+            client.resource(getBaseURI() + "/fromBody").contentType(MediaType.TEXT_XML).post(input);
+        assertEquals(204, response.getStatusCode());
+
+        // now let's see if the address we just created is available
+        String responseBody = client.resource(getBaseURI() + "/tempAddress").get(String.class);
+        assertNotNull(responseBody);
+        assertTrue(responseBody, responseBody.contains("tempAddress"));
+        assertTrue(responseBody, responseBody.contains("1234 Any Street"));
+        assertTrue(responseBody, responseBody.contains("AnyTown"));
+        assertTrue(responseBody, responseBody.contains("90210"));
+        assertTrue(responseBody, responseBody.contains("TX"));
+        assertTrue(responseBody, responseBody.contains("US"));
+
+        // let's update the state
+        client.resource(getBaseURI()).queryParam("entryName", "tempAddress")
+            .queryParam("streetAddress", "1234 Any Street").queryParam("city", "AnyTown")
+            .queryParam("zipCode", "90210").queryParam("state", "AL").queryParam("country", "US")
+            .put(null);
+
+        // make sure the state has been updated
+        responseBody = client.resource(getBaseURI() +"/tempAddress").get(String.class);
+        assertNotNull(responseBody);
+        assertTrue(responseBody, responseBody.contains("tempAddress"));
+        assertFalse(responseBody, responseBody.contains("TX"));
+        assertTrue(responseBody, responseBody.contains("AL"));
+
+        // now let's delete the address
+        response = client.resource(getBaseURI() + "/tempAddress").delete();
+        assertEquals(204, response.getStatusCode());
+
+        // now try to get the address
+        response = client.resource(getBaseURI() + "/tempAddress").get();
+        assertEquals(404, response.getStatusCode());
+    }
+
+}

Propchange: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/addressbook/WinkClientStringTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/NewsWinkApacheClient.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/NewsWinkApacheClient.java?rev=819192&view=auto
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/NewsWinkApacheClient.java (added)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/NewsWinkApacheClient.java Sat Sep 26 19:21:10 2009
@@ -0,0 +1,164 @@
+/*
+ * 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.wink.itest.cachetest;
+
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+import javax.ws.rs.core.Response;
+import javax.xml.bind.JAXBContext;
+
+import org.apache.commons.httpclient.Header;
+import org.apache.wink.client.ApacheHttpClientConfig;
+import org.apache.wink.client.ClientResponse;
+import org.apache.wink.client.Resource;
+import org.apache.wink.client.RestClient;
+import org.apache.wink.itest.cache.NewsStory;
+
+public class NewsWinkApacheClient implements NewsResource {
+
+    private String   baseURI;
+
+    private Header[] requestHeaders;
+
+    public NewsWinkApacheClient(String baseURI, Map<String, String> reqHdrs) {
+        this.baseURI = baseURI;
+        requestHeaders = createRequestHeaders(reqHdrs);
+    }
+
+    public Response addNewsStory(NewsStory story) throws Exception {
+        RestClient client = new RestClient(new ApacheHttpClientConfig());
+        Resource resource = client.resource(baseURI);
+        setRequestHeaders(resource);
+        JAXBContext context = JAXBContext.newInstance(NewsStory.class);
+        StringWriter sw = new StringWriter();
+        context.createMarshaller().marshal(story, sw);
+        ClientResponse response = resource.contentType("text/xml").post(sw.toString().getBytes());
+        int status = response.getStatusCode();
+        Response resp = Response.status(status).build();
+        for (String key : response.getHeaders().keySet()) {
+            List<String> values = response.getHeaders().get(key);
+            List<Object> objValues = new ArrayList<Object>();
+            for (String v : values) {
+                objValues.add(v);
+            }
+            resp.getMetadata().put(key, objValues);
+        }
+        return resp;
+    }
+
+    public Response updateNewsStory(NewsStory story) throws Exception {
+        RestClient client = new RestClient(new ApacheHttpClientConfig());
+        Resource resource = client.resource(baseURI);
+        setRequestHeaders(resource);
+
+        JAXBContext context = JAXBContext.newInstance(NewsStory.class);
+        StringWriter sw = new StringWriter();
+        context.createMarshaller().marshal(story, sw);
+
+        ClientResponse response = resource.contentType("text/xml").put(sw.toString().getBytes());
+        int status = response.getStatusCode();
+
+        Response resp = Response.status(status).build();
+        for (String key : response.getHeaders().keySet()) {
+            List<String> values = response.getHeaders().get(key);
+            List<Object> objValues = new ArrayList<Object>();
+            for (String v : values) {
+                objValues.add(v);
+            }
+            resp.getMetadata().put(key, objValues);
+        }
+        return resp;
+    }
+
+    public Response getNewsStory(String title) throws Exception {
+        RestClient client = new RestClient(new ApacheHttpClientConfig());
+        Resource resource = client.resource(this.baseURI + "/" + title);
+        setRequestHeaders(resource);
+
+        ClientResponse response = resource.contentType("text/xml").get();
+        int status = response.getStatusCode();
+
+        InputStream is = response.getEntity(InputStream.class);
+
+        NewsStory newsStory = null;
+        String contentLength = response.getHeaders().getFirst("Content-Length");
+        long cl = 0;
+        if(contentLength != null) {
+            cl = Long.valueOf(response.getHeaders().getFirst("Content-Length"));   
+        } 
+        if (is != null && status != 304 && status != 412) {
+            JAXBContext context = JAXBContext.newInstance(NewsStory.class);
+            newsStory = (NewsStory)context.createUnmarshaller().unmarshal(is);
+        }
+
+        Response resp = Response.status(status).entity(newsStory).build();
+        for (String key : response.getHeaders().keySet()) {
+            List<String> values = response.getHeaders().get(key);
+            List<Object> objValues = new ArrayList<Object>();
+            for (String v : values) {
+                objValues.add(v);
+            }
+            resp.getMetadata().put(key, objValues);
+        }
+        return resp;
+    }
+
+    Map<String, List<Object>> getResponseHeaders(Header[] headers) {
+        Map<String, List<Object>> respHeaders = new HashMap<String, List<Object>>();
+        if (headers != null) {
+            for (Header header : headers) {
+                String headerName = header.getName();
+                List<Object> values = new ArrayList<Object>();
+                values.add(header.getValue());
+                respHeaders.put(headerName, values);
+            }
+        }
+        return respHeaders;
+    }
+
+    Header[] createRequestHeaders(Map<String, String> reqHdrs) {
+        Header[] headers = null;
+        if (reqHdrs != null) {
+            headers = new Header[reqHdrs.size()];
+            int i = 0;
+            Set<Entry<String, String>> entries = reqHdrs.entrySet();
+            for (Entry<String, String> entry : entries) {
+                Header header = new Header(entry.getKey(), entry.getValue());
+                headers[i] = header;
+                i++;
+            }
+        }
+        return headers;
+    }
+
+    void setRequestHeaders(Resource resource) {
+        if (requestHeaders != null) {
+            for (Header header : requestHeaders) {
+                resource.header(header.getName(), header.getValue());
+            }
+        }
+    }
+}

Propchange: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/NewsWinkApacheClient.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/NewsWinkClient.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/NewsWinkClient.java?rev=819192&view=auto
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/NewsWinkClient.java (added)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/NewsWinkClient.java Sat Sep 26 19:21:10 2009
@@ -0,0 +1,169 @@
+/*
+ * 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.wink.itest.cachetest;
+
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+import javax.ws.rs.core.Response;
+import javax.xml.bind.JAXBContext;
+
+import org.apache.commons.httpclient.Header;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.methods.ByteArrayRequestEntity;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.methods.PutMethod;
+import org.apache.commons.httpclient.methods.RequestEntity;
+import org.apache.wink.client.ClientResponse;
+import org.apache.wink.client.Resource;
+import org.apache.wink.client.RestClient;
+import org.apache.wink.itest.cache.NewsStory;
+
+public class NewsWinkClient implements NewsResource {
+
+    private String   baseURI;
+
+    private Header[] requestHeaders;
+
+    public NewsWinkClient(String baseURI, Map<String, String> reqHdrs) {
+        this.baseURI = baseURI;
+        requestHeaders = createRequestHeaders(reqHdrs);
+    }
+
+    public Response addNewsStory(NewsStory story) throws Exception {
+        RestClient client = new RestClient();
+        Resource resource = client.resource(baseURI);
+        setRequestHeaders(resource);
+        JAXBContext context = JAXBContext.newInstance(NewsStory.class);
+        StringWriter sw = new StringWriter();
+        context.createMarshaller().marshal(story, sw);
+        ClientResponse response = resource.contentType("text/xml").post(sw.toString().getBytes());
+        int status = response.getStatusCode();
+        Response resp = Response.status(status).build();
+        for (String key : response.getHeaders().keySet()) {
+            List<String> values = response.getHeaders().get(key);
+            List<Object> objValues = new ArrayList<Object>();
+            for (String v : values) {
+                objValues.add(v);
+            }
+            resp.getMetadata().put(key, objValues);
+        }
+        return resp;
+    }
+
+    public Response updateNewsStory(NewsStory story) throws Exception {
+        RestClient client = new RestClient();
+        Resource resource = client.resource(baseURI);
+        setRequestHeaders(resource);
+
+        JAXBContext context = JAXBContext.newInstance(NewsStory.class);
+        StringWriter sw = new StringWriter();
+        context.createMarshaller().marshal(story, sw);
+
+        ClientResponse response = resource.contentType("text/xml").put(sw.toString().getBytes());
+        int status = response.getStatusCode();
+
+        Response resp = Response.status(status).build();
+        for (String key : response.getHeaders().keySet()) {
+            List<String> values = response.getHeaders().get(key);
+            List<Object> objValues = new ArrayList<Object>();
+            for (String v : values) {
+                objValues.add(v);
+            }
+            resp.getMetadata().put(key, objValues);
+        }
+        return resp;
+    }
+
+    public Response getNewsStory(String title) throws Exception {
+        RestClient client = new RestClient();
+        Resource resource = client.resource(this.baseURI + "/" + title);
+        setRequestHeaders(resource);
+
+        ClientResponse response = resource.contentType("text/xml").get();
+        int status = response.getStatusCode();
+
+        InputStream is = response.getEntity(InputStream.class);
+
+        NewsStory newsStory = null;
+        String contentLength = response.getHeaders().getFirst("Content-Length");
+        long cl = 0;
+        if(contentLength != null) {
+            cl = Long.valueOf(response.getHeaders().getFirst("Content-Length"));   
+        } 
+        if (is != null && status != 304) {
+            JAXBContext context = JAXBContext.newInstance(NewsStory.class);
+            newsStory = (NewsStory)context.createUnmarshaller().unmarshal(is);
+        }
+
+        Response resp = Response.status(status).entity(newsStory).build();
+        for (String key : response.getHeaders().keySet()) {
+            List<String> values = response.getHeaders().get(key);
+            List<Object> objValues = new ArrayList<Object>();
+            for (String v : values) {
+                objValues.add(v);
+            }
+            resp.getMetadata().put(key, objValues);
+        }
+        return resp;
+    }
+
+    Map<String, List<Object>> getResponseHeaders(Header[] headers) {
+        Map<String, List<Object>> respHeaders = new HashMap<String, List<Object>>();
+        if (headers != null) {
+            for (Header header : headers) {
+                String headerName = header.getName();
+                List<Object> values = new ArrayList<Object>();
+                values.add(header.getValue());
+                respHeaders.put(headerName, values);
+            }
+        }
+        return respHeaders;
+    }
+
+    Header[] createRequestHeaders(Map<String, String> reqHdrs) {
+        Header[] headers = null;
+        if (reqHdrs != null) {
+            headers = new Header[reqHdrs.size()];
+            int i = 0;
+            Set<Entry<String, String>> entries = reqHdrs.entrySet();
+            for (Entry<String, String> entry : entries) {
+                Header header = new Header(entry.getKey(), entry.getValue());
+                headers[i] = header;
+                i++;
+            }
+        }
+        return headers;
+    }
+
+    void setRequestHeaders(Resource resource) {
+        if (requestHeaders != null) {
+            for (Header header : requestHeaders) {
+                resource.header(header.getName(), header.getValue());
+            }
+        }
+    }
+}

Propchange: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/NewsWinkClient.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/WinkApacheNewsClientTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/WinkApacheNewsClientTest.java?rev=819192&view=auto
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/WinkApacheNewsClientTest.java (added)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/WinkApacheNewsClientTest.java Sat Sep 26 19:21:10 2009
@@ -0,0 +1,159 @@
+/*
+ * 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.wink.itest.cachetest;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TimeZone;
+
+import javax.ws.rs.core.Response;
+
+import junit.framework.TestCase;
+
+import org.apache.wink.client.ApacheHttpClientConfig;
+import org.apache.wink.client.ClientResponse;
+import org.apache.wink.client.RestClient;
+import org.apache.wink.itest.cache.NewsStory;
+import org.apache.wink.test.integration.ServerEnvironmentInfo;
+
+public class WinkApacheNewsClientTest extends TestCase {
+
+    final private static String     NEWS_BASE_URI =
+                                                      ServerEnvironmentInfo.getBaseURI() + ((ServerEnvironmentInfo
+                                                          .isRestFilterUsed()) ? "" : "/cache")
+                                                          + "/news";
+
+    private static final DateFormat formatter     =
+                                                      new SimpleDateFormat(
+                                                                           "EEE, dd MMM yyyy HH:mm:ss zzz",
+                                                                           Locale.ENGLISH);
+    static {
+        formatter.setLenient(false);
+        formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
+    }
+
+    protected RestClient            client;
+
+    @Override
+    public void setUp() {
+        /*
+         * clear the database entries
+         */
+        client = new RestClient(new ApacheHttpClientConfig());
+        ClientResponse response = client.resource(NEWS_BASE_URI + "/clear").post(null);
+        assertEquals(204, response.getStatusCode());
+    }
+
+    /**
+     * This test will demonstrate various usages of the ETag and 'If-Match'
+     * headers. It will show how different scenarios result in different HTTP
+     * status codes and different response entities.
+     */
+    public void testNewsResourceWithETag() throws Exception {
+        // always start with a fresh set of resources for testing purposes
+        // first create the resource
+        NewsStory story = new NewsStory();
+        story.setContent("This is a breaking news story");
+        story.setTitle("Local Hero Saves Kid");
+        NewsWinkApacheClient client = new NewsWinkApacheClient(NEWS_BASE_URI, null);
+        Response response = client.addNewsStory(story);
+        assertNotNull(response);
+        String location = (String)response.getMetadata().getFirst("Location");
+        String etag = (String)response.getMetadata().getFirst("ETag");
+
+        // now send a request with an 'If-Match' with a matching value,
+        // we should get back a 304
+        Map<String, String> reqHdrs = new HashMap<String, String>();
+        reqHdrs.put("If-Match", etag);
+        client = new NewsWinkApacheClient(NEWS_BASE_URI, reqHdrs);
+        location = location.startsWith("/") ? location.substring(1) : location;
+        response = client.getNewsStory("Local%20Hero%20Saves%20Kid");
+        assertNotNull(response);
+        assertEquals("Expected 200 not returned", response.getStatus(), 200);
+
+        // update the content of the story
+        client = new NewsWinkApacheClient(NEWS_BASE_URI, null);
+        String newContent = "A local man rescued a kid from a burning building";
+        story.setContent(newContent);
+        response = client.updateNewsStory(story);
+        String updatedETag = (String)response.getMetadata().getFirst("ETag");
+        assertNotNull(updatedETag);
+
+        // now try to get with the old ETag value, we should get a 412
+        // back indicating our precondition failed
+        client = new NewsWinkApacheClient(NEWS_BASE_URI, reqHdrs);
+        location = location.startsWith("/") ? location.substring(1) : location;
+        response = client.getNewsStory("Local%20Hero%20Saves%20Kid");
+        assertNotNull(response);
+        assertNull(response.getEntity());
+        assertEquals("Expected 412 not returned", response.getStatus(), 412);
+
+        // now ensure that using the ETag we got back on the PUT results
+        // in a 304 status
+        reqHdrs.put("If-Match", updatedETag);
+        client = new NewsWinkApacheClient(NEWS_BASE_URI, reqHdrs);
+        location = location.startsWith("/") ? location.substring(1) : location;
+        response = client.getNewsStory("Local%20Hero%20Saves%20Kid");
+        assertNotNull(response);
+        assertEquals("Expected 200 not returned", response.getStatus(), 200);
+    }
+
+    /**
+     * This test will demonstrate various usages of the Last-Modified header. It
+     * will show how different scenarios result in different HTTP status codes
+     * and different response entities.
+     */
+    public void testNewsResourceWithLastModified() throws Exception {
+
+        // first create the resource
+        NewsStory story = new NewsStory();
+        story.setContent("This is a breaking news story");
+        story.setTitle("Local Hero Saves Kid");
+        NewsWinkApacheClient client = new NewsWinkApacheClient(NEWS_BASE_URI, null);
+        Response response = client.addNewsStory(story);
+        assertNotNull(response);
+        String lastModified = (String)response.getMetadata().getFirst("Last-Modified");
+
+        Date date = formatter.parse(lastModified);
+
+        Map<String, String> reqHdrs = new HashMap<String, String>();
+        reqHdrs.put("If-Modified-Since", lastModified);
+        client = new NewsWinkApacheClient(NEWS_BASE_URI, reqHdrs);
+        response = client.getNewsStory("Local%20Hero%20Saves%20Kid");
+        assertNotNull(response);
+        assertEquals("Expected 304 not returned", 304, response.getStatus());
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.set(Calendar.YEAR, 2006);
+
+        lastModified = formatter.format(calendar.getTime());
+        reqHdrs.put("If-Modified-Since", lastModified);
+        client = new NewsWinkApacheClient(NEWS_BASE_URI, reqHdrs);
+        response = client.getNewsStory("Local%20Hero%20Saves%20Kid");
+        assertNotNull(response);
+        story = (NewsStory)response.getEntity();
+        assertNotNull(story);
+    }
+}

Propchange: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/WinkApacheNewsClientTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/WinkNewsClientTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/WinkNewsClientTest.java?rev=819192&view=auto
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/WinkNewsClientTest.java (added)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/WinkNewsClientTest.java Sat Sep 26 19:21:10 2009
@@ -0,0 +1,159 @@
+/*
+ * 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.wink.itest.cachetest;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TimeZone;
+
+import javax.ws.rs.core.Response;
+
+import junit.framework.TestCase;
+
+import org.apache.wink.client.ClientResponse;
+import org.apache.wink.client.RestClient;
+import org.apache.wink.itest.cache.NewsStory;
+import org.apache.wink.test.integration.ServerEnvironmentInfo;
+
+public class WinkNewsClientTest extends TestCase {
+
+    final private static String     NEWS_BASE_URI =
+                                                      ServerEnvironmentInfo.getBaseURI() + ((ServerEnvironmentInfo
+                                                          .isRestFilterUsed()) ? "" : "/cache")
+                                                          + "/news";
+
+    private static final DateFormat formatter     =
+                                                      new SimpleDateFormat(
+                                                                           "EEE, dd MMM yyyy HH:mm:ss zzz",
+                                                                           Locale.ENGLISH);
+    static {
+        formatter.setLenient(false);
+        formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
+    }
+
+    protected RestClient            client;
+
+    @Override
+    public void setUp() {
+        /*
+         * clear the database entries
+         */
+        client = new RestClient();
+        ClientResponse response = client.resource(NEWS_BASE_URI + "/clear").post(null);
+        assertEquals(204, response.getStatusCode());
+    }
+
+    /**
+     * This test will demonstrate various usages of the ETag and 'If-Match'
+     * headers. It will show how different scenarios result in different HTTP
+     * status codes and different response entities.
+     */
+    public void testNewsResourceWithETag() throws Exception {
+        // always start with a fresh set of resources for testing purposes
+        // first create the resource
+        NewsStory story = new NewsStory();
+        story.setContent("This is a breaking news story");
+        story.setTitle("Local Hero Saves Kid");
+        NewsWinkClient client = new NewsWinkClient(NEWS_BASE_URI, null);
+        Response response = client.addNewsStory(story);
+        assertNotNull(response);
+        String location = (String)response.getMetadata().getFirst("Location");
+        String etag = (String)response.getMetadata().getFirst("ETag");
+
+        // now send a request with an 'If-Match' with a matching value,
+        // we should get back a 304
+        Map<String, String> reqHdrs = new HashMap<String, String>();
+        reqHdrs.put("If-Match", etag);
+        client = new NewsWinkClient(NEWS_BASE_URI, reqHdrs);
+        location = location.startsWith("/") ? location.substring(1) : location;
+        response = client.getNewsStory("Local%20Hero%20Saves%20Kid");
+        assertNotNull(response);
+        assertEquals("Expected 200 not returned", response.getStatus(), 200);
+
+        // update the content of the story
+        client = new NewsWinkClient(NEWS_BASE_URI, null);
+        String newContent = "A local man rescued a kid from a burning building";
+        story.setContent(newContent);
+        response = client.updateNewsStory(story);
+        String updatedETag = (String)response.getMetadata().getFirst("ETag");
+        assertNotNull(updatedETag);
+
+        // now try to get with the old ETag value, we should get a 412
+        // back indicating our precondition failed
+        client = new NewsWinkClient(NEWS_BASE_URI, reqHdrs);
+        location = location.startsWith("/") ? location.substring(1) : location;
+        response = client.getNewsStory("Local%20Hero%20Saves%20Kid");
+        assertNotNull(response);
+        assertNull(response.getEntity());
+        assertEquals("Expected 412 not returned", response.getStatus(), 412);
+
+        // now ensure that using the ETag we got back on the PUT results
+        // in a 304 status
+        reqHdrs.put("If-Match", updatedETag);
+        client = new NewsWinkClient(NEWS_BASE_URI, reqHdrs);
+        location = location.startsWith("/") ? location.substring(1) : location;
+        response = client.getNewsStory("Local%20Hero%20Saves%20Kid");
+        assertNotNull(response);
+        assertEquals("Expected 200 not returned", response.getStatus(), 200);
+    }
+
+    /**
+     * This test will demonstrate various usages of the Last-Modified header. It
+     * will show how different scenarios result in different HTTP status codes
+     * and different response entities.
+     */
+    public void testNewsResourceWithLastModified() throws Exception {
+
+        // first create the resource
+        NewsStory story = new NewsStory();
+        story.setContent("This is a breaking news story");
+        story.setTitle("Local Hero Saves Kid");
+        NewsWinkClient client = new NewsWinkClient(NEWS_BASE_URI, null);
+        Response response = client.addNewsStory(story);
+        assertNotNull(response);
+        String lastModified = (String)response.getMetadata().getFirst("Last-Modified");
+
+        Date date = formatter.parse(lastModified);
+
+        Map<String, String> reqHdrs = new HashMap<String, String>();
+        reqHdrs.put("If-Modified-Since", lastModified);
+        client = new NewsWinkClient(NEWS_BASE_URI, reqHdrs);
+        response = client.getNewsStory("Local%20Hero%20Saves%20Kid");
+        assertNotNull(response);
+        assertEquals("Expected 304 not returned", 304, response.getStatus());
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.set(Calendar.YEAR, 2006);
+
+        lastModified = formatter.format(calendar.getTime());
+        reqHdrs.put("If-Modified-Since", lastModified);
+        client = new NewsWinkClient(NEWS_BASE_URI, reqHdrs);
+        response = client.getNewsStory("Local%20Hero%20Saves%20Kid");
+        assertNotNull(response);
+        story = (NewsStory)response.getEntity();
+        assertNotNull(story);
+    }
+
+}

Propchange: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/cachetest/WinkNewsClientTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentencoding/WinkApacheContentEncodingTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentencoding/WinkApacheContentEncodingTest.java?rev=819192&view=auto
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentencoding/WinkApacheContentEncodingTest.java (added)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentencoding/WinkApacheContentEncodingTest.java Sat Sep 26 19:21:10 2009
@@ -0,0 +1,66 @@
+/*
+ * 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.wink.itest.contentencoding;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.zip.GZIPOutputStream;
+
+import javax.ws.rs.core.MediaType;
+
+import org.apache.commons.httpclient.HttpException;
+import org.apache.wink.client.ApacheHttpClientConfig;
+import org.apache.wink.client.ClientResponse;
+import org.apache.wink.client.RestClient;
+
+public class WinkApacheContentEncodingTest extends WinkContentEncodingTest {
+
+    @Override
+    public void setUp() {
+        client = new RestClient(new ApacheHttpClientConfig());
+    }
+
+    /**
+     * Tests sending in small bits of gzip encoded content.
+     * 
+     * @throws HttpException
+     * @throws IOException
+     */
+    @Override
+    public void testSendSmallGzipContentEncoded() throws HttpException, IOException {
+        ByteArrayOutputStream originalContent = new ByteArrayOutputStream();
+        originalContent.write("Hello world".getBytes("UTF-8"));
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        GZIPOutputStream gzipOut = new GZIPOutputStream(baos);
+
+        originalContent.writeTo(gzipOut);
+
+        gzipOut.finish();
+        byte[] content = baos.toByteArray();
+
+        ClientResponse response =
+            client.resource(BASE_URI + "/bigbook").accept(MediaType.TEXT_PLAIN)
+                .header("Content-Encoding", "gzip").contentType("text/plain; charset=utf-8")
+                .post(content);
+        assertEquals(200, response.getStatusCode());
+        String responseBody = response.getEntity(String.class);
+        assertEquals("Hello world" + "helloworld", responseBody);
+    }
+}

Propchange: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentencoding/WinkApacheContentEncodingTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentencoding/WinkContentEncodingTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentencoding/WinkContentEncodingTest.java?rev=819192&view=auto
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentencoding/WinkContentEncodingTest.java (added)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentencoding/WinkContentEncodingTest.java Sat Sep 26 19:21:10 2009
@@ -0,0 +1,146 @@
+/*
+ * 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.wink.itest.contentencoding;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+import javax.ws.rs.core.MediaType;
+
+import junit.framework.TestCase;
+
+import org.apache.commons.httpclient.ChunkedOutputStream;
+import org.apache.commons.httpclient.HttpException;
+import org.apache.wink.client.ClientResponse;
+import org.apache.wink.client.RestClient;
+import org.apache.wink.test.integration.ServerEnvironmentInfo;
+
+public class WinkContentEncodingTest extends TestCase {
+
+    protected RestClient          client;
+
+    final protected static String BASE_URI =
+                                             ServerEnvironmentInfo.getBaseURI() + ((ServerEnvironmentInfo
+                                                 .isRestFilterUsed()) ? "" : "/contentencoding");
+
+    @Override
+    public void setUp() {
+        client = new RestClient();
+    }
+
+    /**
+     * Tests sending in small bits of gzip encoded content.
+     * 
+     * @throws HttpException
+     * @throws IOException
+     */
+    public void testSendSmallGzipContentEncoded() throws HttpException, IOException {
+        ByteArrayOutputStream originalContent = new ByteArrayOutputStream();
+        originalContent.write("Hello world".getBytes("UTF-8"));
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        ChunkedOutputStream chunkedOut = new ChunkedOutputStream(baos);
+        GZIPOutputStream gzipOut = new GZIPOutputStream(chunkedOut);
+
+        originalContent.writeTo(gzipOut);
+
+        gzipOut.finish();
+        chunkedOut.finish();
+        byte[] content = baos.toByteArray();
+
+        ClientResponse response =
+            client.resource(BASE_URI + "/bigbook").accept(MediaType.TEXT_PLAIN)
+                .header("Transfer-Encoding", "chunked").header("Content-Encoding", "gzip")
+                .contentType("text/plain; charset=utf-8").post(content);
+        assertEquals(200, response.getStatusCode());
+        String responseBody = response.getEntity(String.class);
+        assertEquals("Hello world" + "helloworld", responseBody);
+    }
+
+    /**
+     * Tests sending in small bits of gzip encoded content.
+     * 
+     * @throws HttpException
+     * @throws IOException
+     */
+    public void testSendLargeGzipContentEncoded() throws HttpException, IOException {
+        ByteArrayOutputStream originalContent = new ByteArrayOutputStream();
+        for (int c = 0; c < 5000000; ++c) {
+            originalContent.write(c);
+        }
+
+        /*
+         * gzip the contents
+         */
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        GZIPOutputStream gzipOut = new GZIPOutputStream(baos);
+        originalContent.writeTo(gzipOut);
+        gzipOut.finish();
+        byte[] content = baos.toByteArray();
+
+        ClientResponse response =
+            client.resource(BASE_URI + "/bigbook/mirror").accept(MediaType.TEXT_PLAIN)
+                .header("Content-Encoding", "gzip").contentType("text/plain; charset=utf-8")
+                .post(content);
+
+        assertEquals(200, response.getStatusCode());
+        InputStream responseStream = response.getEntity(InputStream.class);
+        for (int c = 0; c < 5000000; ++c) {
+            assertEquals(c % 256, responseStream.read());
+        }
+    }
+
+    /**
+     * Tests sending in small bits of gzip encoded content.
+     * 
+     * @throws HttpException
+     * @throws IOException
+     */
+    public void testSendLargeGzipContentEncodedAndReceiveContentEncoded() throws HttpException,
+        IOException {
+        ByteArrayOutputStream originalContent = new ByteArrayOutputStream();
+        for (int c = 0; c < 5000000; ++c) {
+            originalContent.write(c);
+        }
+
+        /*
+         * gzip the contents
+         */
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        GZIPOutputStream gzipOut = new GZIPOutputStream(baos);
+        originalContent.writeTo(gzipOut);
+        gzipOut.finish();
+        byte[] content = baos.toByteArray();
+
+        ClientResponse response =
+            client.resource(BASE_URI + "/bigbook/mirror").header("Accept-Encoding", "gzip")
+                .accept(MediaType.TEXT_PLAIN).header("Content-Encoding", "gzip")
+                .contentType("text/plain; charset=utf-8").post(content);
+
+        assertEquals(200, response.getStatusCode());
+        InputStream responseStream = new GZIPInputStream(response.getEntity(InputStream.class));
+        for (int c = 0; c < 5000000; ++c) {
+            assertEquals(c % 256, responseStream.read());
+        }
+    }
+
+}

Propchange: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentencoding/WinkContentEncodingTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/ContentNegotiationClientTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/ContentNegotiationClientTest.java?rev=819192&r1=819191&r2=819192&view=diff
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/ContentNegotiationClientTest.java (original)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/ContentNegotiationClientTest.java Sat Sep 26 19:21:10 2009
@@ -41,18 +41,19 @@
  */
 public class ContentNegotiationClientTest extends TestCase {
 
-    HttpClient                  httpclient = new HttpClient();
+    private HttpClient httpclient = new HttpClient();
 
-    final private static String BASE_URI   =
-                                               ServerEnvironmentInfo.getBaseURI() + ((ServerEnvironmentInfo
-                                                   .isRestFilterUsed()) ? ""
-                                                   : "/contentNegotiation")
-                                                   + "/customerservice";
+    protected static String getBaseURI() {
+        if (ServerEnvironmentInfo.isRestFilterUsed()) {
+            return ServerEnvironmentInfo.getBaseURI() + "/customerservice";
+        }
+        return ServerEnvironmentInfo.getBaseURI() + "/contentNegotiation" + "/customerservice";
+    }
 
     public void testGetReturningXML() throws JAXBException {
         // Sent HTTP GET request to query customer info, expect XML
         System.out.println("Sent HTTP GET request to query customer info, expect XML");
-        GetMethod get = new GetMethod(BASE_URI + "/customers/123");
+        GetMethod get = new GetMethod(getBaseURI() + "/customers/123");
         get.addRequestHeader("Accept", "application/xml");
 
         try {
@@ -81,7 +82,7 @@
         // Sent HTTP GET request to query customer info, expect JSON.
         System.out.println("\n");
         System.out.println("Sent HTTP GET request to query customer info, expect JSON");
-        GetMethod get = new GetMethod(BASE_URI + "/customers/123");
+        GetMethod get = new GetMethod(getBaseURI() + "/customers/123");
         get.addRequestHeader("Accept", "application/json");
         httpclient = new HttpClient();
 
@@ -114,7 +115,7 @@
         // In the case of HTTP Client, the Accept header will be absent. The CXF
         // server will treat this
         // as "*/*", JSON format is returned
-        GetMethod get = new GetMethod(BASE_URI + "/customers/123");
+        GetMethod get = new GetMethod(getBaseURI() + "/customers/123");
         httpclient = new HttpClient();
 
         try {

Added: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/WinkApacheContentNegotiationClientTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/WinkApacheContentNegotiationClientTest.java?rev=819192&view=auto
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/WinkApacheContentNegotiationClientTest.java (added)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/WinkApacheContentNegotiationClientTest.java Sat Sep 26 19:21:10 2009
@@ -0,0 +1,30 @@
+/*
+ * 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.wink.itest.contentnegotiation;
+
+import org.apache.wink.client.ApacheHttpClientConfig;
+import org.apache.wink.client.RestClient;
+
+public class WinkApacheContentNegotiationClientTest extends WinkContentNegotiationClientTest {
+
+    @Override
+    public void setUp() {
+        client = new RestClient(new ApacheHttpClientConfig());
+    }
+}

Propchange: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/WinkApacheContentNegotiationClientTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/WinkContentNegotiationClientTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/WinkContentNegotiationClientTest.java?rev=819192&view=auto
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/WinkContentNegotiationClientTest.java (added)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/WinkContentNegotiationClientTest.java Sat Sep 26 19:21:10 2009
@@ -0,0 +1,86 @@
+/*
+ * 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.wink.itest.contentnegotiation;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+
+import junit.framework.TestCase;
+
+import org.apache.wink.client.ClientResponse;
+import org.apache.wink.client.RestClient;
+import org.apache.wink.test.integration.ServerEnvironmentInfo;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.json.JSONTokener;
+
+public class WinkContentNegotiationClientTest extends TestCase {
+
+    protected RestClient client;
+
+    @Override
+    public void setUp() {
+        client = new RestClient();
+    }
+
+    protected static String getBaseURI() {
+        if (ServerEnvironmentInfo.isRestFilterUsed()) {
+            return ServerEnvironmentInfo.getBaseURI() + "/customerservice";
+        }
+        return ServerEnvironmentInfo.getBaseURI() + "/contentNegotiation" + "/customerservice";
+    }
+
+    public void testGetReturningXML() throws JAXBException {
+        ClientResponse response =
+            client.resource(getBaseURI() + "/customers/123").accept("application/xml").get();
+        assertEquals(200, response.getStatusCode());
+        Unmarshaller unmarshaller =
+            JAXBContext.newInstance(ObjectFactory.class.getPackage().getName())
+                .createUnmarshaller();
+        Customer c = (Customer)unmarshaller.unmarshal(response.getEntity(InputStream.class));
+        assertEquals(123, c.getId());
+        assertEquals("John", c.getName());
+    }
+
+    public void testGetReturningJSON() throws IOException, JSONException {
+        // Sent HTTP GET request to query customer info, expect JSON.
+        ClientResponse response =
+            client.resource(getBaseURI() + "/customers/123").accept("application/json").get();
+        String responseBody = response.getEntity(String.class);
+        assertEquals(200, response.getStatusCode());
+        JSONTokener tokenizer = new JSONTokener(responseBody);
+        JSONObject jObj = new JSONObject(tokenizer);
+        assertEquals("John", jObj.get("name"));
+        assertEquals(123L, jObj.getLong("id"));
+    }
+
+    public void testGetForCustomerInfoReturningJSON() throws JSONException {
+        ClientResponse response = client.resource(getBaseURI() + "/customers/123").get();
+        String responseBody = response.getEntity(String.class);
+        assertEquals(200, response.getStatusCode());
+        JSONTokener tokenizer = new JSONTokener(responseBody);
+        JSONObject jObj = new JSONObject(tokenizer);
+        assertEquals("John", jObj.get("name"));
+        assertEquals(123L, jObj.getLong("id"));
+    }
+}

Propchange: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/contentnegotiation/WinkContentNegotiationClientTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/ExceptionsWhileTargettingTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/ExceptionsWhileTargettingTest.java?rev=819192&r1=819191&r2=819192&view=diff
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/ExceptionsWhileTargettingTest.java (original)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/ExceptionsWhileTargettingTest.java Sat Sep 26 19:21:10 2009
@@ -39,6 +39,13 @@
         return ServerEnvironmentInfo.getBaseURI() + "/exceptional";
     }
 
+    protected HttpClient client;
+
+    @Override
+    public void setUp() {
+        client = new HttpClient();
+    }
+
     /**
      * Tests that a 404 error is thrown when no resource can be found for a
      * path.
@@ -46,8 +53,6 @@
      * @throws Exception
      */
     public void test404WhenNoResourceExists() throws Exception {
-        HttpClient client = new HttpClient();
-
         GetMethod getMethod = new GetMethod(getBaseURI() + "/doesnotexist");
         try {
             client.executeMethod(getMethod);
@@ -66,8 +71,6 @@
      * @throws Exception
      */
     public void test405WhenNoMethodExistsOnExistingResource() throws Exception {
-        HttpClient client = new HttpClient();
-
         GetMethod getMethod = new GetMethod(getBaseURI() + "/existingresource/");
         try {
             client.executeMethod(getMethod);
@@ -87,8 +90,6 @@
      * @throws Exception
      */
     public void test404WhenNoSubResourceExists() throws Exception {
-        HttpClient client = new HttpClient();
-
         GetMethod getMethod = new GetMethod(getBaseURI() + "/existingresource/noexistsub");
         try {
             client.executeMethod(getMethod);
@@ -119,8 +120,6 @@
      * @throws Exception
      */
     public void test405WhenResourceMethodDoesNotExistButOthersDo() throws Exception {
-        HttpClient client = new HttpClient();
-
         GetMethod getMethod = new GetMethod(getBaseURI() + "/existingresource/noexistsub");
         try {
             client.executeMethod(getMethod);
@@ -150,8 +149,6 @@
      * @throws Exception
      */
     public void test415WhenResourceMethodDoesNotAcceptRequestEntity() throws Exception {
-        HttpClient client = new HttpClient();
-
         PutMethod putMethod = new PutMethod(getBaseURI() + "/targeting/resourcewithmethod");
         try {
             putMethod.setRequestEntity(new StringRequestEntity("some content", "text/plain",
@@ -184,8 +181,6 @@
      * @throws Exception
      */
     public void test406WhenResourceMethodDoesNotProduceResponseEntityType() throws Exception {
-        HttpClient client = new HttpClient();
-
         PutMethod putMethod = new PutMethod(getBaseURI() + "/targeting/resourcewithmethod");
 
         try {

Modified: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/NullValuesDuringTargettingTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/NullValuesDuringTargettingTest.java?rev=819192&r1=819191&r2=819192&view=diff
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/NullValuesDuringTargettingTest.java (original)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/exceptions/NullValuesDuringTargettingTest.java Sat Sep 26 19:21:10 2009
@@ -41,6 +41,13 @@
         return ServerEnvironmentInfo.getBaseURI() + "/exceptional";
     }
 
+    protected HttpClient client;
+
+    @Override
+    public void setUp() {
+        client = new HttpClient();
+    }
+
     /**
      * Tests that a request to a method with no content type, no request entity,
      * but with a {@link Consumes} method results in a 415 error.
@@ -49,8 +56,6 @@
      */
     public void testNoContentTypeWithNoRequestEntityIncomingRequestWithConsumesMethod()
         throws IOException {
-        HttpClient client = new HttpClient();
-
         PostMethod postMethod =
             new PostMethod(getBaseURI() + "/targeting/nullresource/withconsumes");
         try {
@@ -74,8 +79,6 @@
      */
     public void testNoContentTypeWithRequestEntityIncomingRequestWithConsumesMethod()
         throws IOException {
-        HttpClient client = new HttpClient();
-
         PostMethod postMethod =
             new PostMethod(getBaseURI() + "/targeting/nullresource/withconsumes");
         postMethod.setRequestEntity(new ByteArrayRequestEntity(new byte[] {0, 1, 2}));
@@ -101,8 +104,6 @@
      */
     public void testNoContentTypeWithRequestEntityIncomingRequestWithNoConsumesMethod()
         throws IOException {
-        HttpClient client = new HttpClient();
-
         PostMethod postMethod =
             new PostMethod(getBaseURI() + "/targeting/nullresource/withoutconsumes");
         postMethod.setRequestEntity(new ByteArrayRequestEntity("calledWithString".getBytes()));
@@ -128,8 +129,6 @@
      */
     public void testContentTypeWithRequestEntityIncomingRequestWithNoConsumesMethod()
         throws IOException {
-        HttpClient client = new HttpClient();
-
         PostMethod postMethod =
             new PostMethod(getBaseURI() + "/targeting/nullresource/withoutconsumes");
         postMethod
@@ -156,8 +155,6 @@
      */
     public void testContentTypeWithNoRequestEntityIncomingRequestWithNoConsumesMethod()
         throws IOException {
-        HttpClient client = new HttpClient();
-
         PostMethod postMethod =
             new PostMethod(getBaseURI() + "/targeting/nullresource/withoutconsumes");
         postMethod.setRequestHeader("Content-Type", "text/plain");
@@ -183,8 +180,6 @@
      */
     public void testNoContentTypeWithNoRequestEntityIncomingRequestWithNoConsumesMethod()
         throws IOException {
-        HttpClient client = new HttpClient();
-
         PostMethod postMethod =
             new PostMethod(getBaseURI() + "/targeting/nullresource/withoutconsumes");
         try {
@@ -209,8 +204,6 @@
      */
     public void testContentTypeWithNoRequestEntityIncomingRequestWithConsumesMethod()
         throws IOException {
-        HttpClient client = new HttpClient();
-
         PostMethod postMethod =
             new PostMethod(getBaseURI() + "/targeting/nullresource/withconsumes");
         postMethod.setRequestHeader("Content-Type", "text/plain");
@@ -236,8 +229,6 @@
      */
     public void testContentTypeWithRequestEntityIncomingRequestWithConsumesMethod()
         throws IOException {
-        HttpClient client = new HttpClient();
-
         PostMethod postMethod =
             new PostMethod(getBaseURI() + "/targeting/nullresource/withconsumes");
         postMethod
@@ -262,8 +253,6 @@
      * @throws IOException
      */
     public void testAcceptHeaderIncomingRequestWithProducesMethod() throws IOException {
-        HttpClient client = new HttpClient();
-
         PostMethod postMethod =
             new PostMethod(getBaseURI() + "/targeting/nullresource/withproduces");
         postMethod.setRequestHeader("Accept", "custom/type; q=0.8");
@@ -285,8 +274,6 @@
      * @throws IOException
      */
     public void testAcceptHeaderIncomingRequestWithNoProducesMethod() throws IOException {
-        HttpClient client = new HttpClient();
-
         PostMethod postMethod =
             new PostMethod(getBaseURI() + "/targeting/nullresource/withoutproduces");
         postMethod.setRequestHeader("Accept", "custom/type2; q=0.8");
@@ -308,8 +295,6 @@
      * @throws IOException
      */
     public void testNoAcceptHeaderIncomingRequestWithProducesMethod() throws IOException {
-        HttpClient client = new HttpClient();
-
         PostMethod postMethod =
             new PostMethod(getBaseURI() + "/targeting/nullresource/withproduces");
         try {
@@ -329,8 +314,6 @@
      * @throws IOException
      */
     public void testNoAcceptHeaderIncomingRequestWithNoProducesMethod() throws IOException {
-        HttpClient client = new HttpClient();
-
         PostMethod postMethod =
             new PostMethod(getBaseURI() + "/targeting/nullresource/withoutproduces");
         try {