Java tutorial
/** * 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.hadoop.gateway.descriptor.xml; import org.apache.hadoop.gateway.descriptor.FilterDescriptor; import org.apache.hadoop.gateway.descriptor.FilterParamDescriptor; import org.apache.hadoop.gateway.descriptor.GatewayDescriptor; import org.apache.hadoop.gateway.descriptor.GatewayDescriptorFactory; import org.apache.hadoop.gateway.descriptor.ResourceDescriptor; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.junit.Test; import java.io.IOException; import java.io.PrintStream; import java.io.Reader; import java.io.StringReader; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.core.IsNull.notNullValue; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; public class XmlGatewayDescriptorImporterTest { @Test public void testFormat() { XmlGatewayDescriptorImporter importer = new XmlGatewayDescriptorImporter(); assertThat(importer.getFormat(), is("xml")); } @Test public void testXmlGatewayDescriptorLoad() throws IOException { String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" + "<gateway>\n" + " <resource>\n" + " <pattern>resource1-source</pattern>\n" + // " <target>resource1-target</target>\n" + " <filter>\n" + " <role>resource1-filter1-role</role>\n" + " <class>resource1-filter1-impl</class>\n" + " <param>\n" + " <name>resource1-filter1-param1-name</name>\n" + " <value>resource1-filter1-param1-value</value>\n" + " </param>\n" + " <param>\n" + " <name>resource1-filter1-param2-name</name>\n" + " <value>resource1-filter1-param2-value</value>\n" + " </param>\n" + " </filter>\n" + " <filter>\n" + " <role>resource1-filter2-role</role>\n" + " <class>resource1-filter2-impl</class>\n" + " </filter>\n" + " </resource>\n" + " <resource>\n" + " <pattern>resource2-source</pattern>\n" + // " <target>resource2-target</target>\n" + " </resource>\n" + "</gateway>"; Reader reader = new StringReader(xml); GatewayDescriptor descriptor = GatewayDescriptorFactory.load("xml", reader); assertThat(descriptor, notNullValue()); assertThat(descriptor.resources().size(), is(2)); ResourceDescriptor resource1 = descriptor.resources().get(0); assertThat(resource1, notNullValue()); assertThat(resource1.pattern(), is("resource1-source")); assertThat(resource1.filters().size(), is(2)); FilterDescriptor filter1 = resource1.filters().get(0); assertThat(filter1, notNullValue()); assertThat(filter1.role(), is("resource1-filter1-role")); assertThat(filter1.impl(), is("resource1-filter1-impl")); assertThat(filter1.params().size(), is(2)); FilterParamDescriptor param1 = filter1.params().get(0); assertThat(param1, notNullValue()); assertThat(param1.name(), is("resource1-filter1-param1-name")); assertThat(param1.value(), is("resource1-filter1-param1-value")); FilterParamDescriptor param2 = filter1.params().get(1); assertThat(param2, notNullValue()); assertThat(param2.name(), is("resource1-filter1-param2-name")); assertThat(param2.value(), is("resource1-filter1-param2-value")); FilterDescriptor filter2 = resource1.filters().get(1); assertThat(filter2, notNullValue()); assertThat(filter2.role(), is("resource1-filter2-role")); assertThat(filter2.impl(), is("resource1-filter2-impl")); ResourceDescriptor resource2 = descriptor.resources().get(1); assertThat(resource2, notNullValue()); assertThat(resource2.pattern(), is("resource2-source")); } @Test public void testXmlGatewayDescriptorLoadEmpty() throws IOException { String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" + "<gateway>\n" + " <resource>\n" + " <filter>\n" + " <param>\n" + " </param>\n" + " </filter>\n" + " </resource>\n" + "</gateway>"; Reader reader = new StringReader(xml); GatewayDescriptor descriptor = GatewayDescriptorFactory.load("xml", reader); assertThat(descriptor, notNullValue()); assertThat(descriptor.resources().size(), is(1)); ResourceDescriptor resource1 = descriptor.resources().get(0); assertThat(resource1, notNullValue()); assertThat(resource1.filters().size(), is(1)); FilterDescriptor filter1 = resource1.filters().get(0); assertThat(filter1, notNullValue()); assertThat(filter1.params().size(), is(1)); FilterParamDescriptor param1 = filter1.params().get(0); assertThat(param1, notNullValue()); } @Test public void testXmlGatewayDescriptorLoadInvalid() throws IOException { String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" + "<gateway>\n" + " <resource>\n" + " <filter>\n" + " <param>"; Reader reader = new StringReader(xml); // Keep the tests quiet. Ignore the stack trace that ends up being written to System.out. Logger logger = Logger.getLogger("org.apache.commons.digester3.Digester"); Level level = logger.getLevel(); logger.setLevel(Level.OFF); PrintStream out = System.out; System.setOut(null); try { GatewayDescriptorFactory.load("xml", reader); fail("Should have thrown IOException"); } catch (IOException e) { assertThat(e.getMessage(), containsString("org.xml.sax.SAXParseException")); } finally { System.setOut(out); logger.setLevel(level); } } }