use of org.apache.cxf.jaxrs.impl.MetadataMap in project cxf by apache.
the class JAXRSMultipartTest method testAddBookJaxbJsonImageWebClientRelated2.
@Test
public void testAddBookJaxbJsonImageWebClientRelated2() throws Exception {
String address = "http://localhost:" + PORT + "/bookstore/books/jaxbimagejson";
WebClient client = WebClient.create(address);
WebClient.getConfig(client).getOutInterceptors().add(new LoggingOutInterceptor());
WebClient.getConfig(client).getInInterceptors().add(new LoggingInInterceptor());
client.type("multipart/mixed").accept("multipart/mixed");
Book jaxb = new Book("jaxb", 1L);
Book json = new Book("json", 2L);
InputStream is1 = getClass().getResourceAsStream("/org/apache/cxf/systest/jaxrs/resources/java.jpg");
Map<String, Object> objects = new LinkedHashMap<String, Object>();
MultivaluedMap<String, String> headers = new MetadataMap<String, String>();
headers.putSingle("Content-Type", "application/xml");
headers.putSingle("Content-ID", "theroot");
headers.putSingle("Content-Transfer-Encoding", "customxml");
Attachment attJaxb = new Attachment(headers, jaxb);
headers = new MetadataMap<String, String>();
headers.putSingle("Content-Type", "application/json");
headers.putSingle("Content-ID", "thejson");
headers.putSingle("Content-Transfer-Encoding", "customjson");
Attachment attJson = new Attachment(headers, json);
headers = new MetadataMap<String, String>();
headers.putSingle("Content-Type", "application/octet-stream");
headers.putSingle("Content-ID", "theimage");
headers.putSingle("Content-Transfer-Encoding", "customstream");
Attachment attIs = new Attachment(headers, is1);
objects.put(MediaType.APPLICATION_XML, attJaxb);
objects.put(MediaType.APPLICATION_JSON, attJson);
objects.put(MediaType.APPLICATION_OCTET_STREAM, attIs);
Collection<? extends Attachment> coll = client.postAndGetCollection(objects, Attachment.class);
List<Attachment> result = new ArrayList<>(coll);
Book jaxb2 = readBookFromInputStream(result.get(0).getDataHandler().getInputStream());
assertEquals("jaxb", jaxb2.getName());
assertEquals(1L, jaxb2.getId());
Book json2 = readJSONBookFromInputStream(result.get(1).getDataHandler().getInputStream());
assertEquals("json", json2.getName());
assertEquals(2L, json2.getId());
InputStream is2 = result.get(2).getDataHandler().getInputStream();
byte[] image1 = IOUtils.readBytesFromStream(getClass().getResourceAsStream("/org/apache/cxf/systest/jaxrs/resources/java.jpg"));
byte[] image2 = IOUtils.readBytesFromStream(is2);
assertTrue(Arrays.equals(image1, image2));
}
use of org.apache.cxf.jaxrs.impl.MetadataMap in project cxf by apache.
the class JAXRSMultipartTest method testAddBookJsonImageStream.
@Test
public void testAddBookJsonImageStream() throws Exception {
String address = "http://localhost:" + PORT + "/bookstore/books/jsonimagestream";
WebClient client = WebClient.create(address);
WebClient.getConfig(client).getOutInterceptors().add(new LoggingOutInterceptor());
WebClient.getConfig(client).getInInterceptors().add(new LoggingInInterceptor());
client.type("multipart/mixed").accept("multipart/mixed");
Book json = new Book("json", 1L);
InputStream is1 = getClass().getResourceAsStream("/org/apache/cxf/systest/jaxrs/resources/java.jpg");
Map<String, Object> objects = new LinkedHashMap<String, Object>();
MultivaluedMap<String, String> headers = new MetadataMap<String, String>();
headers = new MetadataMap<String, String>();
headers.putSingle("Content-Type", "application/json");
headers.putSingle("Content-ID", "thejson");
headers.putSingle("Content-Transfer-Encoding", "customjson");
Attachment attJson = new Attachment(headers, json);
headers = new MetadataMap<String, String>();
headers.putSingle("Content-Type", "application/octet-stream");
headers.putSingle("Content-ID", "theimage");
headers.putSingle("Content-Transfer-Encoding", "customstream");
Attachment attIs = new Attachment(headers, is1);
objects.put(MediaType.APPLICATION_JSON, attJson);
objects.put(MediaType.APPLICATION_OCTET_STREAM, attIs);
Collection<? extends Attachment> coll = client.postAndGetCollection(objects, Attachment.class);
List<Attachment> result = new ArrayList<>(coll);
assertEquals(2, result.size());
Book json2 = readJSONBookFromInputStream(result.get(0).getDataHandler().getInputStream());
assertEquals("json", json2.getName());
assertEquals(1L, json2.getId());
InputStream is2 = result.get(1).getDataHandler().getInputStream();
byte[] image1 = IOUtils.readBytesFromStream(getClass().getResourceAsStream("/org/apache/cxf/systest/jaxrs/resources/java.jpg"));
byte[] image2 = IOUtils.readBytesFromStream(is2);
assertTrue(Arrays.equals(image1, image2));
}
use of org.apache.cxf.jaxrs.impl.MetadataMap in project cxf by apache.
the class JAXRSSoapBookTest method testGetBookWebClientForm.
@Test
public void testGetBookWebClientForm() throws Exception {
String baseAddress = "http://localhost:" + PORT + "/test/services/rest/bookstore/books/679/subresource3";
WebClient wc = WebClient.create(baseAddress);
MultivaluedMap<String, Object> map = new MetadataMap<String, Object>();
map.putSingle("id", "679");
map.add("name", "CXF in Action - ");
map.add("name", "679");
Book b = readBook((InputStream) wc.accept("application/xml").form(map).getEntity());
assertEquals(679, b.getId());
assertEquals("CXF in Action - 679", b.getName());
}
use of org.apache.cxf.jaxrs.impl.MetadataMap in project cxf by apache.
the class ClientProxyImpl method handleForm.
private MultivaluedMap<String, String> handleForm(Method m, Object[] params, MultivaluedMap<ParameterType, Parameter> map, List<Parameter> beanParams) {
MultivaluedMap<String, String> form = new MetadataMap<String, String>();
List<Parameter> fm = getParameters(map, ParameterType.FORM);
for (Parameter p : fm) {
addFormValue(form, p.getName(), params[p.getIndex()], getParamAnnotations(m, p));
}
for (Parameter p : beanParams) {
Map<String, BeanPair> values = getValuesFromBeanParam(params[p.getIndex()], FormParam.class);
for (Map.Entry<String, BeanPair> entry : values.entrySet()) {
addFormValue(form, entry.getKey(), entry.getValue().getValue(), entry.getValue().getAnns());
}
}
return form;
}
use of org.apache.cxf.jaxrs.impl.MetadataMap in project cxf by apache.
the class ClientProxyImpl method getParametersInfo.
private static MultivaluedMap<ParameterType, Parameter> getParametersInfo(Method m, Object[] params, OperationResourceInfo ori) {
MultivaluedMap<ParameterType, Parameter> map = new MetadataMap<ParameterType, Parameter>();
List<Parameter> parameters = ori.getParameters();
if (parameters.isEmpty()) {
return map;
}
int requestBodyParam = 0;
int multipartParam = 0;
for (Parameter p : parameters) {
if (isIgnorableParameter(m, p)) {
continue;
}
if (p.getType() == ParameterType.REQUEST_BODY) {
requestBodyParam++;
if (getMultipart(ori, p.getIndex()) != null) {
multipartParam++;
}
}
map.add(p.getType(), p);
}
if (map.containsKey(ParameterType.REQUEST_BODY)) {
if (requestBodyParam > 1 && requestBodyParam != multipartParam) {
reportInvalidResourceMethod(ori.getMethodToInvoke(), "SINGLE_BODY_ONLY");
}
if (map.containsKey(ParameterType.FORM)) {
reportInvalidResourceMethod(ori.getMethodToInvoke(), "ONLY_FORM_ALLOWED");
}
}
return map;
}
Aggregations