Quantcast

cxf git commit: [CXF-7365] Dropping a singlePartOnly restriction, and instead optionally bufferring the payload on the receiving end per the initial feedback

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

cxf git commit: [CXF-7365] Dropping a singlePartOnly restriction, and instead optionally bufferring the payload on the receiving end per the initial feedback

sergeyb
Repository: cxf
Updated Branches:
  refs/heads/master 374636386 -> 033b50643


[CXF-7365] Dropping a singlePartOnly restriction, and instead optionally bufferring the payload on the receiving end per the initial feedback


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/033b5064
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/033b5064
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/033b5064

Branch: refs/heads/master
Commit: 033b506439a81cd7a892c46fa62d28dc08f76539
Parents: 3746363
Author: Sergey Beryozkin <[hidden email]>
Authored: Mon May 15 12:06:06 2017 +0100
Committer: Sergey Beryozkin <[hidden email]>
Committed: Mon May 15 12:06:06 2017 +0100

----------------------------------------------------------------------
 .../AbstractJwsMultipartSignatureFilter.java    | 10 ---
 .../AbstractJwsMultipartVerificationFilter.java | 14 ++--
 .../JwsMultipartSignatureInFilter.java          | 24 +++++--
 .../systest/jaxrs/security/jose/BookStore.java  |  9 +++
 .../jose/jwejws/JAXRSJwsMultipartTest.java      | 74 +++++++++-----------
 .../security/jose/jwejws/serverMultipart.xml    | 33 +++++----
 6 files changed, 88 insertions(+), 76 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/033b5064/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/multipart/AbstractJwsMultipartSignatureFilter.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/multipart/AbstractJwsMultipartSignatureFilter.java b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/multipart/AbstractJwsMultipartSignatureFilter.java
index 971e6ea..2e66ae5 100644
--- a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/multipart/AbstractJwsMultipartSignatureFilter.java
+++ b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/multipart/AbstractJwsMultipartSignatureFilter.java
@@ -21,8 +21,6 @@ package org.apache.cxf.rs.security.jose.jaxrs.multipart;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.ws.rs.ProcessingException;
-
 import org.apache.cxf.common.util.Base64UrlUtility;
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.helpers.CastUtils;
@@ -41,7 +39,6 @@ public abstract class AbstractJwsMultipartSignatureFilter {
     private JsonMapObjectReaderWriter writer = new JsonMapObjectReaderWriter();
     
     private JwsSignatureProvider sigProvider;
-    private boolean supportSinglePartOnly = true;
     private boolean useJwsJsonSignatureFormat;
 
     public void setSignatureProvider(JwsSignatureProvider signatureProvider) {
@@ -62,9 +59,6 @@ public abstract class AbstractJwsMultipartSignatureFilter {
                 parts.add(rootEntity);
             }
         }
-        if (supportSinglePartOnly && parts.size() > 1) {
-            throw new ProcessingException("Single part only is supported");
-        }
         
         JwsHeaders headers = new JwsHeaders();
         headers.setPayloadEncodingStatus(false);
@@ -88,10 +82,6 @@ public abstract class AbstractJwsMultipartSignatureFilter {
         return parts;
     }
 
-    public void setSupportSinglePartOnly(boolean supportSinglePartOnly) {
-        this.supportSinglePartOnly = supportSinglePartOnly;
-    }
-
     public void setUseJwsJsonSignatureFormat(boolean useJwsJsonSignatureFormat) {
         this.useJwsJsonSignatureFormat = useJwsJsonSignatureFormat;
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/033b5064/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/multipart/AbstractJwsMultipartVerificationFilter.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/multipart/AbstractJwsMultipartVerificationFilter.java b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/multipart/AbstractJwsMultipartVerificationFilter.java
index 126cd8f..7a404c5 100644
--- a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/multipart/AbstractJwsMultipartVerificationFilter.java
+++ b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/multipart/AbstractJwsMultipartVerificationFilter.java
@@ -29,22 +29,18 @@ import org.apache.cxf.rs.security.jose.jws.JwsSignatureVerifier;
 public abstract class AbstractJwsMultipartVerificationFilter {
     
     private JwsSignatureVerifier sigVerifier;
-    private boolean supportSinglePartOnly = true;
     private boolean useJwsJsonSignatureFormat;
-    
+    private boolean bufferPayload;
     public void setSigVerifier(JwsSignatureVerifier sigVerifier) {
         this.sigVerifier = sigVerifier;
     }
-    public void setSupportSinglePartOnly(boolean supportSinglePartOnly) {
-        this.supportSinglePartOnly = supportSinglePartOnly;
-    }
-
+    
     protected void addMultipartFilterIfNeeded(MediaType contentType) {
         if (contentType != null && contentType.getType().equals("multipart")) {
             Message m = JAXRSUtils.getCurrentMessage();
             MultipartInputFilter jwsFilter = new JwsMultipartSignatureInFilter(m,
                                                     sigVerifier,
-                                                    supportSinglePartOnly,
+                                                    bufferPayload,
                                                     useJwsJsonSignatureFormat);
             AttachmentUtils.addMultipartInFilter(jwsFilter);
         }
@@ -54,4 +50,8 @@ public abstract class AbstractJwsMultipartVerificationFilter {
     public void setUseJwsJsonSignatureFormat(boolean useJwsJsonSignatureFormat) {
         this.useJwsJsonSignatureFormat = useJwsJsonSignatureFormat;
     }
+
+    public void setBufferPayload(boolean bufferPayload) {
+        this.bufferPayload = bufferPayload;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/033b5064/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/multipart/JwsMultipartSignatureInFilter.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/multipart/JwsMultipartSignatureInFilter.java b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/multipart/JwsMultipartSignatureInFilter.java
index 697553e..e0a306d 100644
--- a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/multipart/JwsMultipartSignatureInFilter.java
+++ b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/multipart/JwsMultipartSignatureInFilter.java
@@ -26,6 +26,7 @@ import java.util.Properties;
 
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.helpers.IOUtils;
+import org.apache.cxf.io.CachedOutputStream;
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.apache.cxf.jaxrs.ext.multipart.MultipartInputFilter;
 import org.apache.cxf.jaxrs.json.basic.JsonMapObjectReaderWriter;
@@ -43,22 +44,22 @@ import org.apache.cxf.rs.security.jose.jws.JwsVerificationSignature;
 public class JwsMultipartSignatureInFilter implements MultipartInputFilter {
     private JsonMapObjectReaderWriter reader = new JsonMapObjectReaderWriter();
     private JwsSignatureVerifier verifier;
-    private boolean supportSinglePartOnly;
+    private boolean bufferPayload;
     private Message message;
     private boolean useJwsJsonSignatureFormat;
     public JwsMultipartSignatureInFilter(Message message,
                                          JwsSignatureVerifier verifier,
-                                         boolean supportSinglePartOnly,
+                                         boolean bufferPayload,
                                          boolean useJwsJsonSignatureFormat) {
         this.message = message;
         this.verifier = verifier;
-        this.supportSinglePartOnly = supportSinglePartOnly;
+        this.bufferPayload = bufferPayload;
         this.useJwsJsonSignatureFormat = useJwsJsonSignatureFormat;
     }
     
     @Override
     public void filter(List<Attachment> atts) {
-        if (atts.size() < 2 || supportSinglePartOnly && atts.size() > 2) {
+        if (atts.size() < 2) {
             throw ExceptionUtils.toBadRequestException(null, null);
         }
         Attachment sigPart = atts.remove(atts.size() - 1);
@@ -128,7 +129,20 @@ public class JwsMultipartSignatureInFilter implements MultipartInputFilter {
             }
             boolean verifyOnLastRead = i == attSize - 1 ? true : false;
             JwsInputStream jwsStream = new JwsInputStream(dataPartStream, sig, signatureBytes, verifyOnLastRead);
-            Attachment newDataPart = new Attachment(jwsStream, dataPart.getHeaders());
+            
+            InputStream newStream = null;
+            if (bufferPayload) {
+                CachedOutputStream cos = new CachedOutputStream();
+                try {
+                    IOUtils.copy(jwsStream, cos);
+                    newStream = cos.getInputStream();
+                } catch (Exception ex) {
+                    throw ExceptionUtils.toBadRequestException(ex, null);
+                }
+            } else {
+                newStream = jwsStream;
+            }
+            Attachment newDataPart = new Attachment(newStream, dataPart.getHeaders());
             atts.add(i, newDataPart);
         }
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/033b5064/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/jose/BookStore.java
----------------------------------------------------------------------
diff --git a/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/jose/BookStore.java b/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/jose/BookStore.java
index cc5fcdc..0e039cd 100644
--- a/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/jose/BookStore.java
+++ b/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/jose/BookStore.java
@@ -23,6 +23,7 @@ package org.apache.cxf.systest.jaxrs.security.jose;
 import java.util.List;
 
 import javax.ws.rs.Consumes;
+import javax.ws.rs.InternalServerErrorException;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
@@ -69,6 +70,14 @@ public class BookStore {
         return book;
     }
     @POST
+    @Path("/books")
+    @Produces("multipart/related")
+    @Consumes("multipart/related")
+    @Multipart(type = "application/xml")
+    public Book echoBookMultipartModified(@Multipart(type = "application/xml") Book book) {
+        throw new InternalServerErrorException("Failure to detect the payload has been modified");
+    }
+    @POST
     @Path("/booksList")
     @Produces("multipart/related")
     @Consumes("multipart/related")

http://git-wip-us.apache.org/repos/asf/cxf/blob/033b5064/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/jose/jwejws/JAXRSJwsMultipartTest.java
----------------------------------------------------------------------
diff --git a/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/jose/jwejws/JAXRSJwsMultipartTest.java b/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/jose/jwejws/JAXRSJwsMultipartTest.java
index ec7ffbc..b874d10 100644
--- a/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/jose/jwejws/JAXRSJwsMultipartTest.java
+++ b/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/jose/jwejws/JAXRSJwsMultipartTest.java
@@ -25,8 +25,6 @@ import java.util.LinkedList;
 import java.util.List;
 
 import javax.ws.rs.BadRequestException;
-import javax.ws.rs.ProcessingException;
-import javax.ws.rs.WebApplicationException;
 
 import org.apache.cxf.Bus;
 import org.apache.cxf.bus.spring.SpringBusFactory;
@@ -64,7 +62,16 @@ public class JAXRSJwsMultipartTest extends AbstractBusClientServerTestBase {
         
     @Test
     public void testJwsJwkBookHMacMultipart() throws Exception {
-        String address = "https://localhost:" + PORT + "/jwsjwkhmacSinglePart";
+        String address = "https://localhost:" + PORT + "/jwsjwkhmac";
+        BookStore bs = createJwsBookStoreHMac(address, false, false);
+        Book book = bs.echoBookMultipart(new Book("book", 123L));
+        assertEquals("book", book.getName());
+        assertEquals(123L, book.getId());
+    }
+    
+    @Test
+    public void testJwsJwkBookHMacMultipartBuffered() throws Exception {
+        String address = "https://localhost:" + PORT + "/jwsjwkhmac";
         BookStore bs = createJwsBookStoreHMac(address, true, false);
         Book book = bs.echoBookMultipart(new Book("book", 123L));
         assertEquals("book", book.getName());
@@ -73,8 +80,8 @@ public class JAXRSJwsMultipartTest extends AbstractBusClientServerTestBase {
     
     @Test
     public void testJwsJwkBookHMacMultipartJwsJson() throws Exception {
-        String address = "https://localhost:" + PORT + "/jwsjwkhmacSinglePartJwsJson";
-        BookStore bs = createJwsBookStoreHMac(address, true, true);
+        String address = "https://localhost:" + PORT + "/jwsjwkhmacJwsJson";
+        BookStore bs = createJwsBookStoreHMac(address, false, true);
         Book book = bs.echoBookMultipart(new Book("book", 123L));
         assertEquals("book", book.getName());
         assertEquals(123L, book.getId());
@@ -82,8 +89,8 @@ public class JAXRSJwsMultipartTest extends AbstractBusClientServerTestBase {
     
     @Test
     public void testJwsJwkBookRSAMultipart() throws Exception {
-        String address = "https://localhost:" + PORT + "/jwsjwkrsaSinglePart";
-        BookStore bs = createJwsBookStoreRSA(address, true);
+        String address = "https://localhost:" + PORT + "/jwsjwkrsa";
+        BookStore bs = createJwsBookStoreRSA(address);
         Book book = bs.echoBookMultipart(new Book("book", 123L));
         assertEquals("book", book.getName());
         assertEquals(123L, book.getId());
@@ -91,7 +98,7 @@ public class JAXRSJwsMultipartTest extends AbstractBusClientServerTestBase {
     
     @Test
     public void testJwsJwkBooksHMacMultipart() throws Exception {
-        String address = "https://localhost:" + PORT + "/jwsjwkhmacManyParts";
+        String address = "https://localhost:" + PORT + "/jwsjwkhmac";
         BookStore bs = createJwsBookStoreHMac(address, false, false);
         List<Book> books = new LinkedList<Book>();
         books.add(new Book("book", 123L));
@@ -102,60 +109,44 @@ public class JAXRSJwsMultipartTest extends AbstractBusClientServerTestBase {
         assertEquals("book2", returnBooks.get(1).getName());
         assertEquals(124L, returnBooks.get(1).getId());
     }
-    @Test(expected = ProcessingException.class)
-    public void testJwsJwkBooksHMacMultipartClientRestriction() throws Exception {
-        String address = "https://localhost:" + PORT + "/jwsjwkhmacManyParts";
-        BookStore bs = createJwsBookStoreHMac(address, true, false);
-        List<Book> books = new LinkedList<Book>();
-        books.add(new Book("book", 123L));
-        books.add(new Book("book2", 124L));
-        bs.echoBooksMultipart(books);
-    }
-    @Test(expected = BadRequestException.class)
-    public void testJwsJwkBooksHMacMultipartServerRestriction() throws Exception {
-        String address = "https://localhost:" + PORT + "/jwsjwkhmacSinglePart";
-        BookStore bs = createJwsBookStoreHMac(address, false, false);
-        List<Book> books = new LinkedList<Book>();
-        books.add(new Book("book", 123L));
-        books.add(new Book("book2", 124L));
-        bs.echoBooksMultipart(books);
-    }
     
     @Test(expected = BadRequestException.class)
     public void testJwsJwkBooksHMacMultipartUnsigned() throws Exception {
-        String address = "https://localhost:" + PORT + "/jwsjwkhmacSinglePart";
+        String address = "https://localhost:" + PORT + "/jwsjwkhmac";
         BookStore bs = JAXRSClientFactory.create(address, BookStore.class,
                             JAXRSJwsMultipartTest.class.getResource("client.xml").toString());
         bs.echoBookMultipart(new Book("book", 123L));
     }
-    @Test
+    @Test(expected = BadRequestException.class)
     public void testJwsJwkBookHMacMultipartModified() throws Exception {
-        String address = "https://localhost:" + PORT + "/jwsjwkhmacSinglePartModified";
+        String address = "https://localhost:" + PORT + "/jwsjwkhmacModified";
+        BookStore bs = createJwsBookStoreHMac(address, false, false);
+        bs.echoBookMultipartModified(new Book("book", 123L));
+    }
+    @Test(expected = BadRequestException.class)
+    public void testJwsJwkBookHMacMultipartModifiedBufferPayload() throws Exception {
+        String address = "https://localhost:" + PORT + "/jwsjwkhmacModifiedBufferPayload";
         BookStore bs = createJwsBookStoreHMac(address, true, false);
-        try {
-            bs.echoBookMultipart(new Book("book", 123L));
-            fail("Exception is expected");
-        } catch (WebApplicationException ex) {
-            // expected
-        }
+        bs.echoBookMultipartModified(new Book("book", 123L));
     }
+    
     private BookStore createJwsBookStoreHMac(String address,
-                                             boolean supportSinglePart,
+                                             boolean bufferPayload,
                                              boolean useJwsJsonSignatureFormat) throws Exception {
-        JAXRSClientFactoryBean bean = createJAXRSClientFactoryBean(address, supportSinglePart,
+        JAXRSClientFactoryBean bean = createJAXRSClientFactoryBean(address, bufferPayload,
                                                                    useJwsJsonSignatureFormat);
         bean.getProperties(true).put("rs.security.signature.properties",
             "org/apache/cxf/systest/jaxrs/security/secret.jwk.properties");
         return bean.create(BookStore.class);
     }
-    private BookStore createJwsBookStoreRSA(String address, boolean supportSinglePart) throws Exception {
-        JAXRSClientFactoryBean bean = createJAXRSClientFactoryBean(address, supportSinglePart, false);
+    private BookStore createJwsBookStoreRSA(String address) throws Exception {
+        JAXRSClientFactoryBean bean = createJAXRSClientFactoryBean(address, false, false);
         bean.getProperties(true).put("rs.security.signature.properties",
             "org/apache/cxf/systest/jaxrs/security/alice.jwk.properties");
         return bean.create(BookStore.class);
     }
     private JAXRSClientFactoryBean createJAXRSClientFactoryBean(String address,
-                                                                boolean supportSinglePart,
+                                                                boolean bufferPayload,
                                                                 boolean useJwsJsonSignatureFormat) throws Exception {
         JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean();
         SpringBusFactory bf = new SpringBusFactory();
@@ -166,11 +157,10 @@ public class JAXRSJwsMultipartTest extends AbstractBusClientServerTestBase {
         bean.setAddress(address);
         List<Object> providers = new LinkedList<Object>();
         JwsMultipartClientRequestFilter outFilter = new JwsMultipartClientRequestFilter();
-        outFilter.setSupportSinglePartOnly(supportSinglePart);
         outFilter.setUseJwsJsonSignatureFormat(useJwsJsonSignatureFormat);
         providers.add(outFilter);
         JwsMultipartClientResponseFilter inFilter = new JwsMultipartClientResponseFilter();
-        inFilter.setSupportSinglePartOnly(supportSinglePart);
+        inFilter.setBufferPayload(bufferPayload);
         providers.add(inFilter);
         providers.add(new JwsDetachedSignatureProvider());
         bean.setProviders(providers);

http://git-wip-us.apache.org/repos/asf/cxf/blob/033b5064/systests/rs-security/src/test/resources/org/apache/cxf/systest/jaxrs/security/jose/jwejws/serverMultipart.xml
----------------------------------------------------------------------
diff --git a/systests/rs-security/src/test/resources/org/apache/cxf/systest/jaxrs/security/jose/jwejws/serverMultipart.xml b/systests/rs-security/src/test/resources/org/apache/cxf/systest/jaxrs/security/jose/jwejws/serverMultipart.xml
index 77291bf..53883d6 100644
--- a/systests/rs-security/src/test/resources/org/apache/cxf/systest/jaxrs/security/jose/jwejws/serverMultipart.xml
+++ b/systests/rs-security/src/test/resources/org/apache/cxf/systest/jaxrs/security/jose/jwejws/serverMultipart.xml
@@ -46,14 +46,11 @@ under the License.
     <bean id="jwsOutMultipartFilter" class="org.apache.cxf.rs.security.jose.jaxrs.multipart.JwsMultipartContainerResponseFilter"/>
     <bean id="jwsDetachedSignatureWriter" class="org.apache.cxf.rs.security.jose.jaxrs.JwsDetachedSignatureProvider"/>
     <bean id="jwsInMultipartModificationFilter" class="org.apache.cxf.systest.jaxrs.security.jose.jwejws.MultipartModificationFilter"/>
-    <bean id="jwsInMultipartFilterManyParts" class="org.apache.cxf.rs.security.jose.jaxrs.multipart.JwsMultipartContainerRequestFilter">
-        <property name="supportSinglePartOnly" value="false"/>
-    </bean>
-    <bean id="jwsOutMultipartFilterManyParts" class="org.apache.cxf.rs.security.jose.jaxrs.multipart.JwsMultipartContainerResponseFilter">
-        <property name="supportSinglePartOnly" value="false"/>
+    <bean id="jwsInMultipartFilterBufferPayload" class="org.apache.cxf.rs.security.jose.jaxrs.multipart.JwsMultipartContainerRequestFilter">
+        <property name="bufferPayload" value="true"/>
     </bean>
     
-    <jaxrs:server address="<a href="https://localhost:$">https://localhost:${testutil.ports.jaxrs-jws-multipart}/jwsjwkhmacSinglePart">
+    <jaxrs:server address="<a href="https://localhost:$">https://localhost:${testutil.ports.jaxrs-jws-multipart}/jwsjwkhmac">
         <jaxrs:serviceBeans>
             <ref bean="serviceBean"/>
         </jaxrs:serviceBeans>
@@ -66,7 +63,7 @@ under the License.
             <entry key="rs.security.signature.properties" value="org/apache/cxf/systest/jaxrs/security/secret.jwk.properties"/>
         </jaxrs:properties>
     </jaxrs:server>
-    <jaxrs:server address="<a href="https://localhost:$">https://localhost:${testutil.ports.jaxrs-jws-multipart}/jwsjwkhmacSinglePartJwsJson">
+    <jaxrs:server address="<a href="https://localhost:$">https://localhost:${testutil.ports.jaxrs-jws-multipart}/jwsjwkhmacJwsJson">
         <jaxrs:serviceBeans>
             <ref bean="serviceBean"/>
         </jaxrs:serviceBeans>
@@ -79,7 +76,7 @@ under the License.
             <entry key="rs.security.signature.properties" value="org/apache/cxf/systest/jaxrs/security/secret.jwk.properties"/>
         </jaxrs:properties>
     </jaxrs:server>
-    <jaxrs:server address="<a href="https://localhost:$">https://localhost:${testutil.ports.jaxrs-jws-multipart}/jwsjwkrsaSinglePart">
+    <jaxrs:server address="<a href="https://localhost:$">https://localhost:${testutil.ports.jaxrs-jws-multipart}/jwsjwkrsa">
         <jaxrs:serviceBeans>
             <ref bean="serviceBean"/>
         </jaxrs:serviceBeans>
@@ -92,7 +89,7 @@ under the License.
             <entry key="rs.security.signature.properties" value="org/apache/cxf/systest/jaxrs/security/alice.jwk.properties"/>
         </jaxrs:properties>
     </jaxrs:server>
-    <jaxrs:server address="<a href="https://localhost:$">https://localhost:${testutil.ports.jaxrs-jws-multipart}/jwsjwkhmacSinglePartModified">
+    <jaxrs:server address="<a href="https://localhost:$">https://localhost:${testutil.ports.jaxrs-jws-multipart}/jwsjwkhmacModified">
         <jaxrs:serviceBeans>
             <ref bean="serviceBean"/>
         </jaxrs:serviceBeans>
@@ -104,13 +101,25 @@ under the License.
             <entry key="rs.security.signature.properties" value="org/apache/cxf/systest/jaxrs/security/secret.jwk.properties"/>
         </jaxrs:properties>
     </jaxrs:server>
-    <jaxrs:server address="<a href="https://localhost:$">https://localhost:${testutil.ports.jaxrs-jws-multipart}/jwsjwkhmacManyParts">
+    <jaxrs:server address="<a href="https://localhost:$">https://localhost:${testutil.ports.jaxrs-jws-multipart}/jwsjwkhmacModifiedBufferPayload">
+        <jaxrs:serviceBeans>
+            <ref bean="serviceBean"/>
+        </jaxrs:serviceBeans>
+        <jaxrs:providers>
+            <ref bean="jwsInMultipartModificationFilter"/>
+            <ref bean="jwsInMultipartFilterBufferPayload"/>
+        </jaxrs:providers>
+        <jaxrs:properties>
+            <entry key="rs.security.signature.properties" value="org/apache/cxf/systest/jaxrs/security/secret.jwk.properties"/>
+        </jaxrs:properties>
+    </jaxrs:server>
+    <jaxrs:server address="<a href="https://localhost:$">https://localhost:${testutil.ports.jaxrs-jws-multipart}/jwsjwkhmacBufferPayload">
         <jaxrs:serviceBeans>
             <ref bean="serviceBean"/>
         </jaxrs:serviceBeans>
         <jaxrs:providers>
-            <ref bean="jwsInMultipartFilterManyParts"/>
-            <ref bean="jwsOutMultipartFilterManyParts"/>
+            <ref bean="jwsInMultipartFilterBufferPayload"/>
+            <ref bean="jwsOutMultipartFilter"/>
             <ref bean="jwsDetachedSignatureWriter"/>
         </jaxrs:providers>
         <jaxrs:properties>

Loading...