private static List<Object> createProviders() { JAXBElementProvider provider = new JAXBElementProvider(); provider.setUnmarshallAsJaxbElement(true); provider.setMarshallAsJaxbElement(true); List<Object> providers = new ArrayList<Object>(); providers.add(provider); return providers; } }
@Override public boolean isWriteable(Class<?> type, Type genericType, Annotation[] anns, MediaType mt) { if (ui.getRequestUri().toString().endsWith("/test/5/bookstorestorage/thosebooks/123")) { for (Annotation ann : anns) { if (ann.annotationType() == SchemaValidation.class) { return super.isWriteable(type, genericType, anns, mt); } } throw new RuntimeException(); } return super.isWriteable(type, genericType, anns, mt); } @Override
@SuppressWarnings({ "rawtypes" }) protected JAXBElementProvider<?> defaultJAXBProvider() { JAXBElementProvider<?> defaultJAXBProvider = new JAXBElementProvider(); DocumentDepthProperties depthProperties = new DocumentDepthProperties(); depthProperties.setInnerElementCountThreshold(500); defaultJAXBProvider.setDepthProperties(depthProperties); Map<String, Object> marshallerProperties = new HashMap<>(); marshallerProperties.put(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); defaultJAXBProvider.setMarshallerProperties(marshallerProperties); Map<String, String> collectionWrapperMap = new HashMap<>(); collectionWrapperMap.put(PolicyTO.class.getName(), "policies"); defaultJAXBProvider.setCollectionWrapperMap(collectionWrapperMap); return defaultJAXBProvider; }
private static List<Object> defaultProviders() { final JAXBElementProvider jaxb = new JAXBElementProvider(); final Map<String, Object> jaxbProperties = new HashMap<String, Object>(); jaxbProperties.put(Marshaller.JAXB_FRAGMENT, true); jaxb.setMarshallerProperties(jaxbProperties); final List<Object> providers = new ArrayList<Object>(4); providers.add(jaxb); providers.add(new JSONProvider()); return providers; }
/** * * @return all internal providers */ private Iterable<? extends Object> getInternalProviders() { return Sets.<Object> newHashSet(new JSONProvider<Object>(), new JAXBElementProvider<Object>()); }
@Test public void testPostGetBookFastinfosetProxy() throws Exception { JAXBElementProvider<Object> p = new JAXBElementProvider<>(); p.setConsumeMediaTypes(Collections.singletonList("application/fastinfoset")); p.setProduceMediaTypes(Collections.singletonList("application/fastinfoset")); BookStoreJaxrsJaxws client = JAXRSClientFactory.create( "http://localhost:" + PORT + "/test/services/rest4", BookStoreSoapRestFastInfoset2.class, Collections.singletonList(p)); Book b = new Book("CXF", 1L); Book b2 = client.addFastinfoBook(b); assertEquals(b2.getName(), b.getName()); assertEquals(b2.getId(), b.getId()); checkFiInterceptors(WebClient.getConfig(client)); }
private <T> T readNode(Node node, Class<T> cls) { if (Node.class.isAssignableFrom(cls)) { return cls.cast(node); } DOMSource s = new DOMSource(node); if (Source.class == cls || DOMSource.class == cls) { return cls.cast(s); } try { JAXBElementProvider<?> provider = new JAXBElementProvider<Object>(); JAXBContext c = provider.getPackageContext(cls); if (c == null) { c = provider.getClassContext(cls); } Unmarshaller u = c.createUnmarshaller(); if (cls.getAnnotation(XmlRootElement.class) != null) { return cls.cast(u.unmarshal(s)); } else { return u.unmarshal(s, cls).getValue(); } } catch (Exception ex) { throw new RuntimeException(ex); } }
JAXBElementProvider<Object> defaultWriter = new JAXBElementProvider<>(); defaultWriter.setMarshallAsJaxbElement(true); defaultWriter.setXmlTypeAsJaxbElementOnly(true); writer = defaultWriter;
@Test public void testEchoGenericSuperBookProxy2Xml() throws Exception { String endpointAddress = "http://localhost:" + PORT + "/webapp/genericstore2"; JAXBElementProvider<Object> jaxbProvider = new JAXBElementProvider<>(); jaxbProvider.setXmlRootAsJaxbElement(true); jaxbProvider.setMarshallAsJaxbElement(true); GenericBookStoreSpring2 proxy = JAXRSClientFactory.create(endpointAddress, GenericBookStoreSpring2.class, Collections.singletonList(jaxbProvider)); WebClient.getConfig(proxy).getHttpConduit().getClient().setReceiveTimeout(1000000000L); WebClient.client(proxy).type("application/xml").accept("application/xml"); SuperBook book = proxy.echoSuperBook(new SuperBook("Super", 124L, true)); assertEquals(124L, book.getId()); assertTrue(book.isSuperBook()); }
@Test public void testPostBookXsiTypeProxy() throws Exception { String address = "http://localhost:" + PORT + "/the/thebooksxsi/bookstore"; JAXBElementProvider<Book> provider = new JAXBElementProvider<>(); provider.setExtraClass(new Class[]{SuperBook.class}); provider.setJaxbElementClassNames(Collections.singletonList(Book.class.getName())); BookStoreSpring bookStore = JAXRSClientFactory.create(address, BookStoreSpring.class, Collections.singletonList(provider)); SuperBook book = new SuperBook("SuperBook2", 999L, true); Book book2 = bookStore.postGetBookXsiType(book); assertEquals("SuperBook2", book2.getName()); }
@Test public void testPostGetBookAdapterList() throws Exception { JAXBElementProvider<?> provider = new JAXBElementProvider<>(); Map<String, String> outMap = new HashMap<>(); outMap.put("Books", "CollectionWrapper"); outMap.put("books", "Book"); provider.setOutTransformElements(outMap); WebClient wc = WebClient.create("http://localhost:" + PORT + "/bookstore/books/adapter-list", Collections.singletonList(provider)); Collection<? extends Book> books = wc.type("application/xml").accept("application/xml") .postAndGetCollection(new Books(new Book("CXF", 123L)), Book.class); assertEquals(1, books.size()); assertEquals(123L, books.iterator().next().getId()); }
@Test public void testPostGeneratedBook() throws Exception { String baseAddress = "http://localhost:" + PORT + "/the/generated"; JAXBElementProvider<?> provider = new JAXBElementProvider<>(); provider.setJaxbElementClassMap(Collections.singletonMap( "org.apache.cxf.systest.jaxrs.codegen.schema.Book", "{http://superbooks}thebook")); org.apache.cxf.systest.jaxrs.codegen.service.BookStore bookStore = JAXRSClientFactory.create(baseAddress, org.apache.cxf.systest.jaxrs.codegen.service.BookStore.class, Collections.singletonList(provider)); org.apache.cxf.systest.jaxrs.codegen.schema.Book book = new org.apache.cxf.systest.jaxrs.codegen.schema.Book(); book.setId(123); bookStore.addBook(123, book); Response r = WebClient.client(bookStore).getResponse(); assertEquals(204, r.getStatus()); }
@Test public void testPostPetStatusType() throws Exception { JAXBElementProvider<Object> p = new JAXBElementProvider<>(); p.setUnmarshallAsJaxbElement(true); WebClient wc = WebClient.create("http://localhost:" + PORT + "/webapp/pets/petstore/jaxb/statusType/", Collections.singletonList(p)); WebClient.getConfig(wc).getInInterceptors().add(new LoggingInInterceptor()); wc.accept("text/xml"); PetStore.PetStoreStatusType type = wc.get(PetStore.PetStoreStatusType.class); assertEquals(PetStore.CLOSED, type.getStatus()); } }
@Override public BookInfo readFrom(Class<BookInfo> arg0, Type arg1, Annotation[] anns, MediaType mt, MultivaluedMap<String, String> headers, InputStream is) throws IOException, WebApplicationException { Book book = new JAXBElementProvider<Book>().readFrom(Book.class, Book.class, anns, mt, headers, is); return new BookInfo(book); }
protected void run() { JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean(); sf.setResourceClasses(BookStore.class); sf.setResourceProvider(BookStore.class, new SingletonResourceProvider(new BookStore())); JAXBElementProvider<?> p1 = new JAXBElementProvider<>(); p1.setEnableBuffering(true); p1.setEnableStreaming(true); JAXBElementProvider<?> p2 = new CustomJaxbProvider(); p2.setProduceMediaTypes(Collections.singletonList("text/xml")); List<Object> providers = new ArrayList<>(); providers.add(p1); providers.add(p2); sf.setProviders(providers); sf.setAddress("http://localhost:" + PORT + "/"); Map<String, Object> properties = new HashMap<>(); properties.put("org.apache.cxf.serviceloader-context", "true"); sf.setProperties(properties); sf.create(); }
@Test public void testGetBookFastinfoset() throws Exception { JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean(); bean.setAddress("http://localhost:" + PORT + "/test/services/rest3/bookstore/fastinfoset2"); bean.getInInterceptors().add(new FIStaxInInterceptor()); JAXBElementProvider<?> p = new JAXBElementProvider<>(); p.setConsumeMediaTypes(Collections.singletonList("application/fastinfoset")); bean.setProvider(p); Map<String, Object> props = new HashMap<>(); props.put(FIStaxInInterceptor.FI_GET_SUPPORTED, Boolean.TRUE); bean.setProperties(props); WebClient client = bean.createWebClient(); Book b = client.accept("application/fastinfoset").get(Book.class); assertEquals("CXF2", b.getName()); assertEquals(2L, b.getId()); }
public void writeTo(JAXBElement<?> obj, Class<?> cls, Type genericType, Annotation[] anns, MediaType m, MultivaluedMap<String, Object> headers, OutputStream os) throws IOException { super.writeTo(obj, cls, genericType, anns, m, headers, os); } }
/** * @see {@link javax.ws.rs.core.Application#getSingletons()} */ @Override public Set<Object> getSingletons() { log.error("Osgiliath: registering cxf servlet"); Swagger2Feature feature = new Swagger2Feature(); // customize some of the properties feature.setBasePath("/api"); feature.setResourcePackage(HelloServiceJaxRS.class.getPackage().getName()); return Sets.<Object> newHashSet(helloService, swagger, new JAXBElementProvider<Object>(), // new ExceptionXmlMapper(), new SwaggerSerializers(), new ValidationExceptionMapper(), // new JAXRSBeanValidationInInterceptor(), // new JAXRSBeanValidationOutInterceptor(), new JacksonJsonProvider()); } }
@Test public void testPostGetBookFastinfosetProxyInterceptors() throws Exception { JAXBElementProvider<Object> p = new JAXBElementProvider<>(); p.setConsumeMediaTypes(Collections.singletonList("application/fastinfoset")); p.setProduceMediaTypes(Collections.singletonList("application/fastinfoset")); BookStoreJaxrsJaxws client = JAXRSClientFactory.create( "http://localhost:" + PORT + "/test/services/rest5", BookStoreSoapRestFastInfoset3.class, Collections.singletonList(p)); Book b = new Book("CXF", 1L); // Just to make sure it is enforced Map<String, Object> props = WebClient.getConfig(client).getRequestContext(); props.put(FIStaxOutInterceptor.FI_ENABLED, Boolean.TRUE); Book b2 = client.addFastinfoBook(b); assertEquals(b2.getName(), b.getName()); assertEquals(b2.getId(), b.getId()); checkFiInterceptors(WebClient.getConfig(client)); }
private <T> T readNode(Node node, Class<T> cls) { if (Node.class.isAssignableFrom(cls)) { return cls.cast(node); } DOMSource s = new DOMSource(node); if (Source.class == cls || DOMSource.class == cls) { return cls.cast(s); } try { JAXBElementProvider<?> provider = new JAXBElementProvider<>(); JAXBContext c = provider.getPackageContext(cls); if (c == null) { c = provider.getClassContext(cls); } Unmarshaller u = c.createUnmarshaller(); try { if (cls.getAnnotation(XmlRootElement.class) != null) { return cls.cast(u.unmarshal(s)); } return u.unmarshal(s, cls).getValue(); } finally { JAXBUtils.closeUnmarshaller(u); } } catch (Exception ex) { throw new RuntimeException(ex); } }