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 2012/05/10 18:16:43 UTC

svn commit: r1336774 - in /cxf/branches/2.4.x-fixes: ./ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ rt/frontend/...

Author: sergeyb
Date: Thu May 10 16:16:42 2012
New Revision: 1336774

URL: http://svn.apache.org/viewvc?rev=1336774&view=rev
Log:
Merged revisions 1336749,1336760 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/branches/2.5.x-fixes

................
  r1336749 | sergeyb | 2012-05-10 16:41:27 +0100 (Thu, 10 May 2012) | 13 lines
  
  Merged revisions 1336660,1336747 via svnmerge from 
  https://svn.apache.org/repos/asf/cxf/trunk
  
  ........
    r1336660 | sergeyb | 2012-05-10 14:07:48 +0100 (Thu, 10 May 2012) | 1 line
    
    [CXF-4306] Trying to handle the mix-up of FormParam and Multipart annotaions
  ........
    r1336747 | sergeyb | 2012-05-10 16:35:06 +0100 (Thu, 10 May 2012) | 1 line
    
    [CXF-4307] Setting a default in Cookie separator to ';'
  ........
................
  r1336760 | sergeyb | 2012-05-10 16:54:12 +0100 (Thu, 10 May 2012) | 9 lines
  
  Merged revisions 1336734 via svnmerge from 
  https://svn.apache.org/repos/asf/cxf/trunk
  
  ........
    r1336734 | sergeyb | 2012-05-10 16:02:22 +0100 (Thu, 10 May 2012) | 1 line
    
    [CXF-4305] Getting SearchContext to enforce that only non-primitive condition types are supported
  ........
................

Modified:
    cxf/branches/2.4.x-fixes/   (props changed)
    cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchContextImpl.java
    cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java
    cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/FormUtils.java
    cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/SearchContextImplTest.java
    cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java
    cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
    cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
    cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
    cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java
    cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/attachmentFormJsonFiles

Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Thu May 10 16:16:42 2012
@@ -0,0 +1,2 @@
+/cxf/branches/2.5.x-fixes:1336749-1336760
+/cxf/trunk:1336660,1336734,1336747

Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchContextImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchContextImpl.java?rev=1336774&r1=1336773&r2=1336774&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchContextImpl.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/search/SearchContextImpl.java Thu May 10 16:16:42 2012
@@ -21,9 +21,12 @@ package org.apache.cxf.jaxrs.ext.search;
 
 import java.util.LinkedHashMap;
 import java.util.Map;
+import java.util.logging.Logger;
 
 import javax.ws.rs.core.MultivaluedMap;
 
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.jaxrs.utils.InjectionUtils;
 import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.apache.cxf.message.Message;
 
@@ -31,6 +34,7 @@ public class SearchContextImpl implement
 
     public static final String SEARCH_QUERY = "_search";
     public static final String SHORT_SEARCH_QUERY = "_s";
+    private static final Logger LOG = LogUtils.getL7dLogger(SearchContextImpl.class);
     private Message message;
     
     public SearchContextImpl(Message message) {
@@ -38,6 +42,11 @@ public class SearchContextImpl implement
     }
     
     public <T> SearchCondition<T> getCondition(Class<T> cls) {
+        if (InjectionUtils.isPrimitive(cls)) {
+            String errorMessage = "Primitive condition types are not supported";
+            LOG.warning(errorMessage);
+            throw new IllegalArgumentException(errorMessage);
+        }
         FiqlParser<T> parser = getParser(cls);
         
         String expression = getSearchExpression();
@@ -70,7 +79,6 @@ public class SearchContextImpl implement
     }
     
     private <T> FiqlParser<T> getParser(Class<T> cls) {
-        
         // we can use this method as a parser factory, ex
         // we can get parsers capable of parsing XQuery and other languages
         // depending on the properties set by a user

Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java?rev=1336774&r1=1336773&r2=1336774&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java Thu May 10 16:16:42 2012
@@ -49,6 +49,7 @@ public class HttpHeadersImpl implements 
         "org.apache.cxf.http.cookie.separator";
     private static final String COOKIE_SEPARATOR_CRLF = "crlf";
     private static final String DEFAULT_SEPARATOR = ",";
+    private static final String DEFAULT_COOKIE_SEPARATOR = ";";
     
     private static final String COMPLEX_HEADER_EXPRESSION = 
         "(([\\w]+=\"[^\"]*\")|([\\w]+=[\\w]+)|([\\w]+))(;(([\\w]+=\"[^\"]*\")|([\\w]+=[\\w]+)|([\\w]+)))?";
@@ -114,7 +115,7 @@ public class HttpHeadersImpl implements 
             return COOKIE_SEPARATOR_CRLF.equals(cookiePropValue.toString()) 
                 ? "\r\n" : cookiePropValue.toString();
         } else {
-            return DEFAULT_SEPARATOR;
+            return DEFAULT_COOKIE_SEPARATOR;
         }
     }
     

Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/FormUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/FormUtils.java?rev=1336774&r1=1336773&r2=1336774&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/FormUtils.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/FormUtils.java Thu May 10 16:16:42 2012
@@ -50,7 +50,7 @@ public final class FormUtils {
     private static final Logger LOG = LogUtils.getL7dLogger(FormUtils.class);
     private static final String MULTIPART_FORM_DATA_TYPE = "form-data";  
     private static final String MAX_FORM_PARAM_COUNT = "maxFormParameterCount";  
-        
+    private static final String CONTENT_DISPOSITION_FILES_PARAM = "files";    
     private FormUtils() {
         
     }
@@ -158,10 +158,18 @@ public final class FormUtils {
             if (StringUtils.isEmpty(name)) { 
                 throw new WebApplicationException(400);
             }
+            if (CONTENT_DISPOSITION_FILES_PARAM.equals(name)) {
+                // this is a reserved name in Content-Disposition for parts containing files
+                continue;
+            }
             try {
                 String value = IOUtils.toString(a.getDataHandler().getInputStream());
                 params.add(HttpUtils.urlDecode(name),
                            decode ? HttpUtils.urlDecode(value) : value);
+            } catch (IllegalArgumentException ex) {
+                LOG.warning("Illegal URL-encoded characters, make sure that no "
+                    + "@FormParam and @Multipart annotations are mixed up");
+                throw new WebApplicationException(415);
             } catch (IOException ex) {
                 throw new WebApplicationException(415);
             }

Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/SearchContextImplTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/SearchContextImplTest.java?rev=1336774&r1=1336773&r2=1336774&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/SearchContextImplTest.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/ext/search/SearchContextImplTest.java Thu May 10 16:16:42 2012
@@ -36,6 +36,11 @@ public class SearchContextImplTest exten
             SearchContextImpl.SEARCH_QUERY + "=" + "name==CXF%20Rocks;id=gt=123");
     }
     
+    @Test(expected = IllegalArgumentException.class)
+    public void testIllegalConditionType() {
+        SearchContext context = new SearchContextImpl(new MessageImpl());
+        context.getCondition(String.class);
+    }
     @Test
     public void testFiqlSearchConditionWithShortQuery() {
         doTestFiqlSearchCondition(

Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java?rev=1336774&r1=1336773&r2=1336774&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java Thu May 10 16:16:42 2012
@@ -240,7 +240,7 @@ public class HttpHeadersImplTest extends
         Message m = new MessageImpl();
         m.setExchange(new ExchangeImpl());
         MetadataMap<String, String> headers = createHeaders();
-        headers.putSingle(HttpHeaders.COOKIE, "a=b,c=d");
+        headers.putSingle(HttpHeaders.COOKIE, "a=b;c=d");
         m.put(Message.PROTOCOL_HEADERS, headers);
         HttpHeaders h = new HttpHeadersImpl(m);
         Map<String, Cookie> cookies = h.getCookies();
@@ -250,15 +250,15 @@ public class HttpHeadersImplTest extends
     }
     
     @Test
-    public void testGetCookiesWithSemiColon() throws Exception {
+    public void testGetCookiesWithComma() throws Exception {
         
         Message m = new MessageImpl();
         Exchange ex = new ExchangeImpl();
         ex.setInMessage(m);
-        ex.put("org.apache.cxf.http.cookie.separator", ";");
+        ex.put("org.apache.cxf.http.cookie.separator", ",");
         m.setExchange(ex);
         MetadataMap<String, String> headers = createHeaders();
-        headers.putSingle(HttpHeaders.COOKIE, "a=b" + ";" + "c=d");
+        headers.putSingle(HttpHeaders.COOKIE, "a=b,c=d");
         m.put(Message.PROTOCOL_HEADERS, headers);
         HttpHeaders h = new HttpHeadersImpl(m);
         Map<String, Cookie> cookies = h.getCookies();

Modified: cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java?rev=1336774&r1=1336773&r2=1336774&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java (original)
+++ cxf/branches/2.4.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java Thu May 10 16:16:42 2012
@@ -753,7 +753,7 @@ public class JAXRSUtilsTest extends Asse
         Method m = Customer.class.getMethod("testMultipleCookieParam", argType);
         MessageImpl messageImpl = new MessageImpl();
         MultivaluedMap<String, String> headers = new MetadataMap<String, String>();
-        headers.add("Cookie", "c1=c1Value, c2=c2Value");
+        headers.add("Cookie", "c1=c1Value; c2=c2Value");
         headers.add("Cookie", "c3=c3Value");
         messageImpl.put(Message.PROTOCOL_HEADERS, headers);
         List<Object> params = JAXRSUtils.processParameters(new OperationResourceInfo(m, null),

Modified: cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java?rev=1336774&r1=1336773&r2=1336774&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java (original)
+++ cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java Thu May 10 16:16:42 2012
@@ -1761,7 +1761,7 @@ public class JAXRSClientServerBookTest e
                                int expectedStatus) throws Exception {
         GetMethod get = new GetMethod(address);
         get.setRequestHeader("Accept", acceptType);
-        get.addRequestHeader("Cookie", "a=b,c=d");
+        get.addRequestHeader("Cookie", "a=b;c=d");
         get.addRequestHeader("Cookie", "e=f");
         get.setRequestHeader("Accept-Language", "da;q=0.8,en");
         get.setRequestHeader("Book", "1,2,3");

Modified: cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java?rev=1336774&r1=1336773&r2=1336774&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java (original)
+++ cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java Thu May 10 16:16:42 2012
@@ -135,6 +135,12 @@ public class JAXRSMultipartTest extends 
     }
     
     @Test
+    public void testBookJSONFormTwoFilesMixUp() throws Exception {
+        String address = "http://localhost:" + PORT + "/bookstore/books/filesform/mixup";
+        doAddFormBook(address, "attachmentFormJsonFiles", 200);               
+    }
+    
+    @Test
     public void testBookJSONFormOneFile() throws Exception {
         String address = "http://localhost:" + PORT + "/bookstore/books/fileform";
         doAddFormBook(address, "attachmentFormJsonFile", 200);               

Modified: cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java?rev=1336774&r1=1336773&r2=1336774&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java (original)
+++ cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java Thu May 10 16:16:42 2012
@@ -412,7 +412,7 @@ public class MultipartStore {
         Book b1 = books.get(0);
         Book b2 = books.get(1);
         if (!"CXF in Action - 1".equals(b1.getName())
-            || !"CXF in Action - 2".equals(b2.getName())
+            || !"CXF in Action - 2%".equals(b2.getName())
             || !"Larry".equals(name)) {
             throw new WebApplicationException();
         }
@@ -422,6 +422,16 @@ public class MultipartStore {
     }
     
     @POST
+    @Path("/books/filesform/mixup")
+    @Produces("text/xml")
+    @Consumes("multipart/form-data")
+    public Response addBookFilesFormMixUp(@FormParam("owner") String name, 
+                                          @Multipart("files") List<Book> books)
+        throws Exception {
+        return addBookFilesForm(name, books);
+    }
+    
+    @POST
     @Path("/books/fileform")
     @Produces("text/xml")
     @Consumes("multipart/form-data")

Modified: cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/attachmentFormJsonFiles
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/attachmentFormJsonFiles?rev=1336774&r1=1336773&r2=1336774&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/attachmentFormJsonFiles (original)
+++ cxf/branches/2.4.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/attachmentFormJsonFiles Thu May 10 16:16:42 2012
@@ -19,6 +19,6 @@ Content-Disposition: form-data; name="bo
 Content-Type: application/json; charset=US-ASCII
 Content-Transfer-Encoding: 8bit
 
-{"Book":{"name":"CXF in Action - 2","id":124}}
+{"Book":{"name":"CXF in Action - 2%","id":124}}
 --_Part_4_701508.1145579811786--
 --bqJky99mlBWa-ZuqjC53mG6EzbmlxB--
\ No newline at end of file