From e5a41a148acdaa3fdc535667ed88b25b18e56997 Mon Sep 17 00:00:00 2001 From: "Adrian T. Co" Date: Thu, 14 Jun 2007 15:18:31 +0000 Subject: [PATCH] Backported spring configuration fix to 4.1. https://issues.apache.org/activemq/browse/AMQ-1276 git-svn-id: https://svn.apache.org/repos/asf/activemq/branches/activemq-4.1@547274 13f79535-47bb-0310-9956-ffa450edef68 --- .../main/resources/META-INF/spring.schemas | 8 ++ .../spring/Spring2XmlNamespacesTest.java | 24 +++++ ...2XmlNamespacesWithoutRemoteSchemaTest.java | 24 +++++ .../activemq/spring/SpringConsumer.java | 15 +-- .../apache/activemq/spring/SpringTest.java | 75 +-------------- .../activemq/spring/SpringTestSupport.java | 92 +++++++++++++++++++ .../spring-embedded-xbean-noversion.xml | 80 ++++++++++++++++ .../test/resources/spring-embedded-xbean.xml | 2 +- 8 files changed, 239 insertions(+), 81 deletions(-) create mode 100644 activemq-core/src/main/resources/META-INF/spring.schemas create mode 100644 activemq-core/src/test/java/org/apache/activemq/spring/Spring2XmlNamespacesTest.java create mode 100644 activemq-core/src/test/java/org/apache/activemq/spring/Spring2XmlNamespacesWithoutRemoteSchemaTest.java create mode 100644 activemq-core/src/test/java/org/apache/activemq/spring/SpringTestSupport.java create mode 100644 activemq-core/src/test/resources/spring-embedded-xbean-noversion.xml diff --git a/activemq-core/src/main/resources/META-INF/spring.schemas b/activemq-core/src/main/resources/META-INF/spring.schemas new file mode 100644 index 0000000000..e5292b5b66 --- /dev/null +++ b/activemq-core/src/main/resources/META-INF/spring.schemas @@ -0,0 +1,8 @@ +# resolve remote XSD documents to local classpath schema +http\://activemq.apache.org/schema/activemq-core.xsd = activemq.xsd +http\://activemq.apache.org/schema/activemq-core-4.1.xsd = activemq.xsd + +# attempt to resolve the namespace URI to a schema if no XSD is mentioned in the doc +# TODO this is EXPERIMENTAL - it might not actually be used! +http\://activemq.org/config/1.0=activemq.xsd +http\://activemq.org/config/1.0/1.0.xsd=activemq.xsd \ No newline at end of file diff --git a/activemq-core/src/test/java/org/apache/activemq/spring/Spring2XmlNamespacesTest.java b/activemq-core/src/test/java/org/apache/activemq/spring/Spring2XmlNamespacesTest.java new file mode 100644 index 0000000000..5291c1c28e --- /dev/null +++ b/activemq-core/src/test/java/org/apache/activemq/spring/Spring2XmlNamespacesTest.java @@ -0,0 +1,24 @@ +/** + * + * 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.activemq.spring; + +public class Spring2XmlNamespacesTest extends SpringTestSupport { + public void testUsingSpringXmlNamespacesWithPublicXsdLocation() throws Exception { + assertSenderConfig("spring-embedded-xbean.xml"); + } +} \ No newline at end of file diff --git a/activemq-core/src/test/java/org/apache/activemq/spring/Spring2XmlNamespacesWithoutRemoteSchemaTest.java b/activemq-core/src/test/java/org/apache/activemq/spring/Spring2XmlNamespacesWithoutRemoteSchemaTest.java new file mode 100644 index 0000000000..8fba9677d8 --- /dev/null +++ b/activemq-core/src/test/java/org/apache/activemq/spring/Spring2XmlNamespacesWithoutRemoteSchemaTest.java @@ -0,0 +1,24 @@ +/** + * + * 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.activemq.spring; + +public class Spring2XmlNamespacesWithoutRemoteSchemaTest extends SpringTestSupport { + public void testUsingSpring2NamespacesForANonExistingXsdDocument() throws Exception { + assertSenderConfig("spring-embedded-xbean-noversion.xml"); + } +} \ No newline at end of file diff --git a/activemq-core/src/test/java/org/apache/activemq/spring/SpringConsumer.java b/activemq-core/src/test/java/org/apache/activemq/spring/SpringConsumer.java index 10e9ea1faf..38a64dee2a 100755 --- a/activemq-core/src/test/java/org/apache/activemq/spring/SpringConsumer.java +++ b/activemq-core/src/test/java/org/apache/activemq/spring/SpringConsumer.java @@ -70,12 +70,15 @@ public class SpringConsumer extends ConsumerBean implements MessageListener { public void stop() throws JMSException { - if( consumer!=null ) - consumer.close(); - if( session!=null ) - session.close(); - if( connection!=null ) - connection.close(); + if (consumer != null) { + consumer.close(); + } + if (session != null) { + session.close(); + } + if (connection != null) { + connection.close(); + } } public void onMessage(Message message) { diff --git a/activemq-core/src/test/java/org/apache/activemq/spring/SpringTest.java b/activemq-core/src/test/java/org/apache/activemq/spring/SpringTest.java index a63e5eabf3..e8367cea5a 100755 --- a/activemq-core/src/test/java/org/apache/activemq/spring/SpringTest.java +++ b/activemq-core/src/test/java/org/apache/activemq/spring/SpringTest.java @@ -15,27 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.activemq.spring; -import java.util.Iterator; -import java.util.List; - -import junit.framework.TestCase; - import org.apache.activemq.broker.BrokerService; -import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; -public class SpringTest extends TestCase { - - private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory - .getLog(SpringTest.class); - - protected AbstractApplicationContext context; - protected SpringConsumer consumer; - protected SpringProducer producer; - +public class SpringTest extends SpringTestSupport { /** * Make sure that brokers are being pooled properly. * @@ -146,62 +131,4 @@ public class SpringTest extends TestCase { String config = "spring-embedded-xbean-local.xml"; assertSenderConfig(config); } - - /** - * assert method that is used by all the test method to send and receive messages - * based on each spring configuration. - * - * @param config - * @throws Exception - */ - protected void assertSenderConfig(String config) throws Exception { - Thread.currentThread().setContextClassLoader(SpringTest.class.getClassLoader()); - context = new ClassPathXmlApplicationContext(config); - - consumer = (SpringConsumer) context.getBean("consumer"); - assertTrue("Found a valid consumer", consumer != null); - - consumer.start(); - - // Wait a little to drain any left over messages. - Thread.sleep(1000); - consumer.flushMessages(); - - producer = (SpringProducer) context.getBean("producer"); - assertTrue("Found a valid producer", producer != null); - - producer.start(); - - // lets sleep a little to give the JMS time to dispatch stuff - consumer.waitForMessagesToArrive(producer.getMessageCount()); - - // now lets check that the consumer has received some messages - List messages = consumer.flushMessages(); - log.info("Consumer has received messages...."); - for (Iterator iter = messages.iterator(); iter.hasNext();) { - Object message = iter.next(); - log.info("Received: " + message); - } - - assertEquals("Message count", producer.getMessageCount(), messages.size()); - } - - /** - * Clean up method. - * - * @throws Exception - */ - protected void tearDown() throws Exception { - if (consumer != null) { - consumer.stop(); - } - if (producer != null) { - producer.stop(); - } - - if (context != null) { - context.destroy(); - } - } - } diff --git a/activemq-core/src/test/java/org/apache/activemq/spring/SpringTestSupport.java b/activemq-core/src/test/java/org/apache/activemq/spring/SpringTestSupport.java new file mode 100644 index 0000000000..954b863502 --- /dev/null +++ b/activemq-core/src/test/java/org/apache/activemq/spring/SpringTestSupport.java @@ -0,0 +1,92 @@ +/** + * + * 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.activemq.spring; + +import junit.framework.TestCase; +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import java.util.Iterator; +import java.util.List; + +/** + * @version $Revision: 1.1 $ + */ +public class SpringTestSupport extends TestCase { + private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(SpringTest.class); + protected AbstractApplicationContext context; + protected SpringConsumer consumer; + protected SpringProducer producer; + + /** + * assert method that is used by all the test method to send and receive messages + * based on each spring configuration. + * + * @param config + * @throws Exception + */ + protected void assertSenderConfig(String config) throws Exception { + Thread.currentThread().setContextClassLoader(SpringTest.class.getClassLoader()); + context = new ClassPathXmlApplicationContext(config); + + consumer = (SpringConsumer) context.getBean("consumer"); + assertTrue("Found a valid consumer", consumer != null); + + consumer.start(); + + // Wait a little to drain any left over messages. + Thread.sleep(1000); + consumer.flushMessages(); + + producer = (SpringProducer) context.getBean("producer"); + assertTrue("Found a valid producer", producer != null); + + producer.start(); + + // lets sleep a little to give the JMS time to dispatch stuff + consumer.waitForMessagesToArrive(producer.getMessageCount()); + + // now lets check that the consumer has received some messages + List messages = consumer.flushMessages(); + log.info("Consumer has received messages...."); + for (Iterator iter = messages.iterator(); iter.hasNext();) { + Object message = iter.next(); + log.info("Received: " + message); + } + + assertEquals("Message count", producer.getMessageCount(), messages.size()); + } + + /** + * Clean up method. + * + * @throws Exception + */ + protected void tearDown() throws Exception { + if (consumer != null) { + consumer.stop(); + } + if (producer != null) { + producer.stop(); + } + + if (context != null) { + context.destroy(); + } + } +} diff --git a/activemq-core/src/test/resources/spring-embedded-xbean-noversion.xml b/activemq-core/src/test/resources/spring-embedded-xbean-noversion.xml new file mode 100644 index 0000000000..09f6e6d8fe --- /dev/null +++ b/activemq-core/src/test/resources/spring-embedded-xbean-noversion.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10 + + + + + + + + + + + + diff --git a/activemq-core/src/test/resources/spring-embedded-xbean.xml b/activemq-core/src/test/resources/spring-embedded-xbean.xml index b6bb0850bc..4b2e9b18dc 100755 --- a/activemq-core/src/test/resources/spring-embedded-xbean.xml +++ b/activemq-core/src/test/resources/spring-embedded-xbean.xml @@ -22,7 +22,7 @@ xmlns:amq="http://activemq.org/config/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd - http://activemq.org/config/1.0 http://people.apache.org/repository/org.apache.activemq/xsds/activemq-core-4.1-SNAPSHOT.xsd"> + http://activemq.org/config/1.0 http://activemq.apache.org/snapshot-schema/activemq-core-4.1-SNAPSHOT.xsd">