diff options
Diffstat (limited to 'sca-java-2.x/trunk/modules/binding-rest-runtime/src')
2 files changed, 42 insertions, 2 deletions
diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSWriter.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSWriter.java index 4ee1ff8c92..6064d23b1e 100644 --- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSWriter.java +++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/main/java/org/apache/tuscany/sca/binding/rest/provider/DataBindingJAXRSWriter.java @@ -120,8 +120,16 @@ public class DataBindingJAXRSWriter<T> extends DataBindingJAXRSProvider implemen Set<String> fieldSet = tokenize(fields); for (String f : fieldSet) { if (f.startsWith("-")) { + if (excludedFields == null) { + excludedFields = new HashSet<String>(); + metadata.put(EXCLUDED_FIELDS, excludedFields); + } excludedFields.add(f.substring(1)); } else { + if (includedFields == null) { + includedFields = new HashSet<String>(); + metadata.put(INCLUDED_FIELDS, includedFields); + } includedFields.add(f); } } diff --git a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java index c09871241c..7a07c9b5c8 100644 --- a/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java +++ b/sca-java-2.x/trunk/modules/binding-rest-runtime/src/test/java/org/apache/tuscany/sca/binding/rest/wireformat/json/CatalogServiceTestCase.java @@ -91,15 +91,47 @@ public class CatalogServiceTestCase { } @Test - public void testGetInvocationWithFilter() throws Exception { + public void testGetInvocationWithFilter1() throws Exception { WebConversation wc = new WebConversation(); - WebRequest request = new GetMethodWebRequest(SERVICE_URL + "?excludedFields=price"); + WebRequest request = new GetMethodWebRequest(SERVICE_URL + "?excludedFields=items.price"); request.setHeaderField("Content-Type", "application/json"); WebResponse response = wc.getResource(request); Assert.assertEquals(200, response.getResponseCode()); String json = response.getText(); + System.out.println(json); Assert.assertNotNull(json); + Assert.assertTrue(json.contains("name")); + Assert.assertFalse(json.contains("price")); + } + + @Test + public void testGetInvocationWithFilter2() throws Exception { + WebConversation wc = new WebConversation(); + WebRequest request = new GetMethodWebRequest(SERVICE_URL + "?fields=items,-items.price"); + request.setHeaderField("Content-Type", "application/json"); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + String json = response.getText(); + System.out.println(json); + Assert.assertNotNull(json); + Assert.assertTrue(json.contains("name")); + Assert.assertFalse(json.contains("price")); + } + + @Test + public void testGetInvocationWithFilter3() throws Exception { + WebConversation wc = new WebConversation(); + WebRequest request = new GetMethodWebRequest(SERVICE_URL + "?includedFields=items.name&excludedFields=items"); + request.setHeaderField("Content-Type", "application/json"); + WebResponse response = wc.getResource(request); + + Assert.assertEquals(200, response.getResponseCode()); + String json = response.getText(); + System.out.println(json); + Assert.assertNotNull(json); + Assert.assertTrue(json.contains("name")); Assert.assertFalse(json.contains("price")); } |