added more tests for using a remote schema using the nice new URLs

git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@547211 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
James Strachan 2007-06-14 10:49:36 +00:00
parent 8a4fcd1934
commit 67310ad7dd
10 changed files with 254 additions and 104 deletions

View File

@ -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-5.0.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

View File

@ -17,17 +17,16 @@
*/
package org.apache.activemq.spring;
import junit.framework.Assert;
import javax.jms.Message;
import javax.jms.MessageListener;
import java.util.ArrayList;
import java.util.List;
import junit.framework.Assert;
public class ConsumerBean extends Assert implements MessageListener {
private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory
.getLog(ConsumerBean.class);
private List messages = new ArrayList();
private Object semaphore;
private boolean verbose;

View File

@ -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");
}
}

View File

@ -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");
}
}

View File

@ -15,7 +15,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.activemq.spring;
import org.apache.commons.logging.Log;
@ -33,7 +32,6 @@ import javax.jms.Session;
public class SpringConsumer extends ConsumerBean implements MessageListener {
private static final Log log = LogFactory.getLog(SpringConsumer.class);
private JmsTemplate template;
private String myId = "foo";
private Destination destination;
@ -68,15 +66,17 @@ public class SpringConsumer extends ConsumerBean implements MessageListener {
}
}
public void stop() throws JMSException {
if( consumer!=null )
if (consumer != null) {
consumer.close();
if( session!=null )
}
if (session != null) {
session.close();
if( connection!=null )
}
if (connection != null) {
connection.close();
}
}
public void onMessage(Message message) {
super.onMessage(message);

View File

@ -27,15 +27,12 @@ import javax.jms.Session;
import javax.jms.TextMessage;
public class SpringProducer {
private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory
.getLog(SpringProducer.class);
private JmsTemplate template;
private Destination destination;
private int messageCount = 10;
public void start() throws JMSException {
for (int i = 0; i < messageCount; i++) {
final String text = "Text for message: " + i;

View File

@ -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.
*
@ -77,7 +62,6 @@ public class SpringTest extends TestCase {
// Should stop once all contexts close.
context1.close();
assertFalse(bs1.isStarted());
}
/**
@ -146,62 +130,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();
}
}
}

View File

@ -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();
}
}
}

View File

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<!-- START SNIPPET: spring -->
<beans
xmlns="http://www.springframework.org/schema/beans"
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://activemq.apache.org/schema/activemq-core.xsd">
<!-- lets create an embedded ActiveMQ Broker -->
<amq:broker useJmx="false" persistent="false">
<amq:transportConnectors>
<amq:transportConnector uri="tcp://localhost:0" />
</amq:transportConnectors>
</amq:broker>
<!-- ActiveMQ destinations to use -->
<amq:queue id="destination" physicalName="org.apache.activemq.spring.Test.spring.embedded"/>
<!-- JMS ConnectionFactory to use, configuring the embedded broker using XML -->
<amq:connectionFactory id="jmsFactory" brokerURL="vm://localhost"/>
<!-- Spring JMS Template -->
<bean id="myJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<!-- lets wrap in a pool to avoid creating a connection per send -->
<bean class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory">
<ref local="jmsFactory" />
</property>
</bean>
</property>
</bean>
<bean id="consumerJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsFactory"/>
</bean>
<!-- a sample POJO which uses a Spring JmsTemplate -->
<bean id="producer" class="org.apache.activemq.spring.SpringProducer">
<property name="template">
<ref bean="myJmsTemplate"></ref>
</property>
<property name="destination">
<ref bean="destination" />
</property>
<property name="messageCount">
<value>10</value>
</property>
</bean>
<!-- a sample POJO consumer -->
<bean id="consumer" class="org.apache.activemq.spring.SpringConsumer">
<property name="template" ref="consumerJmsTemplate"/>
<property name="destination" ref="destination"/>
</bean>
</beans>
<!-- END SNIPPET: spring -->

View File

@ -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-5.0-SNAPSHOT.xsd">
http://activemq.org/config/1.0 http://activemq.apache.org/snapshot-schema/activemq-core-5.0-SNAPSHOT.xsd">
<!-- lets create an embedded ActiveMQ Broker -->
<amq:broker useJmx="false" persistent="false">