Search in sources :

Example 16 with JAXBDataBinding

use of org.apache.cxf.jaxb.JAXBDataBinding in project cxf by apache.

the class XMLStreamDataReaderTest method testReadRPC.

@Test
public void testReadRPC() throws Exception {
    JAXBDataBinding db = getDataBinding(MyComplexStruct.class);
    QName[] tags = { new QName("http://apache.org/hello_world_rpclit", "sendReceiveData") };
    reader = getTestReader("../resources/greetMeRpcLitReq.xml");
    assertNotNull(reader);
    XMLStreamReader localReader = getTestFilteredReader(reader, tags);
    DataReader<XMLStreamReader> dr = db.createReader(XMLStreamReader.class);
    assertNotNull(dr);
    Object val = dr.read(new QName("http://apache.org/hello_world_rpclit", "in"), localReader, MyComplexStruct.class);
    assertNotNull(val);
    assertTrue(val instanceof MyComplexStruct);
    assertEquals("this is element 1", ((MyComplexStruct) val).getElem1());
    assertEquals("this is element 2", ((MyComplexStruct) val).getElem2());
    assertEquals(42, ((MyComplexStruct) val).getElem3());
}
Also used : XMLStreamReader(javax.xml.stream.XMLStreamReader) QName(javax.xml.namespace.QName) JAXBDataBinding(org.apache.cxf.jaxb.JAXBDataBinding) MyComplexStruct(org.apache.hello_world_rpclit.types.MyComplexStruct) Test(org.junit.Test)

Example 17 with JAXBDataBinding

use of org.apache.cxf.jaxb.JAXBDataBinding in project cxf by apache.

the class XMLStreamDataReaderTest method testReadBare.

@Test
public void testReadBare() throws Exception {
    JAXBDataBinding db = getDataBinding(TradePriceData.class);
    reader = getTestReader("../resources/sayHiDocLitBareReq.xml");
    assertNotNull(reader);
    DataReader<XMLStreamReader> dr = db.createReader(XMLStreamReader.class);
    assertNotNull(dr);
    QName elName = new QName("http://apache.org/hello_world_doc_lit_bare/types", "inout");
    MessagePartInfo part = new MessagePartInfo(elName, null);
    part.setElement(true);
    part.setElementQName(elName);
    part.setTypeClass(TradePriceData.class);
    Object val = dr.read(part, reader);
    assertNotNull(val);
    assertTrue(val instanceof TradePriceData);
    assertEquals("CXF", ((TradePriceData) val).getTickerSymbol());
    assertEquals(Float.valueOf(1.0f), new Float(((TradePriceData) val).getTickerPrice()));
}
Also used : XMLStreamReader(javax.xml.stream.XMLStreamReader) QName(javax.xml.namespace.QName) JAXBDataBinding(org.apache.cxf.jaxb.JAXBDataBinding) TradePriceData(org.apache.hello_world_doc_lit_bare.types.TradePriceData) MessagePartInfo(org.apache.cxf.service.model.MessagePartInfo) Test(org.junit.Test)

Example 18 with JAXBDataBinding

use of org.apache.cxf.jaxb.JAXBDataBinding in project cxf by apache.

the class JaxWsWebServicePublisherBeanPostProcessor method createAndPublishEndpoint.

private void createAndPublishEndpoint(String url, Object implementor) {
    final ServerFactoryBean serverFactory;
    if (prototypeServerFactoryBeanName != null) {
        if (!beanFactory.isPrototype(prototypeServerFactoryBeanName)) {
            throw new IllegalArgumentException("prototypeServerFactoryBeanName must indicate a scope='prototype' bean");
        }
        serverFactory = beanFactory.getBean(prototypeServerFactoryBeanName, ServerFactoryBean.class);
        customizedServerFactory = true;
    } else {
        serverFactory = new JaxWsServerFactoryBean();
    }
    serverFactory.setServiceBean(implementor);
    serverFactory.setServiceClass(ClassHelper.getRealClass(implementor));
    serverFactory.setAddress(url);
    final DataBinding dataBinding;
    if (prototypeDataBindingBeanName != null) {
        if (!beanFactory.isPrototype(prototypeDataBindingBeanName)) {
            throw new IllegalArgumentException("prototypeDataBindingBeanName must indicate a scope='prototype' bean");
        }
        customizedDataBinding = true;
        dataBinding = beanFactory.getBean(prototypeDataBindingBeanName, DataBinding.class);
    } else {
        dataBinding = new JAXBDataBinding();
    }
    serverFactory.setDataBinding(dataBinding);
    serverFactory.setBus(getServletBus());
    serverFactory.create();
}
Also used : DataBinding(org.apache.cxf.databinding.DataBinding) JAXBDataBinding(org.apache.cxf.jaxb.JAXBDataBinding) ServerFactoryBean(org.apache.cxf.frontend.ServerFactoryBean) JaxWsServerFactoryBean(org.apache.cxf.jaxws.JaxWsServerFactoryBean) JAXBDataBinding(org.apache.cxf.jaxb.JAXBDataBinding) JaxWsServerFactoryBean(org.apache.cxf.jaxws.JaxWsServerFactoryBean)

Example 19 with JAXBDataBinding

use of org.apache.cxf.jaxb.JAXBDataBinding in project cxf by apache.

the class WrapperNamespaceClassGeneratorTest method testGeneratedFirst.

@org.junit.Test
public void testGeneratedFirst() throws Exception {
    JaxWsImplementorInfo implInfo = new JaxWsImplementorInfo(AddNumbers2Impl.class);
    JaxWsServiceFactoryBean jaxwsFac = new JaxWsServiceFactoryBean(implInfo);
    Bus bus = BusFactory.getDefaultBus();
    jaxwsFac.setBus(bus);
    Capture c = new Capture();
    bus.setExtension(c, GeneratedClassClassLoaderCapture.class);
    Service service = jaxwsFac.create();
    ServiceInfo serviceInfo = service.getServiceInfos().get(0);
    InterfaceInfo interfaceInfo = serviceInfo.getInterface();
    OperationInfo inf = interfaceInfo.getOperations().iterator().next();
    Class<?> requestClass = inf.getInput().getMessagePart(0).getTypeClass();
    // Create request wrapper Object
    List<String> partNames = Arrays.asList(new String[] { "arg0" });
    List<String> elTypeNames = Arrays.asList(new String[] { "list" });
    List<Class<?>> partClasses = Arrays.asList(new Class<?>[] { List.class });
    // generate class and store it to class loader
    new JAXBDataBinding().createWrapperHelper(requestClass, null, partNames, elTypeNames, partClasses);
    // now no more generation is allowed
    WrapperHelperClassLoader wrapperHelperClassLoader = new WrapperHelperClassLoader(bus);
    GeneratedClassClassLoader.TypeHelperClassLoader cl = wrapperHelperClassLoader.getClassLoader();
    c.restore(cl);
    bus.setExtension(wrapperHelperClassLoader, WrapperHelperCreator.class);
    WrapperHelper wh = new JAXBDataBinding().createWrapperHelper(requestClass, null, partNames, elTypeNames, partClasses);
    assertFalse("Precompiled class not loaded", wh instanceof JAXBWrapperHelper);
}
Also used : OperationInfo(org.apache.cxf.service.model.OperationInfo) Bus(org.apache.cxf.Bus) JaxWsServiceFactoryBean(org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean) GeneratedClassClassLoader(org.apache.cxf.common.spi.GeneratedClassClassLoader) Service(org.apache.cxf.service.Service) GeneratedClassClassLoaderCapture(org.apache.cxf.common.spi.GeneratedClassClassLoaderCapture) ServiceInfo(org.apache.cxf.service.model.ServiceInfo) JaxWsImplementorInfo(org.apache.cxf.jaxws.support.JaxWsImplementorInfo) JAXBWrapperHelper(org.apache.cxf.jaxb.JAXBWrapperHelper) WrapperHelperClassLoader(org.apache.cxf.jaxb.WrapperHelperClassLoader) JAXBWrapperHelper(org.apache.cxf.jaxb.JAXBWrapperHelper) WrapperHelper(org.apache.cxf.databinding.WrapperHelper) JAXBDataBinding(org.apache.cxf.jaxb.JAXBDataBinding) InterfaceInfo(org.apache.cxf.service.model.InterfaceInfo)

Example 20 with JAXBDataBinding

use of org.apache.cxf.jaxb.JAXBDataBinding in project cxf by apache.

the class WrapperNamespaceClassGeneratorTest method testForXmlList.

@org.junit.Test
public void testForXmlList() throws Exception {
    JaxWsImplementorInfo implInfo = new JaxWsImplementorInfo(AddNumbersImpl.class);
    JaxWsServiceFactoryBean jaxwsFac = new JaxWsServiceFactoryBean(implInfo);
    jaxwsFac.setBus(BusFactory.getDefaultBus());
    Service service = jaxwsFac.create();
    ServiceInfo serviceInfo = service.getServiceInfos().get(0);
    InterfaceInfo interfaceInfo = serviceInfo.getInterface();
    OperationInfo inf = interfaceInfo.getOperations().iterator().next();
    Class<?> requestClass = inf.getInput().getMessagePart(0).getTypeClass();
    Class<?> responseClass = inf.getOutput().getMessagePart(0).getTypeClass();
    // Create request wrapper Object
    List<String> partNames = Arrays.asList(new String[] { "arg0" });
    List<String> elTypeNames = Arrays.asList(new String[] { "list" });
    List<Class<?>> partClasses = Arrays.asList(new Class<?>[] { List.class });
    WrapperHelper wh = new JAXBDataBinding().createWrapperHelper(requestClass, null, partNames, elTypeNames, partClasses);
    List<Object> paraList = new ArrayList<>();
    List<String> valueList = new ArrayList<>();
    valueList.add("str1");
    valueList.add("str2");
    valueList.add("str3");
    paraList.add(valueList);
    Object requestObj = wh.createWrapperObject(paraList);
    // Create response wrapper Object
    partNames = Arrays.asList(new String[] { "return" });
    elTypeNames = Arrays.asList(new String[] { "list" });
    partClasses = Arrays.asList(new Class<?>[] { List.class });
    wh = new JAXBDataBinding().createWrapperHelper(responseClass, null, partNames, elTypeNames, partClasses);
    List<Object> resPara = new ArrayList<>();
    List<Integer> intValueList = new ArrayList<>();
    intValueList.add(1);
    intValueList.add(2);
    intValueList.add(3);
    resPara.add(intValueList);
    Object responseObj = wh.createWrapperObject(resPara);
    JAXBContext jaxbContext = JAXBContext.newInstance(requestClass, responseClass);
    java.io.ByteArrayOutputStream bout = new java.io.ByteArrayOutputStream();
    Marshaller marshaller = jaxbContext.createMarshaller();
    // check marshall wrapper
    marshaller.marshal(requestObj, bout);
    String expected = "<arg0>str1 str2 str3</arg0>";
    assertTrue("The generated request wrapper class does not contain the correct annotations", bout.toString().contains(expected));
    bout.reset();
    marshaller.marshal(responseObj, bout);
    expected = "<return>1</return><return>2</return><return>3</return>";
    assertTrue("The generated response wrapper class is not correct", bout.toString().contains(expected));
}
Also used : OperationInfo(org.apache.cxf.service.model.OperationInfo) ArrayList(java.util.ArrayList) JAXBContext(javax.xml.bind.JAXBContext) ServiceInfo(org.apache.cxf.service.model.ServiceInfo) JAXBWrapperHelper(org.apache.cxf.jaxb.JAXBWrapperHelper) WrapperHelper(org.apache.cxf.databinding.WrapperHelper) JAXBDataBinding(org.apache.cxf.jaxb.JAXBDataBinding) ArrayList(java.util.ArrayList) List(java.util.List) Marshaller(javax.xml.bind.Marshaller) JaxWsServiceFactoryBean(org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean) Service(org.apache.cxf.service.Service) JaxWsImplementorInfo(org.apache.cxf.jaxws.support.JaxWsImplementorInfo) InterfaceInfo(org.apache.cxf.service.model.InterfaceInfo)

Aggregations

JAXBDataBinding (org.apache.cxf.jaxb.JAXBDataBinding)51 QName (javax.xml.namespace.QName)24 Test (org.junit.Test)18 JAXBException (javax.xml.bind.JAXBException)15 Header (org.apache.cxf.headers.Header)15 XMLStreamReader (javax.xml.stream.XMLStreamReader)12 ArrayList (java.util.ArrayList)10 DataBinding (org.apache.cxf.databinding.DataBinding)9 ByteArrayInputStream (java.io.ByteArrayInputStream)7 XMLStreamWriter (javax.xml.stream.XMLStreamWriter)7 DepthXMLStreamReader (org.apache.cxf.staxutils.DepthXMLStreamReader)7 Service (org.apache.cxf.service.Service)6 ServiceInfo (org.apache.cxf.service.model.ServiceInfo)6 JAXBContext (javax.xml.bind.JAXBContext)5 Bus (org.apache.cxf.Bus)5 URL (java.net.URL)4 OutofBandHeader (org.apache.cxf.outofband.header.OutofBandHeader)4 HashMap (java.util.HashMap)3 List (java.util.List)3 MessageContext (javax.xml.ws.handler.MessageContext)3