You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2009/03/23 19:55:07 UTC

svn commit: r757499 - in /cxf/trunk: rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ rt/frontend/jaxrs/src/test...

Author: sergeyb
Date: Mon Mar 23 18:55:06 2009
New Revision: 757499

URL: http://svn.apache.org/viewvc?rev=757499&view=rev
Log:
JAXRS: minor updates to do with conneg

Modified:
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SourceProvider.java
    cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/SelectMethodCandidatesTest.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/resources/TestResource.java
    cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java?rev=757499&r1=757498&r2=757499&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java Mon Mar 23 18:55:06 2009
@@ -300,10 +300,22 @@
     }
     
     private MediaType checkFinalContentType(MediaType mt) {
-        if (mt.isWildcardType() && mt.isWildcardSubtype()) {
+        if (mt.isWildcardType() || mt.isWildcardSubtype()) {
             return MediaType.APPLICATION_OCTET_STREAM_TYPE;
+        } else if (mt.getParameters().containsKey("q")) {
+            StringBuilder sb = new StringBuilder();
+            sb.append(mt.getType()).append('/').append(mt.getSubtype());
+            if (mt.getParameters().size() > 1) {
+                for (String key : mt.getParameters().keySet()) {
+                    if (!"q".equals(key)) {
+                        sb.append(';').append(key).append('=').append(mt.getParameters().get(key));
+                    }
+                }
+            }
+            return MediaType.valueOf(sb.toString());
         } else {
             return mt;
         }
+        
     }
 }

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java?rev=757499&r1=757498&r2=757499&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/JAXBElementProvider.java Mon Mar 23 18:55:06 2009
@@ -46,8 +46,8 @@
 import org.apache.cxf.jaxrs.utils.schemas.SchemaHandler;
 import org.apache.cxf.staxutils.StaxUtils;
 
-@Produces({"application/xml", "text/xml" })
-@Consumes({"application/xml", "text/xml" })
+@Produces({"application/xml", "application/*+xml", "text/xml" })
+@Consumes({"application/xml", "application/*+xml", "text/xml" })
 @Provider
 public class JAXBElementProvider extends AbstractJAXBProvider  {
     

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SourceProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SourceProvider.java?rev=757499&r1=757498&r2=757499&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SourceProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/SourceProvider.java Mon Mar 23 18:55:06 2009
@@ -48,8 +48,8 @@
 import org.apache.cxf.jaxrs.utils.XMLSource;
 
 @Provider
-@Produces({"application/xml", "text/xml" })
-@Consumes({"application/xml", "text/xml" })
+@Produces({"application/xml", "application/*+xml", "text/xml" })
+@Consumes({"application/xml", "application/*+xml", "text/xml" })
 public class SourceProvider implements 
     MessageBodyReader<Object>, MessageBodyWriter<Source> {
 

Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=757499&r1=757498&r2=757499&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Mon Mar 23 18:55:06 2009
@@ -881,8 +881,19 @@
 
         for (MediaType requiredType : requiredMediaTypes) {
             for (MediaType userType : userMediaTypes) {
-                if (requiredType.isCompatible(userType) || userType.isCompatible(requiredType)) {
-                    
+                boolean isCompatible = 
+                    requiredType.isCompatible(userType) || userType.isCompatible(requiredType);
+                if (!isCompatible && requiredType.getType().equalsIgnoreCase(userType.getType())) {
+                    // check if we have composite subtypes
+                    String[] subtypes1 = requiredType.getSubtype().split("\\+");
+                    String[] subtypes2 = userType.getSubtype().split("\\+");
+                    if (subtypes1.length == 2 && subtypes2.length == 2
+                        && subtypes1[1].equalsIgnoreCase(subtypes2[1])
+                        && (subtypes1[0].equals("*") || subtypes2[0].equals("*"))) {
+                        isCompatible = true;
+                    }
+                }
+                if (isCompatible) {
                     boolean parametersMatched = true;
                     for (Map.Entry<String, String> entry : userType.getParameters().entrySet()) {
                         String value = requiredType.getParameters().get(entry.getKey());

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/SelectMethodCandidatesTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/SelectMethodCandidatesTest.java?rev=757499&r1=757498&r2=757499&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/SelectMethodCandidatesTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/SelectMethodCandidatesTest.java Mon Mar 23 18:55:06 2009
@@ -153,4 +153,51 @@
                      ori.getMethodToInvoke().getName());
         
     }
+    
+    @Test
+    public void testSelectBar() throws Exception {
+        JAXRSServiceFactoryBean sf = new JAXRSServiceFactoryBean();
+        sf.setResourceClasses(org.apache.cxf.jaxrs.resources.TestResource.class);
+        sf.create();
+        List<ClassResourceInfo> resources = ((JAXRSServiceImpl)sf.getService()).getClassResourceInfos();
+        
+        MetadataMap<String, String> values = new MetadataMap<String, String>();
+        ClassResourceInfo resource = JAXRSUtils.selectResourceClass(resources, "/1/2/3/d/custom", values);
+        
+        String contentTypes = "*/*";
+        String acceptContentTypes = "application/bar,application/foo";
+        OperationResourceInfo ori = JAXRSUtils.findTargetMethod(resource, 
+                                    values.getFirst(URITemplate.FINAL_MATCH_GROUP), 
+                                    "GET", values, contentTypes, 
+                                    JAXRSUtils.sortMediaTypes(acceptContentTypes));
+        assertNotNull(ori);
+        assertEquals("readBar", ori.getMethodToInvoke().getName());
+        acceptContentTypes = "application/foo,application/bar";
+        resource = JAXRSUtils.selectResourceClass(resources, "/1/2/3/d/custom", values);
+        ori = JAXRSUtils.findTargetMethod(resource, 
+                                    values.getFirst(URITemplate.FINAL_MATCH_GROUP), 
+                                    "GET", values, contentTypes, 
+                                    JAXRSUtils.sortMediaTypes(acceptContentTypes));
+        assertNotNull(ori);
+        assertEquals("readFoo", ori.getMethodToInvoke().getName());
+        
+        acceptContentTypes = "application/foo;q=0.5,application/bar";
+        resource = JAXRSUtils.selectResourceClass(resources, "/1/2/3/d/custom", values);
+        ori = JAXRSUtils.findTargetMethod(resource, 
+                                    values.getFirst(URITemplate.FINAL_MATCH_GROUP), 
+                                    "GET", values, contentTypes, 
+                                    JAXRSUtils.sortMediaTypes(acceptContentTypes));
+        assertNotNull(ori);
+        assertEquals("readBar", ori.getMethodToInvoke().getName());
+        
+        acceptContentTypes = "application/foo,application/bar;q=0.5";
+        resource = JAXRSUtils.selectResourceClass(resources, "/1/2/3/d/custom", values);
+        ori = JAXRSUtils.findTargetMethod(resource, 
+                                    values.getFirst(URITemplate.FINAL_MATCH_GROUP), 
+                                    "GET", values, contentTypes, 
+                                    JAXRSUtils.sortMediaTypes(acceptContentTypes));
+        assertNotNull(ori);
+        assertEquals("readFoo", ori.getMethodToInvoke().getName());
+        
+    }
 }

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/resources/TestResource.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/resources/TestResource.java?rev=757499&r1=757498&r2=757499&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/resources/TestResource.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/resources/TestResource.java Mon Mar 23 18:55:06 2009
@@ -89,6 +89,20 @@
     public String readMethod2() {
         return "This is a list method";
     }
+    
+    @GET
+    @Path("{id:custom}")
+    @Produces("application/bar")
+    public String readBar() {
+        return "This is a bar method";
+    }
+    
+    @GET
+    @Path("{id:custom}")
+    @Produces("application/foo")
+    public String readFoo() {
+        return "This is a foo method";
+    }
 }
 
 

Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java?rev=757499&r1=757498&r2=757499&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java Mon Mar 23 18:55:06 2009
@@ -291,6 +291,15 @@
     }
 
     @Test
+    public void testIntersectMimeTypesCompositeSubtype() throws Exception {
+        List <MediaType> candidateList = 
+            JAXRSUtils.intersectMimeTypes("application/bar+xml", "application/*+xml");  
+
+        assertEquals(1, candidateList.size());
+        assertEquals("application/bar+xml", candidateList.get(0).toString());
+    }
+    
+    @Test
     public void testIntersectMimeTypes() throws Exception {
         //test basic
         List<MediaType> methodMimeTypes = new ArrayList<MediaType>(

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java?rev=757499&r1=757498&r2=757499&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java Mon Mar 23 18:55:06 2009
@@ -449,7 +449,7 @@
 
     @GET
     @Path("/cdwithmultitypes/{CDId}/")
-    @Produces({"application/xml", "application/json" }) 
+    @Produces({"application/xml", "application/bar+xml", "application/json" }) 
     public CD getCDWithMultiContentTypes(@PathParam("CDId") String id) {
         CD cd = cds.get(Long.parseLong(id));
 

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java?rev=757499&r1=757498&r2=757499&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java Mon Mar 23 18:55:06 2009
@@ -24,6 +24,7 @@
 import java.net.URL;
 import java.net.URLConnection;
 
+import org.apache.commons.httpclient.Header;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.methods.DeleteMethod;
 import org.apache.commons.httpclient.methods.FileRequestEntity;
@@ -136,13 +137,11 @@
     
     @Test
     public void testNoMessageWriterFound() throws Exception {
-        // TODO : more specific message is needed
         String msg1 = ".No message body writer found for response class : GregorianCalendar.";
         String msg2 = ".No message body writer found for response class : Calendar.";
         
-        getAndCompareStrings("http://localhost:9080/bookstore/timetable",
-                      msg1, msg2,
-                      "*/*", 500);
+        getAndCompareStrings("http://localhost:9080/bookstore/timetable", 
+                             new String[]{msg1, msg2}, "*/*", 500);
     }
     
     @SuppressWarnings("deprecation")
@@ -231,6 +230,18 @@
     }
     
     @Test
+    public void testGetBookTypeAndWildcard() throws Exception {
+        getAndCompareAsStrings("http://localhost:9080/bookstore/books/123",
+                               "resources/expected_get_book123.txt",
+                               "application/xml;q=0.8,*/*", 
+                               "application/xml", 200);
+        getAndCompareAsStrings("http://localhost:9080/bookstore/books/123",
+                               "resources/expected_get_book123.txt",
+                               "application/*", 
+                               "application/xml", 200);
+    }
+    
+    @Test
     public void testGetBook123() throws Exception {
         getAndCompareAsStrings("http://localhost:9080/bookstore/books/123",
                                "resources/expected_get_book123.txt",
@@ -250,7 +261,13 @@
         
         getAndCompareAsStrings("http://localhost:9080/bookstore/books/123",
                                "resources/expected_get_book123json.txt",
-                               "application/json, application/xml", 200);
+                               "application/json, application/xml", 
+                               "application/json", 200);
+        
+        getAndCompareAsStrings("http://localhost:9080/bookstore/books/123",
+                               "resources/expected_get_book123.txt",
+                               "application/xml, application/json", 
+                               "application/xml", 200);
     }
     
     @Test
@@ -258,7 +275,7 @@
         
         getAndCompareAsStrings("http://localhost:9080/bookstore/books/123",
                                "resources/expected_get_book123.txt",
-                               "*/*", 200);
+                               "*/*", "application/xml", 200);
         
     }
     
@@ -302,14 +319,14 @@
     public void testGetBookByHeader() throws Exception {
         getAndCompareAsStrings("http://localhost:9080/bookstore/bookheaders",
                                "resources/expected_get_book123.txt",
-                               "application/xml;q=0.5,text/xml", 200);
+                               "application/xml;q=0.5,text/xml", "text/xml", 200);
     }
     
     @Test
     public void testGetBookByHeaderDefault() throws Exception {
         getAndCompareAsStrings("http://localhost:9080/bookstore/bookheaders2",
                                "resources/expected_get_book123.txt",
-                               "application/xml;q=0.5,text/xml", 200);
+                               "application/xml;q=0.5,text/xml", "text/xml", 200);
     }
     
     @Test
@@ -334,14 +351,15 @@
         
         getAndCompareAsStrings("http://localhost:9080/bookstore/books/123",
                                "resources/expected_get_book123json.txt",
-                               "application/xml;q=0.1,application/json", 200);
+                               "application/xml;q=0.1,application/json", "application/json", 200);
     }
     
     @Test
     public void testGetBook123FromSubObject() throws Exception {
         getAndCompareAsStrings(
             "http://localhost:9080/bookstore/booksubresourceobject/123/chaptersobject/sub/1",
-            "resources/expected_get_chapter1.txt", "application/xml", 200);
+            "resources/expected_get_chapter1.txt", "application/xml",
+            "application/xml;charset=iso-8859-1", 200);
     }
     
     @Test
@@ -349,7 +367,7 @@
         
         getAndCompareAsStrings("http://localhost:9080/bookstore/booksubresource/123/chapters/1",
                                "resources/expected_get_chapter1.txt",
-                               "application/xml", 200);
+                               "application/xml", "application/xml;charset=iso-8859-1", 200);
     }
     
     @Test
@@ -360,7 +378,7 @@
                                "application/xml", 200);
         getAndCompareAsStrings("http://localhost:9080/bookstore/booksubresource/123/chapters/sub/1/recurse2",
                                "resources/expected_get_chapter1.txt",
-                               "application/xml", 200);
+                               "application/xml", "application/xml;charset=iso-8859-1", 200);
     }
     
     @Test
@@ -375,7 +393,7 @@
         
         getAndCompareAsStrings("http://localhost:9080/bookstore/books/126",
                                "resources/expected_get_book_notfound.txt",
-                               "application/xml", 500);
+                               "application/xml", "text/xml; charset=utf-8", 500);
     }
     
     @Test
@@ -661,7 +679,15 @@
         
         getAndCompareAsStrings("http://localhost:9080/bookstore/cdwithmultitypes/123",
                                "resources/expected_get_cd.txt",
-                               "application/json;q=0.8,application/xml", 200);
+                               "application/json;q=0.8,application/xml,*/*", "application/xml", 200);
+    }
+    
+    @Test
+    public void testGetCDWithMultiContentTypesCustomXML() throws Exception {
+        
+        getAndCompareAsStrings("http://localhost:9080/bookstore/cdwithmultitypes/123",
+                               "resources/expected_get_cd.txt",
+                               "application/bar+xml", "application/bar+xml", 200);
     }
     
     @Test
@@ -671,7 +697,7 @@
                                "application/json", 200);
         getAndCompareAsStrings("http://localhost:9080/bookstore/cdwithmultitypes/123",
                                "resources/expected_get_cdjson.txt",
-                               "application/xml;q=0.9,application/json", 200);
+                               "*/*,application/xml;q=0.9,application/json", "application/json", 200);
     }
     
     @Test
@@ -681,7 +707,7 @@
                       "[class org.apache.cxf.systest.jaxrs.BookStore, " 
                       + "class org.apache.cxf.systest.jaxrs.Book, "
                       + "class org.apache.cxf.systest.jaxrs.Chapter]", 
-                      "text/plain", 200);
+                      "text/plain", "text/plain", 200);
     }
     
     @Test
@@ -691,7 +717,7 @@
                       "[class org.apache.cxf.systest.jaxrs.BookStore, " 
                       + "class org.apache.cxf.systest.jaxrs.Book, "
                       + "class org.apache.cxf.systest.jaxrs.Chapter]", 
-                      "text/plain", 200);
+                      "text/plain", "text/plain", 200);
     }
 
     @Test
@@ -701,8 +727,7 @@
                           + "/bookstore/booksubresource/123/chapters/sub/1/matched!uris]";
         getAndCompare("http://localhost:9080/bookstore/"
                       + "booksubresource/123/chapters/sub/1/matched%21uris?decode=true", 
-                      expected, 
-                      "text/plain", 200);
+                      expected, "text/plain", "text/plain", 200);
     }
 
     @Test
@@ -714,7 +739,7 @@
         getAndCompare("http://localhost:9080/bookstore/"
                       + "booksubresource/123/chapters/sub/1/matched%21uris?decode=false", 
                       expected,
-                      "text/plain", 200);
+                      "text/plain", "text/plain", 200);
     }
     
     private void getAndCompareAsStrings(String address, 
@@ -726,6 +751,21 @@
         getAndCompare(address,
                       expected,
                       acceptType,
+                      acceptType,
+                      status);
+    }
+    
+    private void getAndCompareAsStrings(String address, 
+                                        String resourcePath,
+                                        String acceptType,
+                                        String expectedContentType,
+                                        int status) throws Exception {
+        String expected = getStringFromInputStream(
+                              getClass().getResourceAsStream(resourcePath));
+        getAndCompare(address,
+                      expected,
+                      acceptType,
+                      expectedContentType,
                       status);
     }
     
@@ -733,6 +773,18 @@
                                String expectedValue,
                                String acceptType,
                                int expectedStatus) throws Exception {
+        getAndCompare(address,
+                      expectedValue,
+                      acceptType,
+                      null,
+                      expectedStatus);
+    }
+    
+    private void getAndCompare(String address, 
+                               String expectedValue,
+                               String acceptType,
+                               String expectedContentType,
+                               int expectedStatus) throws Exception {
         GetMethod get = new GetMethod(address);
         get.setRequestHeader("Accept", acceptType);
         get.setRequestHeader("Accept-Language", "da;q=0.8,en");
@@ -747,16 +799,20 @@
             if (expectedStatus == 200) {
                 assertEquals("123", get.getResponseHeader("BookId").getValue());
             }
+            if (expectedContentType != null) {
+                Header ct = get.getResponseHeader("Content-Type");
+                assertEquals("Wrong type of response", expectedContentType, ct.getValue());
+            }
         } finally {
             get.releaseConnection();
         }
     }
     
     private void getAndCompareStrings(String address, 
-                               String expectedValue1,
-                               String expectedValue2,
+                               String[] expectedValue,
                                String acceptType,
                                int expectedStatus) throws Exception {
+        assertEquals(2, expectedValue.length);
         GetMethod get = new GetMethod(address);
         get.setRequestHeader("Accept", acceptType);
         HttpClient httpClient = new HttpClient();
@@ -765,7 +821,7 @@
             assertEquals(expectedStatus, result);
             String jsonContent = getStringFromInputStream(get.getResponseBodyAsStream());
             assertTrue("Expected value is wrong", 
-                       expectedValue1.equals(jsonContent) || expectedValue2.equals(jsonContent));
+                       expectedValue[0].equals(jsonContent) || expectedValue[1].equals(jsonContent));
         } finally {
             get.releaseConnection();
         }