[Geoserver-devel] Build failed in Hudson: geoserver-trunk #2546

See <http://hudson.opengeo.org/hudson/job/geoserver-trunk/2546/changes&gt;

Changes:

[riniangreani] /*
* Copyright (c) 2001 - 2009 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/

package org.geoserver.test;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import junit.framework.Test;

import org.geotools.data.complex.AppSchemaDataAccess;
import org.w3c.dom.Document;

/**
* WFS GetFeature to test integration of {@link AppSchemaDataAccess} with GeoServer.
*
* @author Ben Caradoc-Davies, CSIRO Exploration and Mining
* @author Rini Angreani, Curtin University of Technology
*/
public class FeatureChainingWfsTest extends AbstractAppSchemaWfsTestSupport {

    /**
     * Read-only test so can use one-time setup.
     *
     * @return
     */
    public static Test suite() {
        return new OneTimeTestSetup(new FeatureChainingWfsTest());
    }

    @Override
    protected NamespaceTestData buildTestData() {
        return new FeatureChainingMockData();
    }

    /**
     * Test whether GetCapabilities returns wfs:WFS_Capabilities.
     */
    public void testGetCapabilities() {
        Document doc = getAsDOM("wfs?request=GetCapabilities");
        LOGGER.info("WFS GetCapabilities response:\n" + prettyString(doc));
        assertEquals("wfs:WFS_Capabilities", doc.getDocumentElement().getNodeName());

        // make sure non-feature types don't appear in FeatureTypeList
        assertXpathCount(5, "//wfs:FeatureType", doc);
        ArrayList<String> featureTypeNames = new ArrayList<String>(5);
        featureTypeNames.add(evaluate("//wfs:FeatureType[1]/wfs:Name", doc));
        featureTypeNames.add(evaluate("//wfs:FeatureType[2]/wfs:Name", doc));
        featureTypeNames.add(evaluate("//wfs:FeatureType[3]/wfs:Name", doc));
        featureTypeNames.add(evaluate("//wfs:FeatureType[4]/wfs:Name", doc));
        featureTypeNames.add(evaluate("//wfs:FeatureType[5]/wfs:Name", doc));
        // Mapped Feture
        assertTrue(featureTypeNames.contains("gsml:MappedFeature"));
        // Geologic Unit
        assertTrue(featureTypeNames.contains("gsml:GeologicUnit"));
        // FirstParentFeature
        assertTrue(featureTypeNames.contains("ex:FirstParentFeature"));
        // SecondParentFeature
        assertTrue(featureTypeNames.contains("ex:SecondParentFeature"));
        // om:Observation
        assertTrue(featureTypeNames.contains("om:Observation"));
    }

    /**
     * Test whether DescribeFeatureType returns xsd:schema, and if the contents are correct. When no
     * type name specified, it should return imports for all name spaces involved. If type name is
     * specified, it should return imports of GML type and the type's top level schema.
     *
     * @throws IOException
     */
    public void testDescribeFeatureType() throws IOException {
        File dataDir = this.getTestData().getDataDirectoryRoot();

        /**
         * gsml:MappedFeature
         */
        Document doc = getAsDOM("wfs?request=DescribeFeatureType&typename=gsml:MappedFeature");
        LOGGER.info("WFS DescribeFeatureType, typename=gsml:MappedFeature response:\n"
                + prettyString(doc));
        assertEquals("xsd:schema", doc.getDocumentElement().getNodeName());
        // check target name space is encoded and is correct
        assertXpathEvaluatesTo(AbstractAppSchemaMockData.GSML_URI, "//@targetNamespace", doc);
        // make sure the content is only relevant include
        assertXpathCount(1, "//xsd:include", doc);
        // no import to GML since it's already imported inside the included schema
        // otherwise it's invalid to import twice
        assertXpathCount(0, "//xsd:import", doc);
        // GSML schemaLocation
        assertXpathEvaluatesTo(AbstractAppSchemaMockData.GSML_SCHEMA_LOCATION_URL,
                "//xsd:include/@schemaLocation", doc);
        // nothing else
        assertXpathCount(0, "//xsd:complexType", doc);
        assertXpathCount(0, "//xsd:element", doc);

        /**
         * gsml:GeologicUnit
         */
        doc = getAsDOM("wfs?request=DescribeFeatureType&typename=gsml:GeologicUnit");
        LOGGER.info("WFS DescribeFeatureType, typename=gsml:GeologicUnit response:\n"
                + prettyString(doc));
        assertEquals("xsd:schema", doc.getDocumentElement().getNodeName());
        assertXpathEvaluatesTo(AbstractAppSchemaMockData.GSML_URI, "//@targetNamespace", doc);
        assertXpathCount(1, "//xsd:include", doc);
        assertXpathCount(0, "//xsd:import", doc);
        // GSML schemaLocation
        assertXpathEvaluatesTo(AbstractAppSchemaMockData.GSML_SCHEMA_LOCATION_URL,
                "//xsd:include/@schemaLocation", doc);
        // nothing else
        assertXpathCount(0, "//xsd:complexType", doc);
        assertXpathCount(0, "//xsd:element", doc);

        /**
         * ex:FirstParentFeature and ex:SecondParentFeature
         */
        doc = getAsDOM("wfs?request=DescribeFeatureType&typeName=ex:FirstParentFeature,ex:SecondParentFeature");
        LOGGER.info("WFS DescribeFeatureType, typename=ex:FirstParentFeature,"
                + "ex:SecondParentFeature response:\n" + prettyString(doc));
        assertXpathEvaluatesTo(FeatureChainingMockData.EX_URI, "//@targetNamespace", doc);
        assertXpathCount(1, "//xsd:include", doc);
        assertXpathCount(0, "//xsd:import", doc);
        // EX include
        File exSchema = findFile("featureTypes/ex_FirstParentFeature/simpleContent.xsd", dataDir);
        assertNotNull(exSchema);
        assertTrue(exSchema.exists());
        String exSchemaLocation = exSchema.toURI().toString();
        assertXpathEvaluatesTo(exSchemaLocation, "//xsd:include/@schemaLocation", doc);
        // nothing else
        assertXpathCount(0, "//xsd:complexType", doc);
        assertXpathCount(0, "//xsd:element", doc);

        /**
         * Mixed name spaces
         */
        doc = getAsDOM("wfs?request=DescribeFeatureType&typeName=gsml:MappedFeature,ex:FirstParentFeature");
        LOGGER
                .info("WFS DescribeFeatureType, typename=gsml:MappedFeature,ex:FirstParentFeature response:\n"
                        + prettyString(doc));
        testDescribeFeatureTypeImports(doc, exSchemaLocation);

        /**
         * All type names specified, should result the same as above
         */
        doc = getAsDOM("wfs?request=DescribeFeatureType&typeName=gsml:MappedFeature,gsml:GeologicUnit,ex:FirstParentFeature,ex:SecondParentFeature");
        LOGGER
                .info("WFS DescribeFeatureType, typename=gsml:MappedFeature,gsml:GeologicUnit,ex:FirstParentFeature,ex:SecondParentFeature response:\n"
                        + prettyString(doc));
        testDescribeFeatureTypeImports(doc, exSchemaLocation);

        /**
         * No type name specified, should result the same as all type names
         */
        doc = getAsDOM("wfs?request=DescribeFeatureType");
        LOGGER.info("WFS DescribeFeatureType response:\n" + prettyString(doc));
        // FIXME: disabled as workaround for GEOS-3722
        // testDescribeFeatureTypeImports(doc, exSchemaLocation);
    }

    private void testDescribeFeatureTypeImports(Document doc, String exSchemaLocation) {
        assertEquals("xsd:schema", doc.getDocumentElement().getNodeName());
        assertXpathCount(0, "//@targetNamespace", doc);
        assertXpathCount(2, "//xsd:import", doc);
        assertXpathCount(0, "//xsd:include", doc);

        // order is unimportant, and could change, so we don't test the order
        String firstNamespace = evaluate("//xsd:import[1]/@namespace", doc);
        if (firstNamespace.equals(AbstractAppSchemaMockData.GSML_URI)) {
            // GSML import
            assertXpathEvaluatesTo(AbstractAppSchemaMockData.GSML_SCHEMA_LOCATION_URL,
                    "//xsd:import[1]/@schemaLocation", doc);
            // EX import
            assertXpathEvaluatesTo(FeatureChainingMockData.EX_URI, "//xsd:import[2]/@namespace",
                    doc);
            assertXpathEvaluatesTo(exSchemaLocation, "//xsd:import[2]/@schemaLocation", doc);
        } else {
            // EX import
            assertXpathEvaluatesTo(FeatureChainingMockData.EX_URI, "//xsd:import[1]/@namespace",
                    doc);
            assertXpathEvaluatesTo(exSchemaLocation, "//xsd:import[1]/@schemaLocation", doc);
            // GSML import
            assertXpathEvaluatesTo(AbstractAppSchemaMockData.GSML_URI,
                    "//xsd:import[2]/@namespace", doc);
            assertXpathEvaluatesTo(AbstractAppSchemaMockData.GSML_SCHEMA_LOCATION_URL,
                    "//xsd:import[2]/@schemaLocation", doc);
        }
        // nothing else
        assertXpathCount(0, "//xsd:complexType", doc);
        assertXpathCount(0, "//xsd:element", doc);
    }

    /**
     * Test whether GetFeature returns wfs:FeatureCollection.
     */
    public void testGetFeature() {
        Document doc = getAsDOM("wfs?request=GetFeature&typename=gsml:MappedFeature");
        LOGGER.info("WFS GetFeature&typename=gsml:MappedFeature response:\n" + prettyString(doc));
        assertEquals("wfs:FeatureCollection", doc.getDocumentElement().getNodeName());
        // non-feature type should return nothing/exception
        doc = getAsDOM("wfs?request=GetFeature&typename=gsml:CompositionPart");
        LOGGER.info("WFS GetFeature&typename=gsml:CompositionPart response, exception expected:\n"
                + prettyString(doc));
        assertEquals("ows:ExceptionReport", doc.getDocumentElement().getNodeName());
    }

    /**
     * Test nesting features of complex types with simple content. Previously the nested features
     * attributes weren't encoded, so this is to ensure that this works. This also tests that a
     * feature type can have multiple FEATURE_LINK to be referred by different types.
     */
    public void testComplexTypeWithSimpleContent() {
        Document doc = getAsDOM("wfs?request=GetFeature&typename=ex:FirstParentFeature");
        LOGGER
                .info("WFS GetFeature&typename=ex:FirstParentFeature response:\n"
                        + prettyString(doc));
        assertXpathCount(2, "//ex:FirstParentFeature", doc);

        // 1
        assertXpathCount(2, "//ex:FirstParentFeature[@gml:id='1']/ex:nestedFeature", doc);
        assertXpathEvaluatesTo(
                "string_one",
                "//ex:FirstParentFeature[@gml:id='1']/ex:nestedFeature[1]/ex:SimpleContent/ex:someAttribute",
                doc);
        assertXpathEvaluatesTo(
                "string_two",
                "//ex:FirstParentFeature[@gml:id='1']/ex:nestedFeature[2]/ex:SimpleContent/ex:someAttribute",
                doc);
        assertXpathCount(
                0,
                "//ex:FirstParentFeature[@gml:id='1']/ex:nestedFeature[2]/ex:SimpleContent/FEATURE_LINK",
                doc);
        // 2
        assertXpathCount(0, "//ex:FirstParentFeature[@gml:id='2']/ex:nestedFeature", doc);

        doc = getAsDOM("wfs?request=GetFeature&typename=ex:SecondParentFeature");
        LOGGER.info("WFS GetFeature&typename=ex:SecondParentFeature response:\n"
                + prettyString(doc));
        assertXpathCount(2, "//ex:SecondParentFeature", doc);

        // 1
        assertXpathCount(0, "//ex:SecondParentFeature[@gml:id='1']/ex:nestedFeature", doc);
        // 2
        assertXpathCount(3, "//ex:SecondParentFeature[@gml:id='2']/ex:nestedFeature", doc);
        assertXpathEvaluatesTo(
                "string_one",
                "//ex:SecondParentFeature[@gml:id='2']/ex:nestedFeature[1]/ex:SimpleContent/ex:someAttribute",
                doc);
        assertXpathEvaluatesTo(
                "string_two",
                "//ex:SecondParentFeature[@gml:id='2']/ex:nestedFeature[2]/ex:SimpleContent/ex:someAttribute",
                doc);
        assertXpathEvaluatesTo(
                "string_three",
                "//ex:SecondParentFeature[@gml:id='2']/ex:nestedFeature[3]/ex:SimpleContent/ex:someAttribute",
                doc);
    }

    /**
     * Test content of GetFeature response.
     */
    public void testGetFeatureContent() throws Exception {
        Document doc = getAsDOM("wfs?request=GetFeature&typename=gsml:MappedFeature");
        LOGGER.info("WFS GetFeature&typename=gsml:MappedFeature response:\n" + prettyString(doc));
        assertXpathEvaluatesTo("4", "/wfs:FeatureCollection/@numberOfFeatures", doc);
        assertXpathCount(4, "//gsml:MappedFeature", doc);

        String schemaLocation = evaluate("/wfs:FeatureCollection/@xsi:schemaLocation", doc);
        String gsmlLocation = AbstractAppSchemaMockData.GSML_URI + " "
                + AbstractAppSchemaMockData.GSML_SCHEMA_LOCATION_URL;
        String wfsLocation = org.geoserver.wfs.xml.v1_1_0.WFS.NAMESPACE + " "
                + org.geoserver.wfs.xml.v1_1_0.WFS.CANONICAL_SCHEMA_LOCATION;
        if (schemaLocation.startsWith(AbstractAppSchemaMockData.GSML_URI)) {
            // GSML schema location was encoded first
            assertEquals(gsmlLocation + " " + wfsLocation, schemaLocation);
        } else {
            // WFS schema location was encoded first
            assertEquals(wfsLocation + " " + gsmlLocation, schemaLocation);
        }

        // mf1
        {
            String id = "mf1";
            assertXpathEvaluatesTo(id, "//gsml:MappedFeature[1]/@gml:id", doc);
            assertXpathEvaluatesTo("GUNTHORPE FORMATION", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gml:name", doc);
            // positionalAccuracy
            assertXpathEvaluatesTo("200.0", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:positionalAccuracy/gsml:CGI_NumericValue/gsml:principalValue", doc);
            assertXpathEvaluatesTo("urn:ogc:def:uom:UCUM:m", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:positionalAccuracy/gsml:CGI_NumericValue/gsml:principalValue/@uom", doc);
            // shape
            assertXpathEvaluatesTo("-1.2 52.5 -1.2 52.6 -1.1 52.6 -1.1 52.5 -1.2 52.5",
                    "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:shape//gml:posList", doc);
            // specification gu.25699
            assertXpathEvaluatesTo("gu.25699", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/@gml:id", doc);
            // description
            assertXpathEvaluatesTo("Olivine basalt, tuff, microgabbro, minor sedimentary rocks",
                    "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                            + "/gsml:GeologicUnit/gml:description", doc);
            // name
            assertXpathCount(2, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gml:name", doc);
            assertXpathEvaluatesTo("Yaugher Volcanic Group", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gml:name[@codeSpace='urn:ietf:rfc:2141']", doc);
            assertXpathEvaluatesTo("Yaugher Volcanic Group", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gml:name[1]", doc);
            assertXpathEvaluatesTo("urn:ietf:rfc:2141", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gml:name[1]/@codeSpace", doc);
            assertXpathEvaluatesTo("-Py", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gml:name[2]", doc);
            // feature link shouldn't appear as it's not in the schema
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/FEATURE_LINK", doc);
            // occurence [sic]
            assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:occurence", doc);
            assertXpathEvaluatesTo("", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification" + "/gsml:GeologicUnit/gsml:occurence[1]", doc);
            assertXpathEvaluatesTo("urn:cgi:feature:MappedFeature:mf1",
                    "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                            + "/gsml:GeologicUnit/gsml:occurence/@xlink:href", doc);
            // exposureColor
            assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:exposureColor", doc);
            assertXpathEvaluatesTo("Blue", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:exposureColor"
                    + "/gsml:CGI_TermValue/gsml:value", doc);
            assertXpathEvaluatesTo("some:uri", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:exposureColor/gsml:CGI_TermValue/gsml:value/@codeSpace", doc);
            // feature link shouldn't appear as it's not in the schema
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:exposureColor"
                    + "/gsml:CGI_TermValue/FEATURE_LINK", doc);
            // outcropCharacter
            assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:outcropCharacter", doc);
            assertXpathEvaluatesTo("x", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:outcropCharacter"
                    + "/gsml:CGI_TermValue/gsml:value", doc);
            // feature link shouldn't appear as it's not in the schema
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:outcropCharacter"
                    + "/gsml:CGI_TermValue/FEATURE_LINK", doc);
            // composition
            assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:composition", doc);
            assertXpathEvaluatesTo("significant", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:composition"
                    + "/gsml:CompositionPart/gsml:proportion/gsml:CGI_TermValue/gsml:value", doc);
            assertXpathEvaluatesTo("interbedded component", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:composition"
                    + "/gsml:CompositionPart/gsml:role", doc);
            // feature link shouldn't appear as it's not in the schema
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:composition"
                    + "/gsml:CompositionPart/gsml:role/FEATURE_LINK", doc);
            // lithology
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:composition/gsml:CompositionPart/gsml:lithology",
                    doc);
            // feature link shouldn't appear as it's not in the schema
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:composition"
                    + "/gsml:CompositionPart/gsml:lithology/FEATURE_LINK", doc);
        }

        // mf2
        {
            String id = "mf2";
            assertXpathEvaluatesTo(id, "//gsml:MappedFeature[2]/@gml:id", doc);
            assertXpathEvaluatesTo("MERCIA MUDSTONE GROUP", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gml:name", doc);
            // positionalAccuracy
            assertXpathEvaluatesTo("100.0", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:positionalAccuracy/gsml:CGI_NumericValue/gsml:principalValue", doc);
            assertXpathEvaluatesTo("urn:ogc:def:uom:UCUM:m", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:positionalAccuracy/gsml:CGI_NumericValue/gsml:principalValue/@uom", doc);
            // shape
            assertXpathEvaluatesTo("-1.3 52.5 -1.3 52.6 -1.2 52.6 -1.2 52.5 -1.3 52.5",
                    "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:shape//gml:posList", doc);
            // gu.25678
            assertXpathEvaluatesTo("gu.25678", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/@gml:id", doc);
            // name
            assertXpathCount(3, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gml:name", doc);
            assertXpathEvaluatesTo("Yaugher Volcanic Group 1", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gml:name[1]", doc);
            assertXpathEvaluatesTo("urn:ietf:rfc:2141", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gml:name[1]/@codeSpace", doc);
            assertXpathEvaluatesTo("Yaugher Volcanic Group 2", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gml:name[2]", doc);
            assertXpathEvaluatesTo("urn:ietf:rfc:2141", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gml:name[2]/@codeSpace", doc);
            assertXpathEvaluatesTo("-Py", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gml:name[3]", doc);
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/FEATURE_LINK", doc);
            // occurence [sic]
            assertXpathCount(2, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:occurence", doc);
            assertXpathEvaluatesTo("", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification" + "/gsml:GeologicUnit/gsml:occurence[1]", doc);
            assertXpathEvaluatesTo("urn:cgi:feature:MappedFeature:mf2",
                    "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                            + "/gsml:GeologicUnit/gsml:occurence[1]/@xlink:href", doc);
            assertXpathEvaluatesTo("", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification" + "/gsml:GeologicUnit/gsml:occurence[2]", doc);
            assertXpathEvaluatesTo("urn:cgi:feature:MappedFeature:mf3",
                    "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                            + "/gsml:GeologicUnit/gsml:occurence[2]/@xlink:href", doc);
            // description
            assertXpathEvaluatesTo("Olivine basalt, tuff, microgabbro, minor sedimentary rocks",
                    "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                            + "/gsml:GeologicUnit/gml:description", doc);
            // exposureColor
            assertXpathCount(2, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:exposureColor", doc);
            assertXpathEvaluatesTo("Yellow", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:exposureColor[1]"
                    + "/gsml:CGI_TermValue/gsml:value", doc);
            assertXpathEvaluatesTo("some:uri", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:exposureColor[1]/gsml:CGI_TermValue/gsml:value/@codeSpace", doc);
            assertXpathEvaluatesTo("Blue", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:exposureColor[2]"
                    + "/gsml:CGI_TermValue/gsml:value", doc);
            assertXpathEvaluatesTo("some:uri", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:exposureColor[2]/gsml:CGI_TermValue/gsml:value/@codeSpace", doc);
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:exposureColor"
                    + "/gsml:CGI_TermValue/FEATURE_LINK", doc);
            // outcropCharacter
            assertXpathCount(2, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:outcropCharacter", doc);
            assertXpathEvaluatesTo("y", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:outcropCharacter[1]"
                    + "/gsml:CGI_TermValue/gsml:value", doc);
            assertXpathEvaluatesTo("x", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:outcropCharacter[2]"
                    + "/gsml:CGI_TermValue/gsml:value", doc);
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:outcropCharacter"
                    + "/gsml:CGI_TermValue/FEATURE_LINK", doc);
            // composition
            assertXpathCount(2, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:composition", doc);
            assertXpathEvaluatesTo("significant", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:composition[1]"
                    + "/gsml:CompositionPart/gsml:proportion/gsml:CGI_TermValue/gsml:value", doc);
            assertXpathEvaluatesTo("interbedded component", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification"
                    + "/gsml:GeologicUnit[@gml:id='gu.25678']/gsml:composition[1]"
                    + "/gsml:CompositionPart/gsml:role", doc);
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:composition[1]"
                    + "/gsml:CompositionPart/gsml:role/FEATURE_LINK", doc);
            assertXpathEvaluatesTo("minor", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:composition[2]"
                    + "/gsml:CompositionPart/gsml:proportion/gsml:CGI_TermValue/gsml:value", doc);
            assertXpathEvaluatesTo("interbedded component", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:composition[2]"
                    + "/gsml:CompositionPart/gsml:role", doc);
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:composition[2]"
                    + "/gsml:CompositionPart/gsml:role/FEATURE_LINK", doc);

            // lithology
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:composition/gsml:CompositionPart/gsml:lithology",
                    doc);
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:composition"
                    + "/gsml:CompositionPart/gsml:lithology/FEATURE_LINK", doc);
        }

        // mf3
        {
            String id = "mf3";
            assertXpathEvaluatesTo(id, "//gsml:MappedFeature[3]/@gml:id", doc);
            assertXpathEvaluatesTo("CLIFTON FORMATION", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gml:name", doc);
            // positionalAccuracy
            assertXpathEvaluatesTo("150.0", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:positionalAccuracy/gsml:CGI_NumericValue/gsml:principalValue", doc);
            assertXpathEvaluatesTo("urn:ogc:def:uom:UCUM:m", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:positionalAccuracy/gsml:CGI_NumericValue/gsml:principalValue/@uom", doc);
            // shape
            assertXpathEvaluatesTo("-1.2 52.5 -1.2 52.6 -1.1 52.6 -1.1 52.5 -1.2 52.5",
                    "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:shape//gml:posList", doc);
            // gu.25678
            assertXpathEvaluatesTo("#gu.25678", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/@xlink:href", doc);
            // make sure nothing else is encoded
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit", doc);
        }

        // mf4
        {
            String id = "mf4";
            assertXpathEvaluatesTo(id, "//gsml:MappedFeature[4]/@gml:id", doc);
            assertXpathEvaluatesTo("MURRADUC BASALT", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gml:name", doc);
            // positionalAccuracy
            assertXpathEvaluatesTo("120.0", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:positionalAccuracy/gsml:CGI_NumericValue/gsml:principalValue", doc);
            assertXpathEvaluatesTo("urn:ogc:def:uom:UCUM:m", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:positionalAccuracy/gsml:CGI_NumericValue/gsml:principalValue/@uom", doc);
            // shape
            assertXpathEvaluatesTo("-1.3 52.5 -1.3 52.6 -1.2 52.6 -1.2 52.5 -1.3 52.5",
                    "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:shape//gml:posList", doc);
            // gu.25682
            assertXpathEvaluatesTo("gu.25682", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/@gml:id", doc);
            // description
            assertXpathEvaluatesTo("Olivine basalt", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gml:description", doc);
            // name
            assertXpathCount(2, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gml:name", doc);
            assertXpathEvaluatesTo("New Group", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gml:name[@codeSpace='urn:ietf:rfc:2141']", doc);
            assertXpathEvaluatesTo("New Group", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gml:name[1]", doc);
            assertXpathEvaluatesTo("urn:ietf:rfc:2141", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gml:name[1]/@codeSpace", doc);
            assertXpathEvaluatesTo("-Xy", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gml:name[2]", doc);
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/FEATURE_LINK", doc);
            // occurence [sic]
            assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:occurence", doc);
            assertXpathEvaluatesTo("", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification" + "/gsml:GeologicUnit/gsml:occurence[1]", doc);
            assertXpathEvaluatesTo("urn:cgi:feature:MappedFeature:mf4",
                    "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                            + "/gsml:GeologicUnit/gsml:occurence/@xlink:href", doc);
            // exposureColor
            assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:exposureColor", doc);
            assertXpathEvaluatesTo("some:uri", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:exposureColor/gsml:CGI_TermValue/gsml:value/@codeSpace", doc);
            assertXpathEvaluatesTo("Red", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:exposureColor"
                    + "/gsml:CGI_TermValue/gsml:value", doc);
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:exposureColor"
                    + "/gsml:CGI_TermValue/FEATURE_LINK", doc);
            // outcropCharacter
            assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:outcropCharacter", doc);
            assertXpathEvaluatesTo("z", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:outcropCharacter"
                    + "/gsml:CGI_TermValue/gsml:value", doc);
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:outcropCharacter"
                    + "/gsml:CGI_TermValue/FEATURE_LINK", doc);
            // composition
            assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:composition", doc);
            assertXpathEvaluatesTo("significant", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:composition"
                    + "/gsml:CompositionPart/gsml:proportion/gsml:CGI_TermValue/gsml:value", doc);
            assertXpathEvaluatesTo("interbedded component", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:composition"
                    + "/gsml:CompositionPart/gsml:role", doc);
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:composition"
                    + "/gsml:CompositionPart/gsml:role/FEATURE_LINK", doc);
            // lithology
            assertXpathCount(2, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:composition/gsml:CompositionPart/gsml:lithology",
                    doc);
            assertXpathCount(3, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:composition/gsml:CompositionPart/gsml:lithology[1]"
                    + "/gsml:ControlledConcept/gml:name", doc);
            assertXpathEvaluatesTo("name_a", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit"
                    + "/gsml:composition/gsml:CompositionPart/gsml:lithology[1]"
                    + "/gsml:ControlledConcept/gml:name[1]", doc);
            assertXpathEvaluatesTo("name_b", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit"
                    + "/gsml:composition/gsml:CompositionPart/gsml:lithology[1]"
                    + "/gsml:ControlledConcept/gml:name[2]", doc);
            assertXpathEvaluatesTo("name_c", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit"
                    + "/gsml:composition/gsml:CompositionPart/gsml:lithology[1]"
                    + "/gsml:ControlledConcept/gml:name[3]", doc);
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:composition"
                    + "/gsml:CompositionPart/gsml:lithology[1]/FEATURE_LINK", doc);
            assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + id + "']/gsml:specification"
                    + "/gsml:GeologicUnit/gsml:composition/gsml:CompositionPart/gsml:lithology[2]"
                    + "/gsml:ControlledConcept/gml:name", doc);
            assertXpathEvaluatesTo("name_2", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit"
                    + "/gsml:composition/gsml:CompositionPart/gsml:lithology[2]"
                    + "/gsml:ControlledConcept/gml:name", doc);
            assertXpathCount(0, "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/gsml:composition"
                    + "/gsml:CompositionPart/gsml:lithology[2]/FEATURE_LINK", doc);
        }
        
        // check for duplicate gml:id
        assertXpathCount(1, "//gsml:GeologicUnit[@gml:id='gu.25678']", doc);

    }

    /**
     * Implementation for tests expected to get mf4 only.
     *
     * @param xml
     */
    private void checkGetMf4Only(String xml) {
        Document doc = postAsDOM("wfs", xml);
        LOGGER.info("WFS filter GetFeature response:\n" + prettyString(doc));
        assertEquals("wfs:FeatureCollection", doc.getDocumentElement().getNodeName());
        assertXpathEvaluatesTo("1", "/wfs:FeatureCollection/@numberOfFeatures", doc);
        assertXpathCount(1, "//gsml:MappedFeature", doc);
        // mf4
        {
            String id = "mf4";
            assertXpathEvaluatesTo(id, "//gsml:MappedFeature[1]/@gml:id", doc);
            assertXpathEvaluatesTo("MURRADUC BASALT", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gml:name", doc);
            // gu.25682
            assertXpathEvaluatesTo("gu.25682", "//gsml:MappedFeature[@gml:id='" + id
                    + "']/gsml:specification/gsml:GeologicUnit/@gml:id", doc);
        }
    }
    
    /**
     * Test if we can get mf4 by its name.
     */
    public void testGetFeaturePropertyFilter() {
        String xml = //
        "<wfs:GetFeature " //
                + "service=\"WFS\" " //
                + "version=\"1.1.0\" " //
                + "xmlns:cdf=\"http://www.opengis.net/cite/data\\&quot; " //
                + "xmlns:ogc=\"http://www.opengis.net/ogc\\&quot; " //
                + "xmlns:wfs=\"http://www.opengis.net/wfs\\&quot; " //
                + "xmlns:gml=\"http://www.opengis.net/gml\\&quot; " //
                + "xmlns:gsml=\"" + AbstractAppSchemaMockData.GSML_URI + "\" " //
                + ">" //
                + " <wfs:Query typeName=\"gsml:MappedFeature\">" //
                + " <ogc:Filter>" //
                + " <ogc:PropertyIsEqualTo>" //
                + " <ogc:PropertyName>gml:name</ogc:PropertyName>" //
                + " <ogc:Literal>MURRADUC BASALT</ogc:Literal>" //
                + " </ogc:PropertyIsEqualTo>" //
                + " </ogc:Filter>" //
                + " </wfs:Query> " //
                + "</wfs:GetFeature>";
        checkGetMf4Only(xml);
    }

    /**
     * Test if we can get mf4 with a FeatureId fid filter.
     */
    public void testGetFeatureWithFeatureIdFilter() {
        String xml = //
        "<wfs:GetFeature " //
                + "service=\"WFS\" " //
                + "version=\"1.1.0\" " //
                + "xmlns:cdf=\"http://www.opengis.net/cite/data\\&quot; " //
                + "xmlns:ogc=\"http://www.opengis.net/ogc\\&quot; " //
                + "xmlns:wfs=\"http://www.opengis.net/wfs\\&quot; " //
                + "xmlns:gml=\"http://www.opengis.net/gml\\&quot; " //
                + "xmlns:gsml=\"" + AbstractAppSchemaMockData.GSML_URI + "\" " //
                + ">" //
                + " <wfs:Query typeName=\"gsml:MappedFeature\">" //
                + " <ogc:Filter>" //
                + " <ogc:FeatureId fid=\"mf4\"/>" //
                + " </ogc:Filter>" //
                + " </wfs:Query> " //
                + "</wfs:GetFeature>";
        checkGetMf4Only(xml);
    }

    /**
     * Test if we can get mf4 with a GmlObjectId gml:id filter.
     */
    public void testGetFeatureWithGmlObjectIdFilter() {
        String xml = //
        "<wfs:GetFeature " //
                + "service=\"WFS\" " //
                + "version=\"1.1.0\" " //
                + "xmlns:cdf=\"http://www.opengis.net/cite/data\\&quot; " //
                + "xmlns:ogc=\"http://www.opengis.net/ogc\\&quot; " //
                + "xmlns:wfs=\"http://www.opengis.net/wfs\\&quot; " //
                + "xmlns:gml=\"http://www.opengis.net/gml\\&quot; " //
                + "xmlns:gsml=\"" + AbstractAppSchemaMockData.GSML_URI + "\" " //
                + ">" //
                + " <wfs:Query typeName=\"gsml:MappedFeature\">" //
                + " <ogc:Filter>" //
                + " <ogc:GmlObjectId gml:id=\"mf4\"/>" //
                + " </ogc:Filter>" //
                + " </wfs:Query> " //
                + "</wfs:GetFeature>";
        checkGetMf4Only(xml);
    }
    
    /**
     * Test anyType as complex attributes. Previously the anyType attribute wouldn't be encoded at
     * all.
     */
    public void testAnyType() {
        final String OBSERVATION_ID_PREFIX = "observation:";
        Document doc = getAsDOM("wfs?request=GetFeature&typename=om:Observation");
        LOGGER.info("WFS GetFeature&typename=om:Observation response:\n" + prettyString(doc));
        // om:result in om:Observation is of anyType, and in this case I put in a mapped feature in
        // it
        // Because I'm lazy, I used the same properties file for observation where mf1 as observation
        // contains mf1 as MappedFeature in result attribute
        assertXpathEvaluatesTo("4", "/wfs:FeatureCollection/@numberOfFeatures", doc);
        assertXpathCount(4, "//om:Observation", doc);
        String id = "mf1";
        assertXpathEvaluatesTo(OBSERVATION_ID_PREFIX + id, "//om:Observation[1]/@gml:id", doc);
        assertXpathEvaluatesTo(id, "//om:Observation[1]/om:result/gsml:MappedFeature/@gml:id", doc);

        id = "mf2";
        assertXpathEvaluatesTo(OBSERVATION_ID_PREFIX + id, "//om:Observation[2]/@gml:id", doc);
        assertXpathEvaluatesTo(id, "//om:Observation[2]/om:result/gsml:MappedFeature/@gml:id", doc);

        id = "mf3";
        assertXpathEvaluatesTo(OBSERVATION_ID_PREFIX + id, "//om:Observation[3]/@gml:id", doc);
        assertXpathEvaluatesTo(id, "//om:Observation[3]/om:result/gsml:MappedFeature/@gml:id", doc);

        id = "mf4";
        assertXpathEvaluatesTo(OBSERVATION_ID_PREFIX + id, "//om:Observation[4]/@gml:id", doc);
        assertXpathEvaluatesTo(id, "//om:Observation[4]/om:result/gsml:MappedFeature/@gml:id", doc);
    }
    
    /**
     * Making sure attributes that are encoded as xlink:href can still be queried in filters.
     */
    public void testFilteringXlinkHref() {
        String xml = //
        "<wfs:GetFeature " //
                + "service=\"WFS\" " //
                + "version=\"1.1.0\" " //
                + "xmlns:cdf=\"http://www.opengis.net/cite/data\\&quot; " //
                + "xmlns:ogc=\"http://www.opengis.net/ogc\\&quot; " //
                + "xmlns:wfs=\"http://www.opengis.net/wfs\\&quot; " //
                + "xmlns:gml=\"http://www.opengis.net/gml\\&quot; " //
                + "xmlns:gsml=\"" + AbstractAppSchemaMockData.GSML_URI + "\" " //
                + ">" //
                + " <wfs:Query typeName=\"gsml:MappedFeature\">" //
                + " <ogc:Filter>" //
                + " <ogc:PropertyIsEqualTo>" //
                + " <ogc:PropertyName>gsml:specification/gsml:GeologicUnit/gml:name[1]</ogc:PropertyName>" //
                + " <ogc:Literal>Yaugher Volcanic Group</ogc:Literal>" //
                + " </ogc:PropertyIsEqualTo>" //
                + " </ogc:Filter>" //
                + " </wfs:Query> " //
                + "</wfs:GetFeature>";
        Document doc = postAsDOM("wfs", xml);
        LOGGER.info("WFS filter GetFeature response:\n" + prettyString(doc));
        assertEquals("wfs:FeatureCollection", doc.getDocumentElement().getNodeName());
        // there should be 1:
        // - mf1/gu.25699
        assertXpathEvaluatesTo("1", "/wfs:FeatureCollection/@numberOfFeatures", doc);
        assertXpathCount(1, "//gsml:MappedFeature", doc);
        assertXpathEvaluatesTo("mf1", "//gsml:MappedFeature/@gml:id", doc);
    }

}

------------------------------------------
[...truncated 25395 lines...]
            <ogc:FID/>
            <ogc:EID/>
        </ogc:Id_Capabilities>
    </ogc:Filter_Capabilities>
</wfs:WFS_Capabilities>

Apr 5, 2010 11:45:19 PM org.geoserver.test.XlinkWfsTest testGetFeature
INFO: WFS GetFeature response:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection numberOfFeatures="4" timeStamp="2010-04-05T23:45:19.438-04:00" xmlns:gml="http://www.opengis.net/gml&quot; xmlns:gsml="http://www.cgi-iugs.org/xml/GeoSciML/2&quot;
    xmlns:ogc="http://www.opengis.net/ogc&quot; xmlns:ows="http://www.opengis.net/ows&quot; xmlns:wfs="http://www.opengis.net/wfs&quot; xmlns:xlink="http://www.w3.org/1999/xlink&quot;
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd http://www.cgi-iugs.org/xml/GeoSciML/2 <http://hudson.opengeo.org/hudson/job/geoserver-trunk/ws/geoserver/extension/app-schema/app-schema-test/target/app-schema-mock61267data/featureTypes/gsml_MappedFeature/commonSchemas_new/GeoSciML/geosciml.xsd&quot;&gt;&gt;
    <gml:featureMembers>
        <gsml:MappedFeature gml:id="mf1">
            <gml:name>GUNTHORPE FORMATION</gml:name>
            <gsml:shape>
                <gml:Polygon>
                    <gml:exterior>
                        <gml:LinearRing>
                            <gml:posList>-1.2 52.5 -1.2 52.6 -1.1 52.6 -1.1 52.5 -1.2 52.5</gml:posList>
                        </gml:LinearRing>
                    </gml:exterior>
                </gml:Polygon>
            </gsml:shape>
            <gsml:specification xlink:href="urn:x-test:GeologicUnit:gu.25699"/>
        </gsml:MappedFeature>
        <gsml:MappedFeature gml:id="mf2">
            <gml:name>MERCIA MUDSTONE GROUP</gml:name>
            <gsml:shape>
                <gml:Polygon>
                    <gml:exterior>
                        <gml:LinearRing>
                            <gml:posList>-1.3 52.5 -1.3 52.6 -1.2 52.6 -1.2 52.5 -1.3 52.5</gml:posList>
                        </gml:LinearRing>
                    </gml:exterior>
                </gml:Polygon>
            </gsml:shape>
            <gsml:specification xlink:href="urn:x-test:GeologicUnit:gu.25678"/>
        </gsml:MappedFeature>
        <gsml:MappedFeature gml:id="mf3">
            <gml:name>CLIFTON FORMATION</gml:name>
            <gsml:shape>
                <gml:Polygon>
                    <gml:exterior>
                        <gml:LinearRing>
                            <gml:posList>-1.2 52.5 -1.2 52.6 -1.1 52.6 -1.1 52.5 -1.2 52.5</gml:posList>
                        </gml:LinearRing>
                    </gml:exterior>
                </gml:Polygon>
            </gsml:shape>
            <gsml:specification xlink:href="urn:x-test:GeologicUnit:gu.25678"/>
        </gsml:MappedFeature>
        <gsml:MappedFeature gml:id="mf4">
            <gml:name>MURRADUC BASALT</gml:name>
            <gsml:shape>
                <gml:Polygon>
                    <gml:exterior>
                        <gml:LinearRing>
                            <gml:posList>-1.3 52.5 -1.3 52.6 -1.2 52.6 -1.2 52.5 -1.3 52.5</gml:posList>
                        </gml:LinearRing>
                    </gml:exterior>
                </gml:Polygon>
            </gsml:shape>
            <gsml:specification xlink:href="urn:x-test:GeologicUnit:gu.25682"/>
        </gsml:MappedFeature>
    </gml:featureMembers>
</wfs:FeatureCollection>

Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.206 sec
Running org.geoserver.test.FeatureChainingWfsTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.031 sec <<< FAILURE!
Running org.geoserver.test.XYGeomTest
Apr 5, 2010 11:45:20 PM org.geoserver.test.XYGeomTest testDescribeFeatureType
INFO: WFS DescribeFeatureType response:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified" targetNamespace="http://test" xmlns:test="http://test" xmlns:xsd="http://www.w3.org/2001/XMLSchema&quot;&gt;
    <xsd:include schemaLocation="<http://hudson.opengeo.org/hudson/job/geoserver-trunk/ws/geoserver/extension/app-schema/app-schema-test/target/app-schema-mock61270data/featureTypes/test_PointFeature/GeometrylessTest.xsd&quot;/&gt;&gt;
</xsd:schema>

Apr 5, 2010 11:45:20 PM org.geoserver.test.XYGeomTest testGetFeature
INFO: WFS GetFeature response:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection numberOfFeatures="2" timeStamp="2010-04-05T23:45:20.448-04:00" xmlns:gml="http://www.opengis.net/gml&quot; xmlns:ogc="http://www.opengis.net/ogc&quot;
    xmlns:ows="http://www.opengis.net/ows&quot; xmlns:test="http://test" xmlns:wfs="http://www.opengis.net/wfs&quot; xmlns:xlink="http://www.w3.org/1999/xlink&quot;
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation="http://test <http://hudson.opengeo.org/hudson/job/geoserver-trunk/ws/geoserver/extension/app-schema/app-schema-test/target/app-schema-mock61270data/featureTypes/test_PointFeature/GeometrylessTest.xsd&gt; http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd&quot;&gt;
    <gml:featureMembers>
        <test:PointFeature gml:id="mf1">
            <test:loc/>
        </test:PointFeature>
        <test:PointFeature gml:id="mf2">
            <test:loc/>
        </test:PointFeature>
    </gml:featureMembers>
</wfs:FeatureCollection>

Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.504 sec
Running org.geoserver.test.SRSWfsTest
Apr 5, 2010 11:45:21 PM org.geoserver.test.SRSWfsTest testGetFeatureContent
INFO: WFS GetFeature&typename=ex:geomContainer response:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection numberOfFeatures="2" timeStamp="2010-04-05T23:45:21.375-04:00" xmlns:ex="http://example.com" xmlns:gml="http://www.opengis.net/gml&quot; xmlns:ogc="http://www.opengis.net/ogc&quot;
    xmlns:ows="http://www.opengis.net/ows&quot; xmlns:wfs="http://www.opengis.net/wfs&quot; xmlns:xlink="http://www.w3.org/1999/xlink&quot; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation="http://example.com <http://hudson.opengeo.org/hudson/job/geoserver-trunk/ws/geoserver/extension/app-schema/app-schema-test/target/app-schema-mock61272data/featureTypes/ex_geomContainer/NestedGeometry.xsd&gt; http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd&quot;&gt;
    <gml:featureMembers>
        <ex:geomContainer gml:id="1">
            <ex:geom>
                <gml:Polygon>
                    <gml:exterior>
                        <gml:LinearRing>
                            <gml:posList>-1.2 52.5 -1.2 52.6 -1.1 52.6 -1.1 52.5 -1.2 52.5</gml:posList>
                        </gml:LinearRing>
                    </gml:exterior>
                </gml:Polygon>
            </ex:geom>
            <ex:nestedFeature>
                <ex:nestedGeom gml:id="nested.2">
                    <ex:geom>
                        <gml:Point>
                            <gml:pos>42.58 31.29</gml:pos>
                        </gml:Point>
                    </ex:geom>
                </ex:nestedGeom>
            </ex:nestedFeature>
        </ex:geomContainer>
        <ex:geomContainer gml:id="2">
            <ex:geom>
                <gml:Point>
                    <gml:pos>42.58 31.29</gml:pos>
                </gml:Point>
            </ex:geom>
            <ex:nestedFeature>
                <ex:nestedGeom gml:id="nested.1">
                    <ex:geom>
                        <gml:Polygon>
                            <gml:exterior>
                                <gml:LinearRing>
                                    <gml:posList>-1.2 52.5 -1.2 52.6 -1.1 52.6 -1.1 52.5 -1.2 52.5</gml:posList>
                                </gml:LinearRing>
                            </gml:exterior>
                        </gml:Polygon>
                    </ex:geom>
                </ex:nestedGeom>
            </ex:nestedFeature>
        </ex:geomContainer>
    </gml:featureMembers>
</wfs:FeatureCollection>

Apr 5, 2010 11:45:24 PM org.geoserver.test.SRSWfsTest testReproject
INFO: WFS GetFeature&typename=ex:geomContainer&srsname=urn:x-ogc:def:crs:EPSG::4326 response:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection numberOfFeatures="2" timeStamp="2010-04-05T23:45:24.446-04:00" xmlns:ex="http://example.com" xmlns:gml="http://www.opengis.net/gml&quot; xmlns:ogc="http://www.opengis.net/ogc&quot;
    xmlns:ows="http://www.opengis.net/ows&quot; xmlns:wfs="http://www.opengis.net/wfs&quot; xmlns:xlink="http://www.w3.org/1999/xlink&quot; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation="http://example.com <http://hudson.opengeo.org/hudson/job/geoserver-trunk/ws/geoserver/extension/app-schema/app-schema-test/target/app-schema-mock61272data/featureTypes/ex_geomContainer/NestedGeometry.xsd&gt; http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd&quot;&gt;
    <gml:featureMembers>
        <ex:geomContainer gml:id="1">
            <ex:geom>
                <gml:Polygon>
                    <gml:exterior>
                        <gml:LinearRing>
                            <gml:posList>-1.1999999999634965 52.5 -1.1999999999634965 52.6 -1.099999999966089 52.59999999999999 -1.099999999966089 52.5 -1.1999999999634965 52.5</gml:posList>
                        </gml:LinearRing>
                    </gml:exterior>
                </gml:Polygon>
            </ex:geom>
            <ex:nestedFeature>
                <ex:nestedGeom gml:id="nested.2">
                    <ex:geom>
                        <gml:Point>
                            <gml:pos>42.58000004047607 31.29</gml:pos>
                        </gml:Point>
                    </ex:geom>
                </ex:nestedGeom>
            </ex:nestedFeature>
        </ex:geomContainer>
        <ex:geomContainer gml:id="2">
            <ex:geom>
                <gml:Point>
                    <gml:pos>42.58000004047607 31.29</gml:pos>
                </gml:Point>
            </ex:geom>
            <ex:nestedFeature>
                <ex:nestedGeom gml:id="nested.1">
                    <ex:geom>
                        <gml:Polygon>
                            <gml:exterior>
                                <gml:LinearRing>
                                    <gml:posList>-1.1999999999634965 52.5 -1.1999999999634965 52.6 -1.099999999966089 52.59999999999999 -1.099999999966089 52.5 -1.1999999999634965 52.5</gml:posList>
                                </gml:LinearRing>
                            </gml:exterior>
                        </gml:Polygon>
                    </ex:geom>
                </ex:nestedGeom>
            </ex:nestedFeature>
        </ex:geomContainer>
    </gml:featureMembers>
</wfs:FeatureCollection>

Apr 5, 2010 11:45:24 PM org.geoserver.test.SRSWfsTest testFilters
INFO: WFS GetFeature&typename=ex:geomContainer&srsname=urn:x-ogc:def:crs:EPSG::4326&featureid=1response:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection numberOfFeatures="1" timeStamp="2010-04-05T23:45:24.564-04:00" xmlns:ex="http://example.com" xmlns:gml="http://www.opengis.net/gml&quot; xmlns:ogc="http://www.opengis.net/ogc&quot;
    xmlns:ows="http://www.opengis.net/ows&quot; xmlns:wfs="http://www.opengis.net/wfs&quot; xmlns:xlink="http://www.w3.org/1999/xlink&quot; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation="http://example.com <http://hudson.opengeo.org/hudson/job/geoserver-trunk/ws/geoserver/extension/app-schema/app-schema-test/target/app-schema-mock61272data/featureTypes/ex_geomContainer/NestedGeometry.xsd&gt; http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd&quot;&gt;
    <gml:featureMembers>
        <ex:geomContainer gml:id="1">
            <ex:geom>
                <gml:Polygon>
                    <gml:exterior>
                        <gml:LinearRing>
                            <gml:posList>-1.1999999999634965 52.5 -1.1999999999634965 52.6 -1.099999999966089 52.59999999999999 -1.099999999966089 52.5 -1.1999999999634965 52.5</gml:posList>
                        </gml:LinearRing>
                    </gml:exterior>
                </gml:Polygon>
            </ex:geom>
            <ex:nestedFeature>
                <ex:nestedGeom gml:id="nested.2">
                    <ex:geom>
                        <gml:Point>
                            <gml:pos>42.58000004047607 31.29</gml:pos>
                        </gml:Point>
                    </ex:geom>
                </ex:nestedGeom>
            </ex:nestedFeature>
        </ex:geomContainer>
    </gml:featureMembers>
</wfs:FeatureCollection>

Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.193 sec

Results :

Tests in error:
  org.geoserver.test.DataAccessIntegrationWfsTest
  org.geoserver.test.PolymorphismWfsTest
  org.geoserver.test.FeatureChainingWfsTest

Tests run: 13, Failures: 0, Errors: 3, Skipped: 0

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] There are test failures.

Please refer to <http://hudson.opengeo.org/hudson/job/geoserver-trunk/ws/geoserver/extension/app-schema/app-schema-test/target/surefire-reports&gt; for the individual test results.
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8 minutes 26 seconds
[INFO] Finished at: Mon Apr 05 23:45:26 EDT 2010
[INFO] Final Memory: 50M/137M
[INFO] ------------------------------------------------------------------------
Failed to send e-mail to riniangreani because no e-mail address is known, and no default e-mail domain is configured

See <http://hudson.opengeo.org/hudson/job/geoserver-trunk/2547/changes&gt;

Changes:

[riniangreani] Update the test for GEOT-2627: gml:id should be unique for complex attributes per document.

[riniangreani] Revert my test/accidental commit.

------------------------------------------
[...truncated 27724 lines...]
                                    </gsml:proportion>
                                    <gsml:role>interbedded component</gsml:role>
                                </gsml:CompositionPart>
                            </gsml:composition>
                        </gsml:GeologicUnit>
                    </gsml:specification>
                </gsml:MappedFeature>
            </om:result>
        </om:Observation>
    </gml:featureMembers>
</wfs:FeatureCollection>

Apr 6, 2010 12:43:59 AM org.geoserver.test.FeatureChainingWfsTest testFilteringXlinkHref
INFO: WFS filter GetFeature response:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection numberOfFeatures="1" timeStamp="2010-04-06T00:43:59.831-04:00" xmlns:ex="http://example.com" xmlns:gml="http://www.opengis.net/gml&quot;
    xmlns:gsml="http://www.cgi-iugs.org/xml/GeoSciML/2&quot; xmlns:ogc="http://www.opengis.net/ogc&quot; xmlns:om="http://www.opengis.net/om/1.0&quot; xmlns:ows="http://www.opengis.net/ows&quot;
    xmlns:wfs="http://www.opengis.net/wfs&quot; xmlns:xlink="http://www.w3.org/1999/xlink&quot; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd http://www.cgi-iugs.org/xml/GeoSciML/2 http://schemas.opengis.net/GeoSciML/geosciml.xsd&quot;&gt;
    <gml:featureMembers>
        <gsml:MappedFeature gml:id="mf1">
            <gml:name>GUNTHORPE FORMATION</gml:name>
            <gsml:positionalAccuracy>
                <gsml:CGI_NumericValue>
                    <gsml:principalValue uom="urn:ogc:def:uom:UCUM:m">200.0</gsml:principalValue>
                </gsml:CGI_NumericValue>
            </gsml:positionalAccuracy>
            <gsml:observationMethod>
                <gsml:CGI_TermValue>
                    <gsml:value codeSpace="http://urn.opengis.net">urn:ogc:def:nil:OGC::missing</gsml:value>
                </gsml:CGI_TermValue>
            </gsml:observationMethod>
            <gsml:shape>
                <gml:Polygon>
                    <gml:exterior>
                        <gml:LinearRing>
                            <gml:posList>-1.2 52.5 -1.2 52.6 -1.1 52.6 -1.1 52.5 -1.2 52.5</gml:posList>
                        </gml:LinearRing>
                    </gml:exterior>
                </gml:Polygon>
            </gsml:shape>
            <gsml:specification>
                <gsml:GeologicUnit gml:id="gu.25699">
                    <gml:description>Olivine basalt, tuff, microgabbro, minor sedimentary rocks</gml:description>
                    <gml:name codeSpace="urn:ietf:rfc:2141">Yaugher Volcanic Group</gml:name>
                    <gml:name>-Py</gml:name>
                    <gsml:occurence xlink:href="urn:cgi:feature:MappedFeature:mf1"/>
                    <gsml:exposureColor>
                        <gsml:CGI_TermValue>
                            <gsml:value codeSpace="some:uri">Blue</gsml:value>
                        </gsml:CGI_TermValue>
                    </gsml:exposureColor>
                    <gsml:outcropCharacter>
                        <gsml:CGI_TermValue>
                            <gsml:value codeSpace="some:uri">x</gsml:value>
                        </gsml:CGI_TermValue>
                    </gsml:outcropCharacter>
                    <gsml:composition>
                        <gsml:CompositionPart>
                            <gsml:proportion>
                                <gsml:CGI_TermValue>
                                    <gsml:value codeSpace="some:uri">significant</gsml:value>
                                </gsml:CGI_TermValue>
                            </gsml:proportion>
                            <gsml:role>interbedded component</gsml:role>
                        </gsml:CompositionPart>
                    </gsml:composition>
                </gsml:GeologicUnit>
            </gsml:specification>
        </gsml:MappedFeature>
    </gml:featureMembers>
</wfs:FeatureCollection>

Tests run: 10, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 5.723 sec <<< FAILURE!
Running org.geoserver.test.XYGeomTest
Apr 6, 2010 12:44:00 AM org.geoserver.test.XYGeomTest testDescribeFeatureType
INFO: WFS DescribeFeatureType response:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified" targetNamespace="http://test" xmlns:test="http://test" xmlns:xsd="http://www.w3.org/2001/XMLSchema&quot;&gt;
    <xsd:include schemaLocation="<http://hudson.opengeo.org/hudson/job/geoserver-trunk/ws/geoserver/extension/app-schema/app-schema-test/target/app-schema-mock15869data/featureTypes/test_PointFeature/GeometrylessTest.xsd&quot;/&gt;&gt;
</xsd:schema>

Apr 6, 2010 12:44:00 AM org.geoserver.test.XYGeomTest testGetFeature
INFO: WFS GetFeature response:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection numberOfFeatures="2" timeStamp="2010-04-06T00:44:00.106-04:00" xmlns:gml="http://www.opengis.net/gml&quot; xmlns:ogc="http://www.opengis.net/ogc&quot;
    xmlns:ows="http://www.opengis.net/ows&quot; xmlns:test="http://test" xmlns:wfs="http://www.opengis.net/wfs&quot; xmlns:xlink="http://www.w3.org/1999/xlink&quot;
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation="http://test <http://hudson.opengeo.org/hudson/job/geoserver-trunk/ws/geoserver/extension/app-schema/app-schema-test/target/app-schema-mock15869data/featureTypes/test_PointFeature/GeometrylessTest.xsd&gt; http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd&quot;&gt;
    <gml:featureMembers>
        <test:PointFeature gml:id="mf1">
            <test:loc/>
        </test:PointFeature>
        <test:PointFeature gml:id="mf2">
            <test:loc/>
        </test:PointFeature>
    </gml:featureMembers>
</wfs:FeatureCollection>

Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.215 sec
Running org.geoserver.test.SRSWfsTest
Apr 6, 2010 12:44:01 AM org.geoserver.test.SRSWfsTest testGetFeatureContent
INFO: WFS GetFeature&typename=ex:geomContainer response:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection numberOfFeatures="2" timeStamp="2010-04-06T00:44:01.216-04:00" xmlns:ex="http://example.com" xmlns:gml="http://www.opengis.net/gml&quot; xmlns:ogc="http://www.opengis.net/ogc&quot;
    xmlns:ows="http://www.opengis.net/ows&quot; xmlns:wfs="http://www.opengis.net/wfs&quot; xmlns:xlink="http://www.w3.org/1999/xlink&quot; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation="http://example.com <http://hudson.opengeo.org/hudson/job/geoserver-trunk/ws/geoserver/extension/app-schema/app-schema-test/target/app-schema-mock15871data/featureTypes/ex_geomContainer/NestedGeometry.xsd&gt; http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd&quot;&gt;
    <gml:featureMembers>
        <ex:geomContainer gml:id="1">
            <ex:geom>
                <gml:Polygon>
                    <gml:exterior>
                        <gml:LinearRing>
                            <gml:posList>-1.2 52.5 -1.2 52.6 -1.1 52.6 -1.1 52.5 -1.2 52.5</gml:posList>
                        </gml:LinearRing>
                    </gml:exterior>
                </gml:Polygon>
            </ex:geom>
            <ex:nestedFeature>
                <ex:nestedGeom gml:id="nested.2">
                    <ex:geom>
                        <gml:Point>
                            <gml:pos>42.58 31.29</gml:pos>
                        </gml:Point>
                    </ex:geom>
                </ex:nestedGeom>
            </ex:nestedFeature>
        </ex:geomContainer>
        <ex:geomContainer gml:id="2">
            <ex:geom>
                <gml:Point>
                    <gml:pos>42.58 31.29</gml:pos>
                </gml:Point>
            </ex:geom>
            <ex:nestedFeature>
                <ex:nestedGeom gml:id="nested.1">
                    <ex:geom>
                        <gml:Polygon>
                            <gml:exterior>
                                <gml:LinearRing>
                                    <gml:posList>-1.2 52.5 -1.2 52.6 -1.1 52.6 -1.1 52.5 -1.2 52.5</gml:posList>
                                </gml:LinearRing>
                            </gml:exterior>
                        </gml:Polygon>
                    </ex:geom>
                </ex:nestedGeom>
            </ex:nestedFeature>
        </ex:geomContainer>
    </gml:featureMembers>
</wfs:FeatureCollection>

Apr 6, 2010 12:44:01 AM org.geoserver.test.SRSWfsTest testReproject
INFO: WFS GetFeature&typename=ex:geomContainer&srsname=urn:x-ogc:def:crs:EPSG::4326 response:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection numberOfFeatures="2" timeStamp="2010-04-06T00:44:01.776-04:00" xmlns:ex="http://example.com" xmlns:gml="http://www.opengis.net/gml&quot; xmlns:ogc="http://www.opengis.net/ogc&quot;
    xmlns:ows="http://www.opengis.net/ows&quot; xmlns:wfs="http://www.opengis.net/wfs&quot; xmlns:xlink="http://www.w3.org/1999/xlink&quot; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation="http://example.com <http://hudson.opengeo.org/hudson/job/geoserver-trunk/ws/geoserver/extension/app-schema/app-schema-test/target/app-schema-mock15871data/featureTypes/ex_geomContainer/NestedGeometry.xsd&gt; http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd&quot;&gt;
    <gml:featureMembers>
        <ex:geomContainer gml:id="1">
            <ex:geom>
                <gml:Polygon>
                    <gml:exterior>
                        <gml:LinearRing>
                            <gml:posList>-1.1999999999634965 52.5 -1.1999999999634965 52.6 -1.099999999966089 52.59999999999999 -1.099999999966089 52.5 -1.1999999999634965 52.5</gml:posList>
                        </gml:LinearRing>
                    </gml:exterior>
                </gml:Polygon>
            </ex:geom>
            <ex:nestedFeature>
                <ex:nestedGeom gml:id="nested.2">
                    <ex:geom>
                        <gml:Point>
                            <gml:pos>42.58000004047607 31.29</gml:pos>
                        </gml:Point>
                    </ex:geom>
                </ex:nestedGeom>
            </ex:nestedFeature>
        </ex:geomContainer>
        <ex:geomContainer gml:id="2">
            <ex:geom>
                <gml:Point>
                    <gml:pos>42.58000004047607 31.29</gml:pos>
                </gml:Point>
            </ex:geom>
            <ex:nestedFeature>
                <ex:nestedGeom gml:id="nested.1">
                    <ex:geom>
                        <gml:Polygon>
                            <gml:exterior>
                                <gml:LinearRing>
                                    <gml:posList>-1.1999999999634965 52.5 -1.1999999999634965 52.6 -1.099999999966089 52.59999999999999 -1.099999999966089 52.5 -1.1999999999634965 52.5</gml:posList>
                                </gml:LinearRing>
                            </gml:exterior>
                        </gml:Polygon>
                    </ex:geom>
                </ex:nestedGeom>
            </ex:nestedFeature>
        </ex:geomContainer>
    </gml:featureMembers>
</wfs:FeatureCollection>

Apr 6, 2010 12:44:01 AM org.geoserver.test.SRSWfsTest testFilters
INFO: WFS GetFeature&typename=ex:geomContainer&srsname=urn:x-ogc:def:crs:EPSG::4326&featureid=1response:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection numberOfFeatures="1" timeStamp="2010-04-06T00:44:01.816-04:00" xmlns:ex="http://example.com" xmlns:gml="http://www.opengis.net/gml&quot; xmlns:ogc="http://www.opengis.net/ogc&quot;
    xmlns:ows="http://www.opengis.net/ows&quot; xmlns:wfs="http://www.opengis.net/wfs&quot; xmlns:xlink="http://www.w3.org/1999/xlink&quot; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation="http://example.com <http://hudson.opengeo.org/hudson/job/geoserver-trunk/ws/geoserver/extension/app-schema/app-schema-test/target/app-schema-mock15871data/featureTypes/ex_geomContainer/NestedGeometry.xsd&gt; http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd&quot;&gt;
    <gml:featureMembers>
        <ex:geomContainer gml:id="1">
            <ex:geom>
                <gml:Polygon>
                    <gml:exterior>
                        <gml:LinearRing>
                            <gml:posList>-1.1999999999634965 52.5 -1.1999999999634965 52.6 -1.099999999966089 52.59999999999999 -1.099999999966089 52.5 -1.1999999999634965 52.5</gml:posList>
                        </gml:LinearRing>
                    </gml:exterior>
                </gml:Polygon>
            </ex:geom>
            <ex:nestedFeature>
                <ex:nestedGeom gml:id="nested.2">
                    <ex:geom>
                        <gml:Point>
                            <gml:pos>42.58000004047607 31.29</gml:pos>
                        </gml:Point>
                    </ex:geom>
                </ex:nestedGeom>
            </ex:nestedFeature>
        </ex:geomContainer>
    </gml:featureMembers>
</wfs:FeatureCollection>

Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.742 sec

Results :

Failed tests:
  testGetFeatureContent(org.geoserver.test.FeatureChainingWfsTest)

Tests run: 25, Failures: 1, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] There are test failures.

Please refer to <http://hudson.opengeo.org/hudson/job/geoserver-trunk/ws/geoserver/extension/app-schema/app-schema-test/target/surefire-reports&gt; for the individual test results.
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7 minutes 41 seconds
[INFO] Finished at: Tue Apr 06 00:44:02 EDT 2010
[INFO] Final Memory: 51M/143M
[INFO] ------------------------------------------------------------------------
Failed to send e-mail to riniangreani because no e-mail address is known, and no default e-mail domain is configured

See <http://hudson.opengeo.org/hudson/job/geoserver-trunk/2548/&gt;