Package com.alibaba.citrus.springext.support.resolver

Source Code of com.alibaba.citrus.springext.support.resolver.SchemaTypeTests

/*
* Copyright (c) 2002-2012 Alibaba Group Holding Limited.
* All rights reserved.
*
* Licensed 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 com.alibaba.citrus.springext.support.resolver;

import static com.alibaba.citrus.test.TestUtil.*;
import static org.junit.Assert.*;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

import com.alibaba.citrus.springext.impl.SpringPluggableSchemas;
import com.alibaba.citrus.test.TestEnvStatic;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.beans.factory.xml.ResourceEntityResolver;
import org.springframework.core.io.DefaultResourceLoader;

/**
* 测试springext-base.xsd中的类型。
*
* @author Michael Zhou
*/
public class SchemaTypeTests {
    private static final String SCHEMA_LANGUAGE_ATTRIBUTE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
    private static final String XSD_SCHEMA_LANGUAGE       = "http://www.w3.org/2001/XMLSchema";
    private static SpringPluggableSchemas sps;
    private static SchemaEntityResolver   resolver;
    private        SAXReader              reader;

    static {
        TestEnvStatic.init();
    }

    @BeforeClass
    public static void initSchemas() {
        sps = new SpringPluggableSchemas();
        resolver = new SchemaEntityResolver(new ResourceEntityResolver(new DefaultResourceLoader()), sps);
    }

    @Before
    public void initReader() throws Exception {
        reader = new SAXReader(true);
        reader.setEntityResolver(resolver);
        reader.setProperty(SCHEMA_LANGUAGE_ATTRIBUTE, XSD_SCHEMA_LANGUAGE);
    }

    @Test
    public void parseBoolean() throws Exception {
        assertBoolean("true");
        assertBoolean("false");
        assertBoolean("${placeholder:defaultValue}");

        try {
            assertBoolean("invalid");
            fail();
        } catch (DocumentException e) {
            assertThat(e, exception("invalid"));
        }
    }

    @Test
    public void parseInteger() throws Exception {
        assertInteger("123");
        assertInteger("456");
        assertInteger("${placeholder:defaultValue}");

        try {
            assertInteger("abc");
            fail();
        } catch (DocumentException e) {
            assertThat(e, exception("abc"));
        }
    }

    private void assertBoolean(String value) throws Exception {
        Document doc = reader.read(getXmlFile("<types:test-boolean>" + value + "</types:test-boolean>"));
        Element elem = doc.getRootElement().element("test-boolean");

        assertEquals(value, elem.getText());
    }

    private void assertInteger(String value) throws Exception {
        Document doc = reader.read(getXmlFile("<types:test-integer>" + value + "</types:test-integer>"));
        Element elem = doc.getRootElement().element("test-integer");

        assertEquals(value, elem.getText());
    }

    private InputStream getXmlFile(String content) throws IOException {
        StringBuilder buf = new StringBuilder();

        buf.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
                   + "<beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
                   + "       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
                   + "       xmlns:types=\"http://www.alibaba.com/schema/springext/base-types\"\n"
                   + "xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n"
                   + "    http://localhost:8080/schema/www.springframework.org/schema/beans/spring-beans.xsd\n"
                   + "    http://www.alibaba.com/schema/springext/base-types\n"
                   + "    http://localhost:8080/schema/www.alibaba.com/schema/springext-base-types.xsd\">\n");

        buf.append(content);

        buf.append("\n</beans>\n");

        return new ByteArrayInputStream(buf.toString().getBytes("UTF-8"));
    }
}
TOP

Related Classes of com.alibaba.citrus.springext.support.resolver.SchemaTypeTests

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.