Author: bimargulies
Date: Thu Dec  1 02:22:10 2011
New Revision: 1208932

URL: http://svn.apache.org/viewvc?rev=1208932&view=rev
Log:
CXF-3943: see the simplest possible test work, courtesy of the apache http 
client library.

Modified:
    
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/cors/CrossOriginOutputFilter.java
    cxf/trunk/systests/jaxrs/pom.xml
    
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/cors/BasicCrossOriginTest.java

Modified: 
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/cors/CrossOriginOutputFilter.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/cors/CrossOriginOutputFilter.java?rev=1208932&r1=1208931&r2=1208932&view=diff
==============================================================================
--- 
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/cors/CrossOriginOutputFilter.java
 (original)
+++ 
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/cors/CrossOriginOutputFilter.java
 Thu Dec  1 02:22:10 2011
@@ -51,6 +51,12 @@ public class CrossOriginOutputFilter imp
         }
         return null;
     }
+    
+    private void addHeaders(ResponseBuilder rb, String key, List<String> vals) 
{
+        for (String v : vals) {
+            rb.header(key, v);
+        }
+    }
 
     public Response handleResponse(Message m, OperationResourceInfo ori, 
Response response) {
         String op = 
(String)m.getExchange().get(CrossOriginOutputFilter.class.getName());
@@ -61,24 +67,24 @@ public class CrossOriginOutputFilter imp
         ResponseBuilder rbuilder = Response.fromResponse(response);
         if ("simple".equals(op)) {
             // 5.1.3: add Allow-Origin supplied from the input side, plus 
allow-credentials as requested
-            rbuilder.header(CorsHeaderConstants.HEADER_AC_ALLOW_ORIGIN, 
originHeader);
+            addHeaders(rbuilder, CorsHeaderConstants.HEADER_AC_ALLOW_ORIGIN, 
originHeader);
             rbuilder.header(CorsHeaderConstants.HEADER_AC_ALLOW_CREDENTIALS, 
                                 Boolean.toString(allowCredentials));
             // 5.1.4 add allowed headers
             List<String> allowedHeaders 
                 = getHeadersFromInput(m, 
CorsHeaderConstants.HEADER_AC_ALLOW_METHODS);
             if (allowedHeaders != null) {
-                rbuilder.header(CorsHeaderConstants.HEADER_AC_ALLOW_METHODS, 
allowedHeaders);
+                addHeaders(rbuilder, 
CorsHeaderConstants.HEADER_AC_ALLOW_METHODS, allowedHeaders);
             }
             if (exposeHeaders.size() > 0) {
-                rbuilder.header(CorsHeaderConstants.HEADER_AC_EXPOSE_HEADERS, 
exposeHeaders);
+                addHeaders(rbuilder, 
CorsHeaderConstants.HEADER_AC_EXPOSE_HEADERS, exposeHeaders);
             }
             // if someone wants to clear the cache, we can't help them.
             return rbuilder.build();
         } else {
             // preflight
             // 5.2.7 add Allow-Origin supplied from the input side, plus 
allow-credentials as requested
-            rbuilder.header(CorsHeaderConstants.HEADER_AC_ALLOW_ORIGIN, 
originHeader);
+            addHeaders(rbuilder, CorsHeaderConstants.HEADER_AC_ALLOW_ORIGIN, 
originHeader);
             rbuilder.header(CorsHeaderConstants.HEADER_AC_ALLOW_CREDENTIALS, 
                                 Boolean.toString(allowCredentials));
             // 5.2.8 max-age
@@ -89,13 +95,13 @@ public class CrossOriginOutputFilter imp
             /*
              * Currently, input side just lists the one requested method, and 
spec endorses that.
              */
-            rbuilder.header(CorsHeaderConstants.HEADER_AC_ALLOW_METHODS, 
+            addHeaders(rbuilder, CorsHeaderConstants.HEADER_AC_ALLOW_METHODS, 
                             getHeadersFromInput(m, 
CorsHeaderConstants.HEADER_AC_ALLOW_METHODS));
             // 5.2.10 add allowed headers
             List<String> allowedHeaders 
                 = getHeadersFromInput(m, 
CorsHeaderConstants.HEADER_AC_ALLOW_HEADERS);
             if (allowedHeaders != null && allowedHeaders.size() > 0) {
-                rbuilder.header(CorsHeaderConstants.HEADER_AC_ALLOW_HEADERS, 
allowedHeaders);
+                addHeaders(rbuilder, 
CorsHeaderConstants.HEADER_AC_ALLOW_HEADERS, allowedHeaders);
             }
             return rbuilder.build();
             

Modified: cxf/trunk/systests/jaxrs/pom.xml
URL: 
http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/pom.xml?rev=1208932&r1=1208931&r2=1208932&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/pom.xml (original)
+++ cxf/trunk/systests/jaxrs/pom.xml Thu Dec  1 02:22:10 2011
@@ -314,6 +314,12 @@
           <artifactId>jackson-core-asl</artifactId>
           <version>1.9.0</version>
         </dependency>
+        <dependency>
+         <groupId>org.apache.httpcomponents</groupId>
+         <artifactId>httpclient</artifactId>
+         <version>4.1.2</version>
+         <scope>test</scope>
+        </dependency>
     </dependencies>
     
     <build>

Modified: 
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/cors/BasicCrossOriginTest.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/cors/BasicCrossOriginTest.java?rev=1208932&r1=1208931&r2=1208932&view=diff
==============================================================================
--- 
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/cors/BasicCrossOriginTest.java
 (original)
+++ 
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/cors/BasicCrossOriginTest.java
 Thu Dec  1 02:22:10 2011
@@ -19,18 +19,16 @@
 
 package org.apache.cxf.systest.jaxrs.cors;
 
-import java.io.InputStream;
-import java.util.List;
-
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
-
 import org.apache.cxf.helpers.IOUtils;
-import org.apache.cxf.interceptor.LoggingOutInterceptor;
-import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.cors.CorsHeaderConstants;
 import org.apache.cxf.systest.jaxrs.AbstractSpringServer;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
+import org.apache.http.Header;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.DefaultHttpClient;
 
 import org.junit.BeforeClass;
 import org.junit.Ignore;
@@ -45,25 +43,21 @@ public class BasicCrossOriginTest extend
                    launchServer(SpringServer.class, true));
     }
     
-    @org.junit.Ignore
-    @SuppressWarnings("unchecked")
     @Test
     public void testSimpleGet() throws Exception {
         String origin = "http://localhost:"; + PORT;
-        WebClient wc = WebClient.create(origin + "/");
-        WebClient.getConfig(wc).getOutInterceptors().add(new 
LoggingOutInterceptor());
-        // Since our WebClient doesn't know from Origin, we need to do this 
ourselves.
-        wc.header("Origin", origin);
-        Response r = 
wc.replacePath("/simpleGet/HelloThere").accept("text/plain").get();
-        assertEquals(Response.Status.OK.getStatusCode(), r.getStatus());
-        String echo = IOUtils.toString((InputStream)r.getEntity());
-        assertEquals("HelloThere", echo);
-        MultivaluedMap<String, Object> m = r.getMetadata();
-        Object acAllowed = m.get(CorsHeaderConstants.HEADER_AC_ALLOW_ORIGIN);
-        assertNotNull(acAllowed);
-        List<String> origins = (List<String>)acAllowed;
-        assertEquals(1, origins.size());
-        assertEquals(origin, origins.get(0));
+        HttpClient httpclient = new DefaultHttpClient();
+        HttpGet httpget = new HttpGet(origin + "/simpleGet/HelloThere");
+        httpget.addHeader("Origin", origin);
+        HttpResponse response = httpclient.execute(httpget);
+        HttpEntity entity = response.getEntity();
+        String e = IOUtils.toString(entity.getContent(), "utf-8");
+
+        assertEquals("HelloThere", e);
+        Header[] aaoHeaders = 
response.getHeaders(CorsHeaderConstants.HEADER_AC_ALLOW_ORIGIN);
+        assertNotNull(aaoHeaders);
+        assertEquals(1, aaoHeaders.length);
+        assertEquals("*", aaoHeaders[0].getValue());
     }
     
     @Ignore


Reply via email to