/** * Copyright 2005-2014 Restlet * * The contents of this file are subject to the terms of one of the following * open source licenses: Apache 2.0 or or EPL 1.0 (the "Licenses"). You can * select the license that you prefer but you may not use this file except in * compliance with one of these Licenses. * * You can obtain a copy of the Apache 2.0 license at * http://www.opensource.org/licenses/apache-2.0 * * You can obtain a copy of the EPL 1.0 license at * http://www.opensource.org/licenses/eclipse-1.0 * * See the Licenses for the specific language governing permissions and * limitations under the Licenses. * * Alternatively, you can obtain a royalty free commercial license with less * limitations, transferable or non-transferable, directly at * http://restlet.com/products/restlet-framework * * Restlet is a registered trademark of Restlet S.A.S. */ package org.restlet.test.regression; import java.io.IOException; import java.io.InputStream; import junit.framework.TestCase; import org.restlet.data.MediaType; import org.restlet.ext.xml.DomRepresentation; import org.restlet.ext.xml.SaxRepresentation; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; import org.xml.sax.InputSource; /** * Simple test case to illustrate defect #717 and validate the fix when applied. */ public class Bug717TestCase extends TestCase { private static final String RESTLET_XML = "<?xml version=\"1.0\"?>\n" + "<component xmlns=\"http://restlet.org/schemas/2.0/Component\">\n" + "<server protocol=\"HTTP\" port=\"9090\"/>\n" + "<server protocol=\"HTTP\" port=\"9091\"/>\n" + "<defaultHost hostPort=\"9091\">\n" + "<attach uriPattern=\"/abcd\" targetClass=\"org.restlet.test.HelloWorldApplication\"/>\n" + "</defaultHost>\n" + "<host hostPort=\"9090\">\n" + "<attach uriPattern=\"/efgh\" targetClass=\"org.restlet.test.HelloWorldApplication\"/>\n" + "</host>\n" + "</component>\n"; public void test() throws IOException { InputStream inStr = getClass().getResourceAsStream( "/org/restlet/Component.xsd"); assertNotNull("Component.xsd input stream MUST NOT be null", inStr); InputSource inSrc = new InputSource(inStr); assertNotNull("Component.xsd SAX input source MUST NOT be null", inSrc); SaxRepresentation schema = new SaxRepresentation( MediaType.APPLICATION_W3C_SCHEMA, inSrc); assertNotNull("Component.xsd SAX Representation MUST NOT be null", schema); Representation xmlRep = new StringRepresentation(RESTLET_XML); assertNotNull("Restlet.xml SAX Representation MUST NOT be null", xmlRep); DomRepresentation xml = new DomRepresentation(xmlRep); assertNotNull("Restlet.xml DOM Representation MUST NOT be null", xml); try { xml.validate(schema); assertTrue(true); } catch (Exception x) { x.printStackTrace(System.err); fail("Bug717TestCase - Failed validating a correct restlet.xml " + "representation against the current Component W3C schema: " + x.getLocalizedMessage()); } } }