Package org.apache.axis2.json.gson

Source Code of org.apache.axis2.json.gson.JsonFormatterTest$Person

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

package org.apache.axis2.json.gson;

import com.google.gson.Gson;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.OMOutputFormat;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axis2.Constants;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.description.AxisMessage;
import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.description.AxisOperationFactory;
import org.apache.axis2.description.AxisService;
import org.apache.axis2.engine.AxisConfiguration;
import org.apache.axis2.json.gson.factory.JsonConstant;
import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.ws.commons.schema.XmlSchema;
import org.apache.ws.commons.schema.XmlSchemaCollection;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import javax.xml.namespace.QName;
import javax.xml.transform.stream.StreamSource;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class JsonFormatterTest {
    MessageContext outMsgContext;
    String contentType;
    String jsonString;
    SOAPEnvelope soapEnvelope;
    OMOutputFormat outputFormat;
    OutputStream outputStream;
    @Before
    public void setUp() throws Exception {
        contentType = "application/json-impl";
        SOAPFactory soapFactory = OMAbstractFactory.getSOAP11Factory();
        soapEnvelope = soapFactory.getDefaultEnvelope();
        outputFormat = new OMOutputFormat();
        outputStream = new ByteArrayOutputStream();

        outMsgContext = new MessageContext();
        outMsgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, "UTF-8");
    }

    @After
    public void tearDown() throws Exception {
        outputStream.close();
    }

    @Test
    public void testWriteToFaultMessage() throws Exception {
        jsonString = "{\"Fault\":{\"faultcode\":\"soapenv:Server\",\"faultstring\":\"javax.xml.stream.XMLStreamException\",\"detail\":\"testFaultMsg\"}}";
        outMsgContext.setProcessingFault(true);
        soapEnvelope.getBody().addChild(createFaultOMElement());
        outMsgContext.setEnvelope(soapEnvelope);
        JsonFormatter jsonFormatter = new JsonFormatter();
        jsonFormatter.writeTo(outMsgContext, outputFormat, outputStream, false);
        String faultMsg = outputStream.toString();
        Assert.assertEquals(jsonString , faultMsg);
    }


    @Test
    public void testWriteToXMLtoJSON() throws Exception {
        jsonString = "{\"response\":{\"return\":{\"name\":\"kate\",\"age\":\"35\",\"gender\":\"female\"}}}";
        String fileName = "test-resources/custom_schema/testSchema_1.xsd";
        InputStream is = new FileInputStream(fileName);
        XmlSchemaCollection schemaCol = new XmlSchemaCollection();
        XmlSchema schema = schemaCol.read(new StreamSource(is));
        QName elementQName = new QName("http://www.w3schools.com", "response");
        ConfigurationContext configCtxt = new ConfigurationContext(new AxisConfiguration());
        outMsgContext.setConfigurationContext(configCtxt);
        AxisOperation axisOperation = AxisOperationFactory.getAxisOperation(AxisOperation.MEP_CONSTANT_IN_OUT);
        AxisMessage message = new AxisMessage();
        message.setElementQName(elementQName);
        axisOperation.addMessage(message , WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
        outMsgContext.setAxisOperation(axisOperation);
        AxisService axisService = new AxisService("testService");
        axisService.addSchema(schema);
        outMsgContext.setAxisService(axisService);
        soapEnvelope.getBody().addChild(getResponseOMElement());
        outMsgContext.setEnvelope(soapEnvelope);
        JsonFormatter jsonFormatter = new JsonFormatter();
        jsonFormatter.writeTo(outMsgContext, outputFormat , outputStream , false);
        String response = outputStream.toString();
        Assert.assertEquals(jsonString, response);
    }


    @Test
    public void testWriteToJSON() throws Exception {
        Person person = new Person();
        person.setName("Leo");
        person.setAge(27);
        person.setGender("Male");
        person.setSingle(true);
        outMsgContext.setProperty(JsonConstant.RETURN_OBJECT, person);
        outMsgContext.setProperty(JsonConstant.RETURN_TYPE, Person.class);
        jsonString = "{\""+ JsonConstant.RESPONSE +"\":" + new Gson().toJson(person, Person.class) + "}";

        JsonFormatter jsonFormatter = new JsonFormatter();
        jsonFormatter.writeTo(outMsgContext, outputFormat, outputStream, false);
        String personString = outputStream.toString();
        Assert.assertEquals(jsonString, personString);

    }


    private OMElement createFaultOMElement() {
        OMFactory omFactory = OMAbstractFactory.getOMFactory();
        OMNamespace ns = omFactory.createOMNamespace("", "");
        OMElement faultCode = omFactory.createOMElement("faultcode", ns);
        faultCode.setText("soapenv:Server");
        OMElement faultString = omFactory.createOMElement("faultstring", ns);
        faultString.setText("javax.xml.stream.XMLStreamException");
        OMElement detail = omFactory.createOMElement("detail", ns);
        detail.setText("testFaultMsg");
        OMElement fault = omFactory.createOMElement("Fault", ns);
        fault.addChild(faultCode);
        fault.addChild(faultString);
        fault.addChild(detail);
        return  fault;
    }

    private OMElement getResponseOMElement() {
        OMFactory omFactory = OMAbstractFactory.getOMFactory();
        OMNamespace ns = omFactory.createOMNamespace("", "");

        OMElement response = omFactory.createOMElement("response", ns);
        OMElement ret = omFactory.createOMElement("return", ns);
        OMElement name = omFactory.createOMElement("name", ns);
        name.setText("kate");
        OMElement age = omFactory.createOMElement("age", ns);
        age.setText("35");
        OMElement gender = omFactory.createOMElement("gender", ns);
        gender.setText("female");
        ret.addChild(name);
        ret.addChild(age);
        ret.addChild(gender);
        response.addChild(ret);
        return response;
    }

    public static class Person {

        private String name;
        private int age;
        private String gender;
        private boolean single;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        public String getGender() {
            return gender;
        }

        public void setGender(String gender) {
            this.gender = gender;
        }

        public boolean isSingle() {
            return single;
        }

        public void setSingle(boolean single) {
            this.single = single;
        }
    }
}
TOP

Related Classes of org.apache.axis2.json.gson.JsonFormatterTest$Person

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.