@Override public Object merge(@Nullable Object parent) { if (parent instanceof RequestBuilder) { if (parent instanceof MockHttpServletRequestBuilder) { MockHttpServletRequestBuilder copiedParent = MockMvcRequestBuilders.get("/"); copiedParent.merge(parent); this.parentBuilder = copiedParent; } else { this.parentBuilder = (RequestBuilder) parent; } if (parent instanceof SmartRequestBuilder) { this.parentPostProcessor = (SmartRequestBuilder) parent; } } return this; }
@Override public Object merge(@Nullable Object parent) { if (parent == null) { return this; } if (parent instanceof MockHttpServletRequestBuilder) { super.merge(parent); if (parent instanceof MockMultipartHttpServletRequestBuilder) { MockMultipartHttpServletRequestBuilder parentBuilder = (MockMultipartHttpServletRequestBuilder) parent; this.files.addAll(parentBuilder.files); parentBuilder.parts.keySet().stream().forEach(name -> this.parts.putIfAbsent(name, parentBuilder.parts.get(name))); } } else { throw new IllegalArgumentException("Cannot merge with [" + parent.getClass().getName() + "]"); } return this; }
@Test // SPR-12945 public void mergeInvokesDefaultRequestPostProcessorFirst() { final String ATTR = "ATTR"; final String EXPECTED = "override"; MockHttpServletRequestBuilder defaultBuilder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/foo/bar") .with(requestAttr(ATTR).value("default")) .with(requestAttr(ATTR).value(EXPECTED)); builder.merge(defaultBuilder); MockHttpServletRequest request = builder.buildRequest(servletContext); request = builder.postProcessRequest(request); assertEquals(EXPECTED, request.getAttribute(ATTR)); }
@Override public Object merge(Object parent) { if (parent == null) { return this; } if (parent instanceof MockHttpServletRequestBuilder) { super.merge(parent); if (parent instanceof MockMultipartHttpServletRequestBuilder) { MockMultipartHttpServletRequestBuilder parentBuilder = (MockMultipartHttpServletRequestBuilder) parent; this.files.addAll(parentBuilder.files); } } else { throw new IllegalArgumentException("Cannot merge with [" + parent.getClass().getName() + "]"); } return this; }
@Override public Object merge(Object parent) { if (parent instanceof RequestBuilder) { if (parent instanceof MockHttpServletRequestBuilder) { MockHttpServletRequestBuilder copiedParent = MockMvcRequestBuilders.get("/"); copiedParent.merge(parent); this.parentBuilder = copiedParent; } else { this.parentBuilder = (RequestBuilder) parent; } if (parent instanceof SmartRequestBuilder) { this.parentPostProcessor = (SmartRequestBuilder) parent; } } return this; }
@Override public Object merge(@Nullable Object parent) { if (parent instanceof RequestBuilder) { if (parent instanceof MockHttpServletRequestBuilder) { MockHttpServletRequestBuilder copiedParent = MockMvcRequestBuilders.get("/"); copiedParent.merge(parent); this.parentBuilder = copiedParent; } else { this.parentBuilder = (RequestBuilder) parent; } if (parent instanceof SmartRequestBuilder) { this.parentPostProcessor = (SmartRequestBuilder) parent; } } return this; }
@Override public Object merge(@Nullable Object parent) { if (parent == null) { return this; } if (parent instanceof MockHttpServletRequestBuilder) { super.merge(parent); if (parent instanceof MockMultipartHttpServletRequestBuilder) { MockMultipartHttpServletRequestBuilder parentBuilder = (MockMultipartHttpServletRequestBuilder) parent; this.files.addAll(parentBuilder.files); parentBuilder.parts.keySet().stream().forEach(name -> this.parts.putIfAbsent(name, parentBuilder.parts.get(name))); } } else { throw new IllegalArgumentException("Cannot merge with [" + parent.getClass().getName() + "]"); } return this; }