You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by bi...@apache.org on 2009/08/30 23:40:13 UTC
svn commit: r809421 - in /cxf/trunk: parent/ rt/core/
rt/testsupport/src/main/java/org/apache/cxf/test/
Author: bimargulies
Date: Sun Aug 30 21:40:12 2009
New Revision: 809421
URL: http://svn.apache.org/viewvc?rev=809421&view=rev
Log:
Try to resolve build problems. Never again forget to delete my maven repo and run a build after rearranging things.
Added:
cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/
cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/AbstractCXFSpringTest.java (with props)
cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/AbstractCXFTest.java (with props)
cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/XPathAssert.java (with props)
Modified:
cxf/trunk/parent/pom.xml
cxf/trunk/rt/core/pom.xml
Modified: cxf/trunk/parent/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/parent/pom.xml?rev=809421&r1=809420&r2=809421&view=diff
==============================================================================
--- cxf/trunk/parent/pom.xml (original)
+++ cxf/trunk/parent/pom.xml Sun Aug 30 21:40:12 2009
@@ -1195,7 +1195,7 @@
<profile>
<id>fastinstall</id>
<properties>
- <maven.test.skip>true</maven.test.skip>
+ <maven.test.skip.exec>true</maven.test.skip.exec>
<pmd.skip>true</pmd.skip>
<checkstyle.skip>true</checkstyle.skip>
</properties>
Modified: cxf/trunk/rt/core/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/pom.xml?rev=809421&r1=809420&r2=809421&view=diff
==============================================================================
--- cxf/trunk/rt/core/pom.xml (original)
+++ cxf/trunk/rt/core/pom.xml Sun Aug 30 21:40:12 2009
@@ -39,6 +39,7 @@
<executions>
<execution>
<id>create-test-jar</id>
+ <phase>install</phase>
<goals>
<goal>test-jar</goal>
</goals>
Added: cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/AbstractCXFSpringTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/AbstractCXFSpringTest.java?rev=809421&view=auto
==============================================================================
--- cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/AbstractCXFSpringTest.java (added)
+++ cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/AbstractCXFSpringTest.java Sun Aug 30 21:40:12 2009
@@ -0,0 +1,118 @@
+/**
+ * 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.cxf.test;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusException;
+import org.junit.After;
+import org.junit.Before;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.GenericApplicationContext;
+import org.springframework.core.io.DefaultResourceLoader;
+import org.springframework.core.io.Resource;
+
+/**
+ * Base class for tests that use a Spring bean specification to load up components for testing.
+ * Unlike the classes that come with Spring, it doesn't drag in the JUnit 3 hierarchy, and it
+ * doesn't inject into the test itself from the beans.
+ */
+public abstract class AbstractCXFSpringTest extends AbstractCXFTest {
+ // subvert JUnit. We want to set up the application context ONCE, since it
+ // is likely to include a Jetty or something else that we can't get rid of.
+ private static GenericApplicationContext applicationContext;
+ private DefaultResourceLoader resourceLoader;
+ private Class<?> configContextClass = AbstractCXFSpringTest.class;
+ /**
+ * Load up all the beans from the XML files returned by the getConfigLocations method.
+ * @throws Exception
+ */
+ protected AbstractCXFSpringTest() {
+ }
+
+ @Before
+ public void setupBeans() throws Exception {
+ if (applicationContext != null) {
+ return;
+ }
+ applicationContext = new GenericApplicationContext();
+ resourceLoader = new DefaultResourceLoader(configContextClass.getClassLoader());
+ for (String beanDefinitionPath : getConfigLocations()) {
+ XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(applicationContext);
+ Resource resource = resourceLoader.getResource(beanDefinitionPath);
+ reader.loadBeanDefinitions(resource);
+ }
+ additionalSpringConfiguration(applicationContext);
+ applicationContext.refresh();
+ super.setUpBus();
+ }
+
+ @Before
+ public void setUpBus() throws Exception {
+ // override the super before method
+ }
+
+ public Bus createBus() throws BusException {
+ return getBean(Bus.class, "cxf");
+ }
+
+ @After
+ public void teardownBeans() {
+ applicationContext.close();
+ applicationContext.destroy();
+ applicationContext = null;
+ }
+
+ /**
+ * Return an array of resource specifications.
+ * @see org.springframework.core.io.DefaultResourceLoader for the syntax.
+ * @return array of resource specifications.
+ */
+ protected abstract String[] getConfigLocations();
+
+ protected ApplicationContext getApplicationContext() {
+ return applicationContext;
+ }
+
+ /**
+ * subclasses may override this.
+ * @param context
+ * @throws Exception
+ */
+ protected void additionalSpringConfiguration(GenericApplicationContext context) throws Exception {
+ //default - do nothing
+ }
+
+ /**
+ * Convenience method for the common case of retrieving a bean from the context.
+ * One would expect Spring to have this.
+ * @param <T> Type of the bean object.
+ * @param type Type of the bean object.
+ * @param beanName ID of the bean.
+ * @return The Bean.
+ */
+ protected <T> T getBean(Class<T> type, String beanName) {
+ return type.cast(applicationContext.getBean(beanName));
+ }
+
+ protected void setConfigContextClass(Class<?> configContextClass) {
+ this.configContextClass = configContextClass;
+ }
+}
Propchange: cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/AbstractCXFSpringTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/AbstractCXFTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/AbstractCXFTest.java?rev=809421&view=auto
==============================================================================
--- cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/AbstractCXFTest.java (added)
+++ cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/AbstractCXFTest.java Sun Aug 30 21:40:12 2009
@@ -0,0 +1,197 @@
+/**
+ * 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.cxf.test;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.Reader;
+import java.util.Map;
+
+import javax.wsdl.WSDLException;
+import javax.xml.namespace.NamespaceContext;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusException;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.endpoint.Server;
+import org.apache.cxf.helpers.MapNamespaceContext;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+
+
+/**
+ * A basic test case meant for helping users unit test their services.
+ * @see TestUtilities
+ */
+@org.junit.Ignore
+public class AbstractCXFTest extends Assert {
+
+ protected TestUtilities testUtilities;
+ protected Bus bus;
+
+ protected AbstractCXFTest() {
+ testUtilities = new TestUtilities(getClass());
+ testUtilities.addDefaultNamespaces();
+ }
+
+ @Before
+ public void setUpBus() throws Exception {
+ if (bus == null) {
+ bus = createBus();
+ testUtilities.setBus(bus);
+ }
+ }
+
+ public Bus getBus() {
+ return bus;
+ }
+
+ @After
+ public void shutdownBus() {
+ if (bus != null) {
+ bus.shutdown(false);
+ bus = null;
+ }
+ BusFactory.setDefaultBus(null);
+ }
+
+
+ protected Bus createBus() throws BusException {
+ return BusFactory.newInstance().createBus();
+ }
+
+ protected byte[] invokeBytes(String address,
+ String transport,
+ String message) throws Exception {
+ return testUtilities.invokeBytes(address, transport, message);
+ }
+
+ protected Node invoke(String address,
+ String transport,
+ String message) throws Exception {
+ return testUtilities.invoke(address, transport, message);
+ }
+
+ protected Node invoke(String address,
+ String transport,
+ byte[] message) throws Exception {
+ return testUtilities.invoke(address, transport, message);
+ }
+
+ /**
+ * Assert that the following XPath query selects one or more nodes.
+ *
+ * @param xpath
+ * @throws Exception
+ */
+ public NodeList assertValid(String xpath, Node node) throws Exception {
+ return testUtilities.assertValid(xpath, node);
+ }
+
+ /**
+ * Assert that the following XPath query selects a boolean value.
+ *
+ * @param xpath
+ * @throws Exception
+ */
+ public void assertValidBoolean(String xpath, Node node) throws Exception {
+ testUtilities.assertValidBoolean(xpath, node);
+ }
+ /**
+ * Assert that the following XPath query selects no nodes.
+ *
+ * @param xpath
+ */
+ public NodeList assertInvalid(String xpath, Node node) throws Exception {
+ return testUtilities.assertInvalid(xpath, node);
+ }
+
+ /**
+ * Assert that the text of the xpath node retrieved is equal to the value
+ * specified.
+ *
+ * @param xpath
+ * @param value
+ * @param node
+ */
+ public void assertXPathEquals(String xpath, String value, Node node) throws Exception {
+ testUtilities.assertXPathEquals(xpath, value, node);
+ }
+
+ /**
+ * Assert that this node is not a SOAP fault part.
+ * @param node
+ * @throws Exception
+ */
+ public void assertNoFault(Node node) throws Exception {
+ testUtilities.assertNoFault(node);
+ }
+
+ /**
+ * Add a namespace that will be used for XPath expressions.
+ *
+ * @param ns Namespace name.
+ * @param uri The namespace uri.
+ */
+ public void addNamespace(String ns, String uri) {
+ testUtilities.addNamespace(ns, uri);
+ }
+
+ public NamespaceContext getNamespaceContext() {
+ return new MapNamespaceContext(testUtilities.getNamespaces());
+ }
+
+ public Map<String, String> getNamespaces() {
+ return testUtilities.getNamespaces();
+ }
+
+ protected InputStream getResourceAsStream(String resource) {
+ return testUtilities.getResourceAsStream(resource);
+ }
+
+ protected Reader getResourceAsReader(String resource) {
+ return testUtilities.getResourceAsReader(resource);
+ }
+
+ public File getTestFile(String relativePath) {
+ return testUtilities.getTestFile(relativePath);
+ }
+
+ public static String getBasedir() {
+ return TestUtilities.getBasedir();
+ }
+
+ protected Document getWSDLDocument(Server server) throws WSDLException {
+ return testUtilities.getWSDLDocument(server);
+ }
+
+ public static class TestMessageObserver extends TestUtilities.TestMessageObserver {
+
+ public TestMessageObserver() {
+ super();
+ }
+ }
+}
Propchange: cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/AbstractCXFTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/XPathAssert.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/XPathAssert.java?rev=809421&view=auto
==============================================================================
--- cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/XPathAssert.java (added)
+++ cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/XPathAssert.java Sun Aug 30 21:40:12 2009
@@ -0,0 +1,211 @@
+/**
+ * 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.cxf.test;
+
+import java.io.ByteArrayOutputStream;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.transform.TransformerException;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathFactory;
+
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import junit.framework.Assert;
+import junit.framework.AssertionFailedError;
+
+import org.apache.cxf.helpers.DOMUtils;
+
+/**
+ * XPath test assertions.
+ *
+ * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
+ */
+public final class XPathAssert {
+ private XPathAssert() {
+ }
+
+ /**
+ * Assert that the following XPath query selects one or more nodes.
+ *
+ * @param xpath
+ */
+ public static NodeList assertValid(String xpath, Node node, Map<String, String> namespaces)
+ throws Exception {
+ if (node == null) {
+ throw new NullPointerException("Node cannot be null.");
+ }
+
+ NodeList nodes = (NodeList)createXPath(namespaces).evaluate(xpath, node, XPathConstants.NODESET);
+
+ if (nodes.getLength() == 0) {
+ throw new AssertionFailedError("Failed to select any nodes for expression:\n" + xpath
+ + " from document:\n" + writeNodeToString(node));
+ }
+
+ return nodes;
+ }
+ /**
+ * Assert that the following XPath query selects one or more nodes.
+ *
+ * @param xpath
+ */
+ public static void assertValidBoolean(String xpath, Node node, Map<String, String> namespaces)
+ throws Exception {
+ if (node == null) {
+ throw new NullPointerException("Node cannot be null.");
+ }
+
+ Boolean b = (Boolean)createXPath(namespaces).evaluate(xpath, node, XPathConstants.BOOLEAN);
+
+ if (b == null) {
+ throw new AssertionFailedError("Failed to select any nodes for expression:\n" + xpath
+ + " from document:\n" + writeNodeToString(node));
+ }
+
+ if (!b.booleanValue()) {
+ throw new AssertionFailedError("Boolean XPath assertion evaluated to false:\n"
+ + xpath
+ + " from document:\n" + writeNodeToString(node));
+ }
+ }
+
+ private static String writeNodeToString(Node node) {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ try {
+ DOMUtils.writeXml(node, bos);
+ } catch (TransformerException e) {
+ throw new RuntimeException(e);
+ }
+ return bos.toString();
+ }
+
+ /**
+ * Assert that the following XPath query selects no nodes.
+ *
+ * @param xpath
+ */
+ public static NodeList assertInvalid(String xpath, Node node, Map<String, String> namespaces)
+ throws Exception {
+ if (node == null) {
+ throw new NullPointerException("Node cannot be null.");
+ }
+
+ NodeList nodes = (NodeList)createXPath(namespaces).evaluate(xpath, node, XPathConstants.NODESET);
+
+ if (nodes.getLength() > 0) {
+ String value = writeNodeToString(node);
+
+ throw new AssertionFailedError("Found multiple nodes for expression:\n" + xpath + "\n" + value);
+ }
+
+ return nodes;
+ }
+
+ /**
+ * Asser that the text of the xpath node retrieved is equal to the value
+ * specified.
+ *
+ * @param xpath
+ * @param value
+ * @param node
+ */
+ public static void assertXPathEquals(String xpath,
+ String value,
+ Node node,
+ Map<String, String> namespaces)
+ throws Exception {
+ Node result = (Node)createXPath(namespaces).evaluate(xpath, node, XPathConstants.NODE);
+ if (result == null) {
+ throw new AssertionFailedError("No nodes were found for expression: "
+ + xpath
+ + " in document "
+ + writeNodeToString(node));
+ }
+
+ String value2 = DOMUtils.getContent(result);
+
+ Assert.assertEquals(value, value2);
+ }
+
+ public static void assertNoFault(Node node) throws Exception {
+ Map<String, String> namespaces = new HashMap<String, String>();
+ namespaces.put("s", "http://schemas.xmlsoap.org/soap/envelope/");
+ namespaces.put("s12", "http://www.w3.org/2003/05/soap-envelope");
+
+ assertInvalid("/s:Envelope/s:Body/s:Fault", node, namespaces);
+ assertInvalid("/s12:Envelope/s12:Body/s12:Fault", node, namespaces);
+ }
+
+ public static void assertFault(Node node) throws Exception {
+ Map<String, String> namespaces = new HashMap<String, String>();
+ namespaces.put("s", "http://schemas.xmlsoap.org/soap/envelope/");
+ namespaces.put("s12", "http://www.w3.org/2003/05/soap-envelope");
+
+ assertValid("/s:Envelope/s:Body/s:Fault", node, namespaces);
+ assertValid("/s12:Envelope/s12:Body/s12:Fault", node, namespaces);
+ }
+
+ /**
+ * Create the specified XPath expression with the namespaces added via
+ * addNamespace().
+ */
+ public static XPath createXPath(Map<String, String> namespaces) throws Exception {
+ XPath xpath = XPathFactory.newInstance().newXPath();
+
+ if (namespaces != null) {
+ xpath.setNamespaceContext(new MapNamespaceContext(namespaces));
+ }
+
+ return xpath;
+ }
+
+ static class MapNamespaceContext implements NamespaceContext {
+ private Map<String, String> namespaces;
+
+ public MapNamespaceContext(Map<String, String> namespaces) {
+ super();
+ this.namespaces = namespaces;
+ }
+
+ public String getNamespaceURI(String prefix) {
+ return namespaces.get(prefix);
+ }
+
+ public String getPrefix(String namespaceURI) {
+ for (Map.Entry<String, String> e : namespaces.entrySet()) {
+ if (e.getValue().equals(namespaceURI)) {
+ return e.getKey();
+ }
+ }
+ return null;
+ }
+
+ public Iterator getPrefixes(String namespaceURI) {
+ return null;
+ }
+
+ }
+}
Propchange: cxf/trunk/rt/testsupport/src/main/java/org/apache/cxf/test/XPathAssert.java
------------------------------------------------------------------------------
svn:eol-style = native