You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2021/04/13 04:38:28 UTC

[tomee] 02/02: Fixes TOMEE-3157 TOMEE-3158 by ensuring @Encoded is respected

This is an automated email from the ASF dual-hosted git repository.

dblevins pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomee.git

commit 5c47f4482ea80601e17ead56e6f0a72e494a5b7e
Author: David Blevins <da...@gmail.com>
AuthorDate: Mon Apr 12 21:38:06 2021 -0700

    Fixes TOMEE-3157 TOMEE-3158 by ensuring @Encoded is respected
    
    This fix should go to CXF and eventually be removed from here.
    
    See these TCK tests.
    com.sun.ts.tests.jaxrs.ee.rs.beanparam.form.plain.JAXRSClient#formParamEntityWithEncodedTest_from_standalone
    com.sun.ts.tests.jaxrs.ee.rs.beanparam.form.plain.JAXRSClient#formFieldParamEntityWithEncodedTest_from_standalone
---
 .../org/apache/cxf/jaxrs/utils/JAXRSUtils.java     | 29 +++++++++++-----------
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/tomee/apache-tomee/src/patch/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java b/tomee/apache-tomee/src/patch/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
index 585711d..2551d19 100644
--- a/tomee/apache-tomee/src/patch/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
+++ b/tomee/apache-tomee/src/patch/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
@@ -1025,13 +1025,14 @@ public final class JAXRSUtils {
         MessageContext mc = new MessageContextImpl(m);
         MediaType mt = mc.getHttpHeaders().getMediaType();
 
+        final String entry = decode ? FormUtils.FORM_PARAM_MAP : FormUtils.FORM_PARAM_MAP + ".encoded";
         @SuppressWarnings("unchecked")
         MultivaluedMap<String, String> params =
-            (MultivaluedMap<String, String>)m.get(FormUtils.FORM_PARAM_MAP);
+            (MultivaluedMap<String, String>)m.get(entry);
 
         if (params == null) {
             params = new MetadataMap<>();
-            m.put(FormUtils.FORM_PARAM_MAP, params);
+            m.put(entry, params);
 
             if (mt == null || mt.isCompatible(MediaType.APPLICATION_FORM_URLENCODED_TYPE)) {
                 InputStream entityStream = copyAndGetEntityStream(m);
@@ -1895,16 +1896,16 @@ public final class JAXRSUtils {
         LOG.severe(errorMessage);
         return errorMessage;
     }
-    
+
     /**
-     * Get path URI template, combining base path, class & method & subresource templates 
+     * Get path URI template, combining base path, class & method & subresource templates
      * @param message message instance
      * @param cri class resource info
      * @param ori operation resource info
      * @param subOri operation subresource info
      * @return the URI template for the method in question
      */
-    public static String getUriTemplate(Message message, ClassResourceInfo cri, OperationResourceInfo ori, 
+    public static String getUriTemplate(Message message, ClassResourceInfo cri, OperationResourceInfo ori,
             OperationResourceInfo subOri) {
         final String template = getUriTemplate(message, cri, ori);
         final String methodPathTemplate = getUriTemplate(subOri);
@@ -1912,7 +1913,7 @@ public final class JAXRSUtils {
     }
 
     /**
-     * Get path URI template, combining base path, class & method templates 
+     * Get path URI template, combining base path, class & method templates
      * @param message message instance
      * @param cri class resource info
      * @param ori operation resource info
@@ -1931,14 +1932,14 @@ public final class JAXRSUtils {
         } else if (!template.startsWith("/")) {
             template = "/" + template;
         }
-        
+
         template = combineUriTemplates(template, classPathTemplate);
         return combineUriTemplates(template, methodPathTemplate);
     }
-    
+
     /**
      * Gets the URI template of the operation from its resource info
-     * to assemble final URI template 
+     * to assemble final URI template
      * @param ori operation resource info
      * @return URI template
      */
@@ -1950,10 +1951,10 @@ public final class JAXRSUtils {
             return null;
         }
     }
-    
+
     /**
      * Goes over sub-resource class resource templates (through parent chain) if necessary
-     * to assemble final URI template 
+     * to assemble final URI template
      * @param cri root or subresource class resource info
      * @return URI template chain
      */
@@ -1967,7 +1968,7 @@ public final class JAXRSUtils {
             return null; /* should not happen */
         }
     }
-    
+
     /**
      * Combines two URI templates together
      * @param parent parent URI template
@@ -1981,7 +1982,7 @@ public final class JAXRSUtils {
 
         // The way URI templates are normalized in org.apache.cxf.jaxrs.model.URITemplate:
         //  - empty or null become "/"
-        //  - "/" is added at the start if not present 
+        //  - "/" is added at the start if not present
         if ("/".equals(parent)) {
             return child;
         } else if ("/".equals(child)) {
@@ -1996,7 +1997,7 @@ public final class JAXRSUtils {
 
     // copy the input stream so that it is not inadvertently closed
     private static InputStream copyAndGetEntityStream(Message m) {
-        LoadingByteArrayOutputStream baos = new LoadingByteArrayOutputStream(); 
+        LoadingByteArrayOutputStream baos = new LoadingByteArrayOutputStream();
         try (InputStream in = m.getContent(InputStream.class)) {
             IOUtils.copy(in, baos);
         } catch (IOException e) {