提交 c2241ad6 编写于 作者: M Micha Kiener

SPR-6416, tests

上级 3fdfdee3
/*
* Copyright 2002-2008 the original author or authors.
*
* Licensed 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.springframework.conversation;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import org.springframework.conversation.manager.ConversationManager;
import org.springframework.conversation.manager.ConversationStore;
import org.springframework.conversation.scope.ConversationResolver;
/**
* Basic conversation management tests.
*
* @author Micha Kiener
* @since 3.1
*/
public class BasicConversationTests {
private ConfigurableApplicationContext ctx;
private ConversationManager manager;
private ConversationStore store;
private ConversationResolver resolver;
@Before
public void setUp() {
ctx = loadContext(getContextLocation());
manager = ctx.getBean(ConversationManager.class);
store = ctx.getBean(ConversationStore.class);
resolver = ctx.getBean(ConversationResolver.class);
}
@Test
public void testContext() {
ConfigurableApplicationContext context = getContext();
assertNotNull(context);
assertNotNull(manager);
}
@Test
public void testTemporaryConversation() {
ConversationalBean bean = (ConversationalBean) getContext().getBean("testBean");
assertNotNull(bean);
assertNull(bean.getName());
String id = resolver.getCurrentConversationId();
assertNotNull(id);
Conversation conversation = store.getConversation(id);
assertNotNull(conversation);
assertTrue(conversation.isTemporary());
Object attribute = conversation.getAttribute("testBean");
assertNotNull(attribute);
assertSame(bean, attribute);
conversation.end(ConversationEndingType.SUCCESS);
assertTrue(conversation.isEnded());
assertNull(resolver.getCurrentConversationId());
}
protected String getContextLocation() {
return "org/springframework/conversation/conversationTestContext.xml";
}
protected ConfigurableApplicationContext loadContext(String configLocation) {
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(getContextLocation());
return ctx;
}
protected ConfigurableApplicationContext getContext() {
return ctx;
}
}
/*
* Copyright 2002-2008 the original author or authors.
*
* Licensed 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.springframework.conversation;
/**
* A simple bean, having "conversation" scope.
*
* @author Micha Kiener
* @since 3.1
*/
public class ConversationalBean {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
/*
* Copyright 2002-2008 the original author or authors.
*
* Licensed 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.springframework.conversation;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.PostConstruct;
import org.springframework.conversation.manager.AbstractConversationStore;
/**
* @author Micha Kiener
* @since 3.1
*/
public class SingletonConversationStore extends AbstractConversationStore {
/** The map for the conversation storage. */
private Map<String, Conversation> conversationMap;
@PostConstruct
public void initialize() {
conversationMap = new HashMap<String, Conversation>();
}
/**
* @see org.springframework.conversation.manager.AbstractConversationStore#getConversationMap()
*/
@Override
public Map<String, Conversation> getConversationMap() {
return conversationMap;
}
/**
* @see org.springframework.conversation.manager.AbstractConversationStore#getConversationMapFallback()
*/
@Override
public Map<String, Conversation> getConversationMapFallback() {
return conversationMap;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config />
<bean id="conversationManager" class="org.springframework.conversation.manager.ConversationManagerImpl">
<property name="defaultConversationTimeout" value="0"/>
<property name="conversationStore" ref="conversationStore"/>
<property name="conversationResolver" ref="conversationResolver"/>
</bean>
<bean id="conversationStore" class="org.springframework.conversation.SingletonConversationStore">
<property name="useFallbackMap" value="false"/>
</bean>
<bean id="conversationResolver" class="org.springframework.conversation.scope.ThreadAttachedConversationResolver" />
<bean id="conversationScope" class="org.springframework.conversation.scope.DefaultConversationScope" lazy-init="false">
<property name="conversationManager" ref="conversationManager"/>
<property name="conversationStore" ref="conversationStore"/>
<property name="conversationResolver" ref="conversationResolver"/>
</bean>
<bean id="testBean" class="org.springframework.conversation.ConversationalBean" scope="conversation"/>
</beans>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册