Author: maarten
Date: Fri Jan 11 14:40:46 2008
New Revision: 611323
URL: http://svn.apache.org/viewvc?rev=611323&view=rev
Log:
fixed DIRMINA-510 : Spring version of chat example breaks + added junit test
Added:
mina/trunk/example/src/test/java/org/apache/mina/example/chat/
mina/trunk/example/src/test/java/org/apache/mina/example/chat/SpringMainTest.java
(with props)
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/ssl/KeyStoreFactory.java
mina/trunk/core/src/test/java/org/apache/mina/filter/ssl/KeyStoreFactoryTest.java
mina/trunk/example/src/main/java/org/apache/mina/example/chat/SpringMain.java
mina/trunk/example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/ssl/KeyStoreFactory.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/ssl/KeyStoreFactory.java?rev=611323&r1=611322&r2=611323&view=diff
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/filter/ssl/KeyStoreFactory.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/filter/ssl/KeyStoreFactory.java
Fri Jan 11 14:40:46 2008
@@ -57,7 +57,7 @@
throw new IllegalStateException("data property is not set.");
}
- KeyStore ks = null;
+ KeyStore ks;
if (provider == null) {
ks = KeyStore.getInstance(type);
} else {
@@ -133,7 +133,7 @@
*
* @param dataStream the [EMAIL PROTECTED] InputStream} that contains the
key store
*/
- public void setData(InputStream dataStream) throws IOException {
+ private void setData(InputStream dataStream) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
for (;;) {
@@ -141,10 +141,8 @@
if (data < 0) {
break;
}
-
out.write(data);
}
-
setData(out.toByteArray());
} finally {
try {
@@ -160,7 +158,7 @@
*
* @param dataFile the [EMAIL PROTECTED] File} that contains the key store
*/
- public void setData(File dataFile) throws IOException {
+ public void setDataFile(File dataFile) throws IOException {
setData(new BufferedInputStream(new FileInputStream(dataFile)));
}
@@ -169,7 +167,7 @@
*
* @param dataUrl the [EMAIL PROTECTED] URL} that contains the key store.
*/
- public void setData(URL dataUrl) throws IOException {
+ public void setDataUrl(URL dataUrl) throws IOException {
setData(dataUrl.openStream());
}
}
Modified:
mina/trunk/core/src/test/java/org/apache/mina/filter/ssl/KeyStoreFactoryTest.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/test/java/org/apache/mina/filter/ssl/KeyStoreFactoryTest.java?rev=611323&r1=611322&r2=611323&view=diff
==============================================================================
---
mina/trunk/core/src/test/java/org/apache/mina/filter/ssl/KeyStoreFactoryTest.java
(original)
+++
mina/trunk/core/src/test/java/org/apache/mina/filter/ssl/KeyStoreFactoryTest.java
Fri Jan 11 14:40:46 2008
@@ -37,7 +37,7 @@
public void testCreateInstanceFromResource() throws Exception {
// Test using default for now.
KeyStoreFactory factory = new KeyStoreFactory();
- factory.setData(getClass().getResource("keystore.cert"));
+ factory.setDataUrl(getClass().getResource("keystore.cert"));
factory.setPassword("boguspw");
KeyStore ks = factory.newInstance();
@@ -61,7 +61,7 @@
// Test using default for now.
KeyStoreFactory factory = new KeyStoreFactory();
- factory.setData(file);
+ factory.setDataFile(file);
factory.setPassword("boguspw");
KeyStore ks = factory.newInstance();
Modified:
mina/trunk/example/src/main/java/org/apache/mina/example/chat/SpringMain.java
URL:
http://svn.apache.org/viewvc/mina/trunk/example/src/main/java/org/apache/mina/example/chat/SpringMain.java?rev=611323&r1=611322&r2=611323&view=diff
==============================================================================
---
mina/trunk/example/src/main/java/org/apache/mina/example/chat/SpringMain.java
(original)
+++
mina/trunk/example/src/main/java/org/apache/mina/example/chat/SpringMain.java
Fri Jan 11 14:40:46 2008
@@ -20,6 +20,7 @@
package org.apache.mina.example.chat;
import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.context.ConfigurableApplicationContext;
/**
* (<b>Entry point</b>) Chat server which uses Spring and the serverContext.xml
@@ -38,11 +39,11 @@
.println("JMX disabled. Please set the "
+ "'com.sun.management.jmxremote' system property
to enable JMX.");
}
- new ClassPathXmlApplicationContext(getApplicationContext());
+ getApplicationContext();
System.out.println("Listening ...");
}
- public static String getApplicationContext() {
- return "org/apache/mina/example/chat/serverContext.xml";
+ public static ConfigurableApplicationContext getApplicationContext() {
+ return new
ClassPathXmlApplicationContext("org/apache/mina/example/chat/serverContext.xml");
}
}
Modified:
mina/trunk/example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
URL:
http://svn.apache.org/viewvc/mina/trunk/example/src/main/resources/org/apache/mina/example/chat/serverContext.xml?rev=611323&r1=611322&r2=611323&view=diff
==============================================================================
---
mina/trunk/example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
(original)
+++
mina/trunk/example/src/main/resources/org/apache/mina/example/chat/serverContext.xml
Fri Jan 11 14:40:46 2008
@@ -19,62 +19,74 @@
<bean id="chatHandler"
class="org.apache.mina.example.chat.ChatProtocolHandler" />
<!-- The SSL configuration -->
- <bean id="keyStore"
class="org.apache.mina.integration.spring.ssl.KeyStoreFactoryBean">
- <property name="resource"
value="classpath:org/apache/mina/example/echoserver/ssl/bogus.cert"/>
+ <bean id="keystoreFactory"
class="org.apache.mina.filter.ssl.KeyStoreFactory">
<property name="password" value="boguspw"/>
+ <property name="dataUrl"
value="classpath:org/apache/mina/example/echoserver/ssl/bogus.cert"/>
</bean>
-
- <bean id="bogusTrustManagerFactory"
class="org.apache.mina.integration.spring.ssl.BogusTrustManagerFactory"/>
+
+ <bean id="keyStore" factory-bean="keystoreFactory"
factory-method="newInstance"/>
+
+ <bean id="bogusTrustManagerFactory"
class="org.apache.mina.filter.ssl.BogusTrustManagerFactory"/>
<!-- SSLContext to be used -->
- <bean id="sslContext"
class="org.apache.mina.integration.spring.ssl.SslContextFactoryBean">
+ <bean id="sslContextFactory"
class="org.apache.mina.filter.ssl.SslContextFactory">
<property name="protocol" value="TLS"/>
<property name="keyManagerFactoryAlgorithm" value="SunX509"/>
<property name="keyManagerFactoryKeyStore"><ref
local="keyStore"/></property>
<property name="keyManagerFactoryKeyStorePassword" value="boguspw"/>
<property name="trustManagerFactory"><ref
local="bogusTrustManagerFactory"/></property>
</bean>
-
- <!-- The non-SSL filter chain. Adds a TextLineCodec and a LoggingFilter -->
- <bean id="filterChainBuilder"
class="org.apache.mina.integration.spring.DefaultIoFilterChainBuilderFactoryBean">
+
+ <bean id="sslContext" factory-bean="sslContextFactory"
factory-method="newInstance"/>
+
+ <!-- the IoFilters -->
+
+ <bean id="executorFilter"
class="org.apache.mina.filter.executor.ExecutorFilter"/>
+
+ <bean id="mdcInjectionFilter"
class="org.apache.mina.filter.logging.MdcInjectionFilter">
+ <constructor-arg value="remoteAddress"/>
+ </bean>
+
+ <bean id="codecFilter"
class="org.apache.mina.filter.codec.ProtocolCodecFilter">
+ <constructor-arg>
+ <bean class="org.apache.mina.filter.codec.textline.TextLineCodecFactory"
/>
+ </constructor-arg>
+ </bean>
+
+ <bean id="loggingFilter"
class="org.apache.mina.filter.logging.LoggingFilter" />
+
+ <bean id="sslFilter" class="org.apache.mina.filter.ssl.SslFilter">
+ <constructor-arg ref="sslContext"/>
+ </bean>
+
+ <!-- The non-SSL filter chain. -->
+ <bean id="filterChainBuilder"
class="org.apache.mina.common.DefaultIoFilterChainBuilder">
<property name="filters">
- <list>
- <bean class="org.apache.mina.filter.executor.ExecutorFilter"/>
- <bean class="org.apache.mina.filter.logging.MdcInjectionFilter">
- <constructor-arg value="remoteAddress"/>
- </bean>
- <bean class="org.apache.mina.filter.codec.ProtocolCodecFilter">
- <constructor-arg>
- <bean
class="org.apache.mina.filter.codec.textline.TextLineCodecFactory" />
- </constructor-arg>
- </bean>
- <bean class="org.apache.mina.filter.logging.LoggingFilter" />
- </list>
+ <map>
+ <entry key="executor" value-ref="executorFilter"/>
+ <entry key="mdcInjectionFilter" value-ref="mdcInjectionFilter"/>
+ <entry key="codecFilter" value-ref="codecFilter"/>
+ <entry key="loggingFilter" value-ref="loggingFilter"/>
+ </map>
</property>
</bean>
-
- <!-- The SSL filter chain. Adds an SSLFilter, a TextLineCodec and a
LoggingFilter -->
- <bean id="sslFilterChainBuilder"
class="org.apache.mina.integration.spring.DefaultIoFilterChainBuilderFactoryBean">
+
+ <!-- The SSL filter chain. -->
+ <bean id="sslFilterChainBuilder"
class="org.apache.mina.common.DefaultIoFilterChainBuilder">
<property name="filters">
- <list>
- <bean class="org.apache.mina.filter.executor.ExecutorFilter"/>
- <bean class="org.apache.mina.filter.logging.MdcInjectionFilter"/>
- <bean class="org.apache.mina.filter.ssl.SslFilter">
- <constructor-arg ref="sslContext"/>
- </bean>
- <bean class="org.apache.mina.filter.codec.ProtocolCodecFilter">
- <constructor-arg>
- <bean
class="org.apache.mina.filter.codec.textline.TextLineCodecFactory" />
- </constructor-arg>
- </bean>
- <bean class="org.apache.mina.filter.logging.LoggingFilter" />
- </list>
+ <map>
+ <entry key="executor" value-ref="executorFilter"/>
+ <entry key="mdcInjectionFilter" value-ref="mdcInjectionFilter"/>
+ <entry key="sslFilter" value-ref="sslFilter"/>
+ <entry key="codecFilter" value-ref="codecFilter"/>
+ <entry key="loggingFilter" value-ref="loggingFilter"/>
+ </map>
</property>
</bean>
<!-- The IoAcceptor which binds to port 1234 -->
<bean id="ioAcceptor"
class="org.apache.mina.transport.socket.nio.NioSocketAcceptor"
init-method="bind" destroy-method="unbind">
- <property name="localAddress" value=":1234" />
+ <property name="defaultLocalAddress" value=":1234" />
<property name="handler" ref="chatHandler" />
<property name="reuseAddress" value="true" />
<property name="filterChainBuilder" ref="filterChainBuilder" />
@@ -82,7 +94,7 @@
<!-- The SSL enabled IoAcceptor which binds to port 1235 -->
<bean id="ioAcceptorWithSSL"
class="org.apache.mina.transport.socket.nio.NioSocketAcceptor"
init-method="bind" destroy-method="unbind">
- <property name="localAddress" value=":1235" />
+ <property name="defaultLocalAddress" value=":1235" />
<property name="handler" ref="chatHandler" />
<property name="reuseAddress" value="true" />
<property name="filterChainBuilder" ref="sslFilterChainBuilder" />
Added:
mina/trunk/example/src/test/java/org/apache/mina/example/chat/SpringMainTest.java
URL:
http://svn.apache.org/viewvc/mina/trunk/example/src/test/java/org/apache/mina/example/chat/SpringMainTest.java?rev=611323&view=auto
==============================================================================
---
mina/trunk/example/src/test/java/org/apache/mina/example/chat/SpringMainTest.java
(added)
+++
mina/trunk/example/src/test/java/org/apache/mina/example/chat/SpringMainTest.java
Fri Jan 11 14:40:46 2008
@@ -0,0 +1,21 @@
+package org.apache.mina.example.chat;
+
+import junit.framework.TestCase;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.apache.mina.common.IoService;
+
+/**
+ */
+public class SpringMainTest extends TestCase {
+
+ public void testContext() {
+ ConfigurableApplicationContext appContext =
SpringMain.getApplicationContext();
+ IoService service = (IoService) appContext.getBean("ioAcceptor");
+ IoService ioAcceptorWithSSL = (IoService)
appContext.getBean("ioAcceptorWithSSL");
+ assertTrue(service.isActive());
+ assertTrue(ioAcceptorWithSSL.isActive());
+ appContext.close();
+ assertFalse(service.isActive());
+ assertFalse(ioAcceptorWithSSL.isActive());
+ }
+}
Propchange:
mina/trunk/example/src/test/java/org/apache/mina/example/chat/SpringMainTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
mina/trunk/example/src/test/java/org/apache/mina/example/chat/SpringMainTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date