Package org.codehaus.jackson.jaxb

Source Code of org.codehaus.jackson.jaxb.TestSchemaGeneration$Address

package org.codehaus.jackson.jaxb;

import javax.xml.bind.annotation.*;

import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.node.ObjectNode;
import org.codehaus.jackson.schema.JsonSchema;

/**
* Test(s) to see that JAXB annotations-based information is properly
* accessible and used by JSON Schema generation
*
* @author tatu
*/
public class TestSchemaGeneration extends BaseJaxbTest
{
    /*
    /**********************************************************
    /* Helper beans
    /**********************************************************
     */
   
    @XmlAccessorType(XmlAccessType.FIELD)
    protected static class Person {
        public String firstName;
        public String lastName;
   
        @XmlElement(type=Address.class)
        public IAddress address;
    }

    protected interface IAddress {    
        public String getCity();
        public void setCity(String city);
    }

    protected static class Address implements IAddress {
        private String city;
        private String state;
       
        @Override
        public String getCity() { return city; }
        @Override
        public void setCity(String city) { this.city = city; }
        public String getState() { return state; }
        public void setState(String state) { this.state = state; }
    }

    /*
    /**********************************************************
    /* Tests
    /**********************************************************
     */
   
    /**
     * Test for [JACKSON-415]
     *
     * @since 1.7
     */
    public void testWithJaxb() throws Exception
    {
        ObjectMapper mapper = getJaxbMapper();
        JsonSchema jsonSchema = mapper.generateJsonSchema(Address.class);
        ObjectNode root = jsonSchema.getSchemaNode();
        // should find two properties ("city", "state"), not just one...
        JsonNode itemsNode = root.findValue("properties");
        assertNotNull("Missing 'state' field", itemsNode.get("state"));
        assertNotNull("Missing 'city' field", itemsNode.get("city"));
        assertEquals(2, itemsNode.size());
    }
}
TOP

Related Classes of org.codehaus.jackson.jaxb.TestSchemaGeneration$Address

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.