You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ad...@apache.org on 2011/08/21 18:52:59 UTC
svn commit: r1160009 - in /mina/sandbox/adc/ahc: ./ mina3/
mina3/src/main/java/org/apache/mina/core/
mina3/src/main/java/org/apache/mina/core/api/
mina3/src/main/java/org/apache/mina/core/state/
mina3/src/main/java/org/apache/mina/impl/ mina3/src/main/...
Author: adc
Date: Sun Aug 21 16:52:58 2011
New Revision: 1160009
URL: http://svn.apache.org/viewvc?rev=1160009&view=rev
Log:
Some more sketching on annotations and simple example filters
Added:
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoFilter.java
- copied, changed from r1159830, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoChannel.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFilter.java
- copied, changed from r1159830, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoChannel.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoChild.java
- copied, changed from r1159830, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoProperty.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoEvent.java
- copied, changed from r1159893, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoEvent.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoParent.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoProperty.java
- copied, changed from r1159830, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoProperty.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoPropertyScope.java
- copied, changed from r1159830, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoPropertyScope.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/HandlerException.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/HandlerInvocationException.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/HandlerMissingException.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/StateMachineFilter.java
- copied, changed from r1159893, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/StateMachineChannel.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslFilter.java
- copied, changed from r1159893, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslChannel.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslListener.java
mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/
mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/ChecksumConfig.java
mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/ChecksumFilter.java
mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/CountFilter.java
mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/CountListener.java
mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/EchoFilter.java
Removed:
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoChannel.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoChannel.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoEvent.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoProperty.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoPropertyScope.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDownMux.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoDownSet.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUpMux.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoUpSet.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/StateMachineChannel.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslChannel.java
Modified:
mina/sandbox/adc/ahc/mina3/pom.xml
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/EquipmentStack.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoSession.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/impl/EquipmentStack.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/impl/InjectorEjector.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/DownState.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/Link.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/UpState.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/FinishedChannelState.java
mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/HandshakeChannelState.java
mina/sandbox/adc/ahc/pom.xml
Modified: mina/sandbox/adc/ahc/mina3/pom.xml
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/pom.xml?rev=1160009&r1=1160008&r2=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/pom.xml (original)
+++ mina/sandbox/adc/ahc/mina3/pom.xml Sun Aug 21 16:52:58 2011
@@ -37,6 +37,12 @@
<dependencies>
<dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.ahc</groupId>
<artifactId>api</artifactId>
</dependency>
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoFilter.java (from r1159830, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoChannel.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoFilter.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoFilter.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoChannel.java&r1=1159830&r2=1160009&rev=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoChannel.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/AbstractIoFilter.java Sun Aug 21 16:52:58 2011
@@ -18,35 +18,19 @@
*/
package org.apache.mina.core;
-import org.apache.mina.core.api.IoListener;
-import org.apache.mina.impl.EquipmentStack;
-
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public abstract class AbstractIoChannel<U, D> implements IoChannel<U, D>
+public abstract class AbstractIoFilter implements IoFilter
{
- private final EquipmentStack stack = new EquipmentStack();
-
- public IoChannel equipWith(String key, Object value)
- {
- stack.equipWith(key, value);
-
- return this;
- }
-
- public IoChannel equipWith(IoListener listener)
+ @Override
+ public void init() throws Exception
{
- stack.equipWith(listener);
-
- return this;
}
- public IoChannel equipWith(IoConfig config)
+ @Override
+ public void destroy() throws Exception
{
- stack.equipWith(config);
-
- return this;
}
}
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/EquipmentStack.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/EquipmentStack.java?rev=1160009&r1=1160008&r2=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/EquipmentStack.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/EquipmentStack.java Sun Aug 21 16:52:58 2011
@@ -27,7 +27,12 @@ import org.slf4j.LoggerFactory;
*/
public class EquipmentStack implements Cloneable
{
- public void inject(IoChannelState channelState)
+ public void inject(Object channelState)
+ {
+ //Todo change body of created methods use File | Settings | File Templates.
+ }
+
+ public void collect(Object channelState)
{
//Todo change body of created methods use File | Settings | File Templates.
}
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFilter.java (from r1159830, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoChannel.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFilter.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFilter.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoChannel.java&r1=1159830&r2=1160009&rev=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoChannel.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoFilter.java Sun Aug 21 16:52:58 2011
@@ -26,15 +26,9 @@ import org.apache.mina.core.api.IoUp;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public interface IoChannel<U, D> extends IoUp<U>, IoDown<D>
+public interface IoFilter
{
void init() throws Exception;
void destroy() throws Exception;
-
- IoChannel equipWith(String key, Object value);
-
- IoChannel equipWith(IoListener listener);
-
- IoChannel equipWith(IoConfig config);
}
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoSession.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoSession.java?rev=1160009&r1=1160008&r2=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoSession.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoSession.java Sun Aug 21 16:52:58 2011
@@ -46,13 +46,13 @@ public abstract class IoSession
public abstract void exceptionCaught(GeneralSecurityException gse);
- public abstract IoChannel getRoot();
+ public abstract IoFilter getRoot();
- public abstract Set<IoChannel> getChannels();
+ public abstract Set<IoFilter> getChannels();
- public abstract IoChannel getChannel(String filterName);
+ public abstract IoFilter getChannel(String filterName);
- public abstract void mark(IoChannel channel, String filterName);
+ public abstract void mark(IoFilter filter, String filterName);
public abstract Object getEquip(Object key);
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoChild.java (from r1159830, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoProperty.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoChild.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoChild.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoProperty.java&r1=1159830&r2=1160009&rev=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoProperty.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoChild.java Sun Aug 21 16:52:58 2011
@@ -16,19 +16,14 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.mina.core;
+package org.apache.mina.core.api;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-@java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.FIELD})
+@java.lang.annotation.Target(java.lang.annotation.ElementType.FIELD)
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Documented
-public @interface IoProperty
+public @interface IoChild
{
- public String name() default "<bean name>";
-
- public String type() default "<use signature>";
-
- public IoPropertyScope scope() default IoPropertyScope.PRIVATE;
}
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoEvent.java (from r1159893, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoEvent.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoEvent.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoEvent.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoEvent.java&r1=1159893&r2=1160009&rev=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoEvent.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoEvent.java Sun Aug 21 16:52:58 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.mina.core;
+package org.apache.mina.core.api;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
@@ -28,5 +28,5 @@ public @interface IoEvent
{
public String name() default "<event name>";
- public Class type() default Object.class;
+ public Class[] type() default Object.class;
}
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoParent.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoParent.java?rev=1160009&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoParent.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoParent.java Sun Aug 21 16:52:58 2011
@@ -0,0 +1,29 @@
+/**
+ * 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.mina.core.api;
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+@java.lang.annotation.Target(java.lang.annotation.ElementType.FIELD)
+@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
+@java.lang.annotation.Documented
+public @interface IoParent
+{
+}
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoProperty.java (from r1159830, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoProperty.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoProperty.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoProperty.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoProperty.java&r1=1159830&r2=1160009&rev=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoProperty.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoProperty.java Sun Aug 21 16:52:58 2011
@@ -16,7 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.mina.core;
+package org.apache.mina.core.api;
+
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
@@ -28,7 +29,9 @@ public @interface IoProperty
{
public String name() default "<bean name>";
- public String type() default "<use signature>";
+ public Class type() default IoProperty.class;
public IoPropertyScope scope() default IoPropertyScope.PRIVATE;
+
+ public boolean required() default true;
}
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoPropertyScope.java (from r1159830, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoPropertyScope.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoPropertyScope.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoPropertyScope.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoPropertyScope.java&r1=1159830&r2=1160009&rev=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/IoPropertyScope.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/api/IoPropertyScope.java Sun Aug 21 16:52:58 2011
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.mina.core;
+package org.apache.mina.core.api;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/HandlerException.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/HandlerException.java?rev=1160009&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/HandlerException.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/HandlerException.java Sun Aug 21 16:52:58 2011
@@ -0,0 +1,44 @@
+/**
+ * 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.mina.core.state;
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class HandlerException extends Exception
+{
+ public HandlerException()
+ {
+ }
+
+ public HandlerException(String message)
+ {
+ super(message);
+ }
+
+ public HandlerException(String message, Throwable cause)
+ {
+ super(message, cause);
+ }
+
+ public HandlerException(Throwable cause)
+ {
+ super(cause);
+ }
+}
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/HandlerInvocationException.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/HandlerInvocationException.java?rev=1160009&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/HandlerInvocationException.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/HandlerInvocationException.java Sun Aug 21 16:52:58 2011
@@ -0,0 +1,30 @@
+/**
+ * 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.mina.core.state;
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class HandlerInvocationException extends HandlerException
+{
+ public HandlerInvocationException(Throwable cause)
+ {
+ super(cause);
+ }
+}
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/HandlerMissingException.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/HandlerMissingException.java?rev=1160009&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/HandlerMissingException.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/HandlerMissingException.java Sun Aug 21 16:52:58 2011
@@ -0,0 +1,44 @@
+/**
+ * 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.mina.core.state;
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class HandlerMissingException extends HandlerException
+{
+ public HandlerMissingException()
+ {
+ }
+
+ public HandlerMissingException(String message)
+ {
+ super(message);
+ }
+
+ public HandlerMissingException(String message, Throwable cause)
+ {
+ super(message, cause);
+ }
+
+ public HandlerMissingException(Throwable cause)
+ {
+ super(cause);
+ }
+}
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/StateMachineFilter.java (from r1159893, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/StateMachineChannel.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/StateMachineFilter.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/StateMachineFilter.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/StateMachineChannel.java&r1=1159893&r2=1160009&rev=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/StateMachineChannel.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/core/state/StateMachineFilter.java Sun Aug 21 16:52:58 2011
@@ -18,6 +18,8 @@
*/
package org.apache.mina.core.state;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
@@ -27,21 +29,20 @@ import java.util.Queue;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.mina.core.AbstractIoChannel;
+import org.apache.mina.core.AbstractIoFilter;
import org.apache.mina.core.EquipmentStack;
import org.apache.mina.core.IoChannelState;
-import org.apache.mina.core.IoProperty;
-import org.apache.mina.core.IoPropertyScope;
-import org.apache.mina.core.api.IoDown;
-import org.apache.mina.core.api.IoUp;
+import org.apache.mina.core.api.IoEvent;
+import org.apache.mina.core.api.IoProperty;
+import org.apache.mina.core.api.IoPropertyScope;
/**
* @author The Apache MINA Project (dev@mina.apache.org)
*/
-public abstract class StateMachineChannel<U, D, S extends Enum, E extends Event> extends AbstractIoChannel<U, D> implements IoDown<D>, IoUp<U>
+public abstract class StateMachineFilter<U, D, S extends Enum, E extends Event> extends AbstractIoFilter
{
- private final static Logger LOG = LoggerFactory.getLogger(StateMachineChannel.class);
+ private final static Logger LOG = LoggerFactory.getLogger(StateMachineFilter.class);
private final Map<S, IoChannelState<U, D, S, E>> states = new HashMap<S, IoChannelState<U, D, S, E>>();
private final Queue<E> events = new LinkedList<E>();
private EquipmentStack equipmentStack;
@@ -94,9 +95,10 @@ public abstract class StateMachineChanne
assert message != null;
IoChannelState<U, D, S, E> channelState = states.get(state);
- equipmentStack.inject(channelState);
+ equipmentStack.inject(channelState);
channelState.send(new StateMachineContext(), message);
+ equipmentStack.collect(channelState);
}
public final void receive(U message) throws Exception
@@ -104,19 +106,21 @@ public abstract class StateMachineChanne
assert message != null;
IoChannelState<U, D, S, E> channelState = states.get(state);
- equipmentStack.inject(channelState);
+ equipmentStack.inject(channelState);
channelState.receive(new StateMachineContext(), message);
+ equipmentStack.collect(channelState);
}
- public final void fire(E event) throws Exception
+ public final void fire(E event) throws HandlerException
{
assert event != null;
IoChannelState<U, D, S, E> channelState = states.get(state);
- equipmentStack.inject(channelState);
-// channelState.handle(new StateMachineContext(), event); TODO
+ equipmentStack.inject(channelState);
+ fireEvent(channelState, new StateMachineContext(), event);
+ equipmentStack.collect(channelState);
}
protected final void queue(E event)
@@ -125,16 +129,51 @@ public abstract class StateMachineChanne
events.offer(event);
}
+ private void fireEvent(IoChannelState<U, D, S, E> state, StateMachineContext context, E event) throws HandlerException
+ {
+ assert state != null;
+ assert context != null;
+ assert event != null;
+
+ for (Method method : state.getClass().getMethods())
+ {
+ if (method.isAnnotationPresent(IoEvent.class))
+ {
+ IoEvent action = method.getAnnotation(IoEvent.class);
+ for (Class eventType : action.type())
+ {
+ if (event.getClass().equals(eventType))
+ {
+ try
+ {
+ method.invoke(state, context, event);
+ return;
+ }
+ catch (IllegalAccessException iae)
+ {
+ throw new HandlerInvocationException(iae);
+ }
+ catch (InvocationTargetException ite)
+ {
+ throw new HandlerInvocationException(ite);
+ }
+ }
+ }
+ }
+ }
+ throw new HandlerMissingException();
+ }
+
private class StateMachineContext implements Context<S>
{
public S getState()
{
- return StateMachineChannel.this.getState();
+ return StateMachineFilter.this.getState();
}
public void setState(S state)
{
- StateMachineChannel.this.setState(state);
+ StateMachineFilter.this.setState(state);
}
}
}
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/impl/EquipmentStack.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/impl/EquipmentStack.java?rev=1160009&r1=1160008&r2=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/impl/EquipmentStack.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/impl/EquipmentStack.java Sun Aug 21 16:52:58 2011
@@ -29,7 +29,7 @@ import java.util.Stack;
import org.apache.mina.core.IoConfig;
import org.apache.mina.core.api.IoListener;
-import org.apache.mina.core.IoPropertyScope;
+import org.apache.mina.core.api.IoPropertyScope;
/**
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/impl/InjectorEjector.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/impl/InjectorEjector.java?rev=1160009&r1=1160008&r2=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/impl/InjectorEjector.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/impl/InjectorEjector.java Sun Aug 21 16:52:58 2011
@@ -29,8 +29,8 @@ import java.util.Map;
import java.util.Set;
import java.util.WeakHashMap;
-import org.apache.mina.core.IoProperty;
-import org.apache.mina.core.IoPropertyScope;
+import org.apache.mina.core.api.IoProperty;
+import org.apache.mina.core.api.IoPropertyScope;
/**
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/DownState.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/DownState.java?rev=1160009&r1=1160008&r2=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/DownState.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/DownState.java Sun Aug 21 16:52:58 2011
@@ -24,9 +24,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.mina.core.BaseChannelState;
-import org.apache.mina.core.IoProperty;
-import org.apache.mina.core.IoPropertyScope;
import org.apache.mina.core.api.IoDown;
+import org.apache.mina.core.api.IoProperty;
+import org.apache.mina.core.api.IoPropertyScope;
import org.apache.mina.core.state.Context;
@@ -36,33 +36,10 @@ import org.apache.mina.core.state.Contex
public class DownState extends BaseChannelState<Token, Token, State, TimeoutEvent>
{
static final Logger LOG = LoggerFactory.getLogger(DownState.class);
- private Set<LinkListener> listeners;
- private int numTokens;
- private IoDown<Token> child;
+ @IoProperty(scope = IoPropertyScope.SESSION) protected Set<LinkListener> listeners;
+ @IoProperty protected int numTokens;
+ @IoProperty protected IoDown<Token> child;
- @IoProperty(name = "listeners", type = "org.apache.mina.link.LinkListener", scope = IoPropertyScope.SESSION)
- public void setListeners(Set<LinkListener> listeners)
- {
- this.listeners = listeners;
- }
-
- @IoProperty(name = "numTokens", scope = IoPropertyScope.PRIVATE)
- public int getNumTokens()
- {
- return numTokens;
- }
-
- @IoProperty(name = "numTokens", scope = IoPropertyScope.PRIVATE)
- public void setNumTokens(int numTokens)
- {
- this.numTokens = numTokens;
- }
-
- @IoProperty(name = "child", scope = IoPropertyScope.PRIVATE)
- public void setChild(IoDown<Token> child)
- {
- this.child = child;
- }
@Override
public void send(Context<State> stateContext, Token message) throws Exception
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/Link.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/Link.java?rev=1160009&r1=1160008&r2=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/Link.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/Link.java Sun Aug 21 16:52:58 2011
@@ -20,13 +20,14 @@ package org.apache.mina.link;
import java.util.Set;
-import org.apache.mina.core.api.IoDown;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.mina.core.IoProperty;
-import org.apache.mina.core.IoPropertyScope;
-import org.apache.mina.core.state.StateMachineChannel;
+import org.apache.mina.core.api.IoDown;
+import org.apache.mina.core.api.IoProperty;
+import org.apache.mina.core.api.IoPropertyScope;
+import org.apache.mina.core.api.IoUp;
+import org.apache.mina.core.state.StateMachineFilter;
/**
@@ -38,12 +39,12 @@ import org.apache.mina.core.state.StateM
*
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public class Link extends StateMachineChannel<Token, Token, State, TimeoutEvent>
+public class Link extends StateMachineFilter<Token, Token, State, TimeoutEvent> implements IoUp<Token>
{
static final Logger LOG = LoggerFactory.getLogger(Link.class);
- private IoDown<Token> child;
- private int numTokens;
- private Set<LinkListener> listeners;
+ @IoProperty protected IoDown<Token> child;
+ @IoProperty protected int numTokens;
+ @IoProperty(scope = IoPropertyScope.SESSION) protected Set<LinkListener> listeners;
public Link()
{
@@ -51,36 +52,16 @@ public class Link extends StateMachineCh
register(State.UP, new DownState());
}
- @IoProperty(name = "child", scope = IoPropertyScope.PRIVATE)
public IoDown<Token> getChild()
{
return child;
}
- @IoProperty(name = "child", scope = IoPropertyScope.PRIVATE)
public void setChild(IoDown<Token> child)
{
this.child = child;
}
- @IoProperty(name = "numTokens", scope = IoPropertyScope.PRIVATE)
- public int getNumTokens()
- {
- return numTokens;
- }
-
- @IoProperty(name = "numTokens", scope = IoPropertyScope.PRIVATE)
- public void setNumTokens(int numTokens)
- {
- this.numTokens = numTokens;
- }
-
- @IoProperty(name = "listeners", type = "org.apache.mina.link.LinkListener", scope = IoPropertyScope.SESSION)
- public void setListeners(Set<LinkListener> listeners)
- {
- this.listeners = listeners;
- }
-
/**
* {@inheritDoc}
*/
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/UpState.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/UpState.java?rev=1160009&r1=1160008&r2=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/UpState.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/link/UpState.java Sun Aug 21 16:52:58 2011
@@ -24,10 +24,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.mina.core.BaseChannelState;
-import org.apache.mina.core.IoEvent;
-import org.apache.mina.core.IoProperty;
-import org.apache.mina.core.IoPropertyScope;
import org.apache.mina.core.api.IoDown;
+import org.apache.mina.core.api.IoEvent;
+import org.apache.mina.core.api.IoProperty;
+import org.apache.mina.core.api.IoPropertyScope;
import org.apache.mina.core.state.Context;
@@ -37,33 +37,9 @@ import org.apache.mina.core.state.Contex
public class UpState extends BaseChannelState<Token, Token, State, TimeoutEvent>
{
static final Logger LOG = LoggerFactory.getLogger(UpState.class);
- private Set<LinkListener> listeners;
- private int numTokens;
- private IoDown<Token> child;
-
- @IoProperty(name = "listeners", type = "org.apache.mina.link.LinkListener", scope = IoPropertyScope.SESSION)
- public void setListeners(Set<LinkListener> listeners)
- {
- this.listeners = listeners;
- }
-
- @IoProperty(name = "numTokens", scope = IoPropertyScope.PRIVATE)
- public int getNumTokens()
- {
- return numTokens;
- }
-
- @IoProperty(name = "numTokens", scope = IoPropertyScope.PRIVATE)
- public void setNumTokens(int numTokens)
- {
- this.numTokens = numTokens;
- }
-
- @IoProperty(name = "child", scope = IoPropertyScope.PRIVATE)
- public void setChild(IoDown<Token> child)
- {
- this.child = child;
- }
+ @IoProperty(scope = IoPropertyScope.SESSION) protected Set<LinkListener> listeners;
+ @IoProperty protected int numTokens;
+ @IoProperty protected IoDown<Token> child;
@Override
public void send(Context<State> stateContext, Token message) throws Exception
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/FinishedChannelState.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/FinishedChannelState.java?rev=1160009&r1=1160008&r2=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/FinishedChannelState.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/FinishedChannelState.java Sun Aug 21 16:52:58 2011
@@ -25,9 +25,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.mina.core.BaseChannelState;
-import org.apache.mina.core.IoBuffer;
-import org.apache.mina.core.IoProperty;
-import org.apache.mina.core.IoPropertyScope;
+import org.apache.mina.core.api.IoProperty;
+import org.apache.mina.core.api.IoPropertyScope;
import org.apache.mina.core.state.Context;
import org.apache.mina.nio.IoByteBuffer;
Modified: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/HandshakeChannelState.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/HandshakeChannelState.java?rev=1160009&r1=1160008&r2=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/HandshakeChannelState.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/HandshakeChannelState.java Sun Aug 21 16:52:58 2011
@@ -19,16 +19,17 @@
package org.apache.mina.ssl;
import javax.net.ssl.SSLEngineResult;
+import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.mina.core.BaseChannelState;
import org.apache.mina.core.IoBufferFactory;
-import org.apache.mina.core.IoEvent;
-import org.apache.mina.core.IoProperty;
-import org.apache.mina.core.IoPropertyScope;
import org.apache.mina.core.api.IoDown;
+import org.apache.mina.core.api.IoEvent;
+import org.apache.mina.core.api.IoProperty;
+import org.apache.mina.core.api.IoPropertyScope;
import org.apache.mina.core.api.IoUp;
import org.apache.mina.core.state.Context;
import org.apache.mina.nio.IoByteBuffer;
@@ -40,40 +41,24 @@ import org.apache.mina.nio.IoByteBuffer;
public class HandshakeChannelState extends BaseChannelState<IoByteBuffer, IoByteBuffer, SslStates, SslEvent>
{
private final static Logger LOGGER = LoggerFactory.getLogger(HandshakeChannelState.class);
- private IoBufferFactory<IoByteBuffer> factory;
- private SSLEngine engine;
- private IoDown<IoByteBuffer> child;
- private IoUp<IoByteBuffer> parent;
-
- @IoProperty(name = "factory", scope = IoPropertyScope.GLOBAL)
- public void setFactory(IoBufferFactory<IoByteBuffer> factory)
- {
- this.factory = factory;
- }
-
- @IoProperty(name = "engine", scope = IoPropertyScope.SESSION)
- public void setEngine(SSLEngine engine)
- {
- this.engine = engine;
- }
-
- @IoProperty(name = "child", scope = IoPropertyScope.PRIVATE)
- public void setChild(IoDown<IoByteBuffer> child)
- {
- this.child = child;
- }
-
- @IoProperty(name = "parent", scope = IoPropertyScope.PRIVATE)
- public void setParent(IoUp<IoByteBuffer> parent)
- {
- this.parent = parent;
- }
+ @IoProperty(scope = IoPropertyScope.GLOBAL) private IoBufferFactory<IoByteBuffer> factory;
+ @IoProperty private SSLEngine engine;
+ @IoProperty(scope = IoPropertyScope.SESSION) private Set<SslListener> listeners;
+ @IoProperty private boolean handshakeStarted;
+ @IoProperty private IoDown<IoByteBuffer> child;
+ @IoProperty private IoUp<IoByteBuffer> parent;
@Override
public void send(Context<SslStates> context, IoByteBuffer message) throws Exception
{
IoByteBuffer ioByteBuffer = (IoByteBuffer)message;
+ if (!handshakeStarted)
+ {
+ for (SslListener listener : listeners) listener.handshakeStarted();
+ handshakeStarted = false;
+ }
+
IoByteBuffer byteBuffer = factory.allocate(engine.getSession().getPacketBufferSize()).get();
SSLEngineResult result = engine.wrap(ioByteBuffer, byteBuffer);
if (result.getHandshakeStatus() == SSLEngineResult.HandshakeStatus.NEED_TASK)
@@ -102,6 +87,13 @@ public class HandshakeChannelState exten
public void receive(Context<SslStates> context, IoByteBuffer message) throws Exception
{
IoByteBuffer byteBuffer = factory.allocate(engine.getSession().getPacketBufferSize()).get();
+
+ if (!handshakeStarted)
+ {
+ for (SslListener listener : listeners) listener.handshakeStarted();
+ handshakeStarted = false;
+ }
+
SSLEngineResult result = engine.unwrap(message, byteBuffer);
if (result.getHandshakeStatus() == SSLEngineResult.HandshakeStatus.NEED_TASK)
{
@@ -128,6 +120,8 @@ public class HandshakeChannelState exten
else if (result.getHandshakeStatus() == SSLEngineResult.HandshakeStatus.FINISHED)
{
context.setState(SslStates.FINISHED);
+
+ for (SslListener listener : listeners) listener.handshakeCompleted();
}
parent.receive(byteBuffer);
Copied: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslFilter.java (from r1159893, mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslChannel.java)
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslFilter.java?p2=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslFilter.java&p1=mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslChannel.java&r1=1159893&r2=1160009&rev=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslChannel.java (original)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslFilter.java Sun Aug 21 16:52:58 2011
@@ -18,26 +18,26 @@
*/
package org.apache.mina.ssl;
-import org.apache.mina.core.IoProperty;
-import org.apache.mina.core.IoPropertyScope;
import org.apache.mina.core.api.IoDown;
+import org.apache.mina.core.api.IoProperty;
+import org.apache.mina.core.api.IoPropertyScope;
import org.apache.mina.core.api.IoUp;
-import org.apache.mina.core.state.StateMachineChannel;
-import org.apache.mina.link.Token;
+import org.apache.mina.core.state.StateMachineFilter;
import org.apache.mina.nio.IoByteBuffer;
/**
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
-public class SslChannel extends StateMachineChannel<IoByteBuffer, IoByteBuffer, SslStates, SslEvent>
+public class SslFilter extends StateMachineFilter<IoByteBuffer, IoByteBuffer, SslStates, SslEvent> implements IoUp<IoByteBuffer>, IoDown<IoByteBuffer>
{
- private SslConfig sslConfig;
- private SSLEngine engine;
- private IoDown<IoByteBuffer> child;
- private IoUp<IoByteBuffer> parent;
+ @IoProperty(scope = IoPropertyScope.GLOBAL) private SslConfig sslConfig;
+ @IoProperty private SSLEngine engine;
+ @IoProperty private boolean handshakeStarted;
+ @IoProperty private IoDown<IoByteBuffer> child;
+ @IoProperty private IoUp<IoByteBuffer> parent;
- public SslChannel()
+ public SslFilter()
{
register(SslStates.HANDSHAKE, new HandshakeChannelState());
register(SslStates.FINISHED, new FinishedChannelState());
@@ -45,48 +45,6 @@ public class SslChannel extends StateMac
register(SslStates.CLOSED, new ClosedChannelState());
}
- @IoProperty(name = "child", scope = IoPropertyScope.PRIVATE)
- public IoDown<IoByteBuffer> getChild()
- {
- return child;
- }
-
- @IoProperty(name = "child", scope = IoPropertyScope.PRIVATE)
- public void setChild(IoDown<IoByteBuffer> child)
- {
- this.child = child;
- }
-
- @IoProperty(name = "parent", scope = IoPropertyScope.PRIVATE)
- public IoUp<IoByteBuffer> getParent()
- {
- return parent;
- }
-
- @IoProperty(name = "parent", scope = IoPropertyScope.PRIVATE)
- public void setParent(IoUp<IoByteBuffer> parent)
- {
- this.parent = parent;
- }
-
- @IoProperty(name = "sslConfig", scope = IoPropertyScope.GLOBAL)
- public void setSslConfig(SslConfig sslConfig)
- {
- this.sslConfig = sslConfig;
- }
-
- @IoProperty(name = "engine", scope = IoPropertyScope.SESSION)
- public SSLEngine getEngine()
- {
- return engine;
- }
-
- @IoProperty(name = "engine", scope = IoPropertyScope.SESSION)
- public void setEngine(SSLEngine engine)
- {
- this.engine = engine;
- }
-
@Override
public void init() throws Exception
{
@@ -100,6 +58,8 @@ public class SslChannel extends StateMac
engine.beginHandshake();
+ handshakeStarted = false;
+
setState(SslStates.HANDSHAKE);
if (!sslConfig.isLazyHandshake())
Added: mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslListener.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslListener.java?rev=1160009&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslListener.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/main/java/org/apache/mina/ssl/SslListener.java Sun Aug 21 16:52:58 2011
@@ -0,0 +1,39 @@
+/**
+ * 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.mina.ssl;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public interface SslListener
+{
+ void handshakeStarted();
+
+ void handshakeCompleted();
+
+ void firstByteSent();
+
+ void closingStarted();
+
+ void closingCompleted();
+}
Added: mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/ChecksumConfig.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/ChecksumConfig.java?rev=1160009&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/ChecksumConfig.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/ChecksumConfig.java Sun Aug 21 16:52:58 2011
@@ -0,0 +1,48 @@
+/**
+ * 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 com.acme.chain;
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class ChecksumConfig
+{
+ private String algorithm;
+ private String charsetName = "UTF8";
+
+ public String getAlgorithm()
+ {
+ return algorithm;
+ }
+
+ public void setAlgorithm(String algorithm)
+ {
+ this.algorithm = algorithm;
+ }
+
+ public String getCharsetName()
+ {
+ return charsetName;
+ }
+
+ public void setCharsetName(String charsetName)
+ {
+ this.charsetName = charsetName;
+ }
+}
Added: mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/ChecksumFilter.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/ChecksumFilter.java?rev=1160009&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/ChecksumFilter.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/ChecksumFilter.java Sun Aug 21 16:52:58 2011
@@ -0,0 +1,102 @@
+/**
+ * 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 com.acme.chain;
+
+import java.security.MessageDigest;
+import java.util.Arrays;
+
+import org.apache.commons.codec.binary.Hex;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.mina.core.AbstractIoFilter;
+import org.apache.mina.core.api.IoChild;
+import org.apache.mina.core.api.IoDown;
+import org.apache.mina.core.api.IoParent;
+import org.apache.mina.core.api.IoProperty;
+import org.apache.mina.core.api.IoPropertyScope;
+import org.apache.mina.core.api.IoUp;
+
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class ChecksumFilter extends AbstractIoFilter implements IoUp<String>, IoDown<String>
+{
+ static final Logger LOG = LoggerFactory.getLogger(ChecksumFilter.class);
+ @IoProperty(scope = IoPropertyScope.GLOBAL) protected ChecksumConfig config;
+ @IoParent protected IoUp<String> parent;
+ @IoChild protected IoDown<String> child;
+ @IoProperty protected MessageDigest md;
+
+
+ public IoUp<String> getParent()
+ {
+ return parent;
+ }
+
+ public void setParent(IoUp<String> parent)
+ {
+ this.parent = parent;
+ }
+
+ public IoDown<String> getChild()
+ {
+ return child;
+ }
+
+ public void setChild(IoDown<String> child)
+ {
+ this.child = child;
+ }
+
+ @Override
+ public void init() throws Exception
+ {
+ md = MessageDigest.getInstance(config.getAlgorithm());
+ }
+
+ @Override
+ public void send(String message) throws Exception
+ {
+ md.reset();
+ byte[] digest = md.digest(message.getBytes(config.getCharsetName()));
+
+ StringBuilder builder = new StringBuilder();
+ builder.append(String.valueOf(Hex.encodeHex(digest)));
+ builder.append(":");
+ builder.append(message);
+
+ child.send(builder.toString());
+ }
+
+ @Override
+ public void receive(String message) throws Exception
+ {
+ int i = message.indexOf(":");
+ String checksum = message.substring(0, i);
+ String msg = message.substring(i + 1);
+
+ byte[] sentDigest = Hex.decodeHex(checksum.toCharArray());
+ byte[] msgDigest = md.digest(msg.getBytes(config.getCharsetName()));
+ if (!Arrays.equals(sentDigest, msgDigest)) throw new Exception("Checksums do not match");
+
+ parent.receive(msg);
+ }
+}
Added: mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/CountFilter.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/CountFilter.java?rev=1160009&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/CountFilter.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/CountFilter.java Sun Aug 21 16:52:58 2011
@@ -0,0 +1,111 @@
+/**
+ * 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 com.acme.chain;
+
+import java.util.Set;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.mina.core.IoFilter;
+import org.apache.mina.core.api.IoChild;
+import org.apache.mina.core.api.IoDown;
+import org.apache.mina.core.api.IoParent;
+import org.apache.mina.core.api.IoProperty;
+import org.apache.mina.core.api.IoPropertyScope;
+import org.apache.mina.core.api.IoUp;
+
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class CountFilter implements IoFilter, IoUp<String>, IoDown<String>
+{
+ static final Logger LOG = LoggerFactory.getLogger(CountFilter.class);
+ @IoParent protected IoUp<String> parent;
+ @IoChild protected IoDown<String> child;
+ @IoProperty(scope = IoPropertyScope.SESSION) protected ScheduledExecutorService pool;
+ @IoProperty protected ScheduledFuture<Void> handle;
+ @IoProperty protected int count;
+
+ public IoUp<String> getParent()
+ {
+ return parent;
+ }
+
+ public void setParent(IoUp<String> parent)
+ {
+ this.parent = parent;
+ }
+
+ public IoDown<String> getChild()
+ {
+ return child;
+ }
+
+ public void setChild(IoDown<String> child)
+ {
+ this.child = child;
+ }
+
+ @Override
+ @SuppressWarnings({"unchecked"})
+ public void init() throws Exception
+ {
+ LOG.trace("Initializing");
+
+ count = 0;
+ handle = (ScheduledFuture<Void>)pool.scheduleWithFixedDelay(new Runnable()
+ {
+ @IoProperty(scope = IoPropertyScope.SESSION) Set<CountListener> listeners;
+ @IoProperty int count;
+
+ @Override
+ public void run()
+ {
+ for (CountListener listener : listeners) listener.current(count);
+ }
+ }, 5, 5, TimeUnit.SECONDS);
+ }
+
+ @Override
+ public void destroy() throws Exception
+ {
+ LOG.trace("Destroying");
+
+ handle.cancel(false);
+ }
+
+ @Override
+ public void send(String message) throws Exception
+ {
+ count++;
+ child.send(message);
+ }
+
+ @Override
+ public void receive(String message) throws Exception
+ {
+ count++;
+ parent.receive(message);
+ }
+}
Added: mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/CountListener.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/CountListener.java?rev=1160009&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/CountListener.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/CountListener.java Sun Aug 21 16:52:58 2011
@@ -0,0 +1,27 @@
+/**
+ * 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 com.acme.chain;
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public interface CountListener
+{
+ void current(int count);
+}
Added: mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/EchoFilter.java
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/EchoFilter.java?rev=1160009&view=auto
==============================================================================
--- mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/EchoFilter.java (added)
+++ mina/sandbox/adc/ahc/mina3/src/test/java/com/acme/chain/EchoFilter.java Sun Aug 21 16:52:58 2011
@@ -0,0 +1,71 @@
+/**
+ * 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 com.acme.chain;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.mina.core.AbstractIoFilter;
+import org.apache.mina.core.api.IoChild;
+import org.apache.mina.core.api.IoDown;
+import org.apache.mina.core.api.IoParent;
+import org.apache.mina.core.api.IoUp;
+
+
+/**
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public class EchoFilter extends AbstractIoFilter implements IoUp<String>, IoDown<String>
+{
+ static final Logger LOG = LoggerFactory.getLogger(EchoFilter.class);
+ @IoParent protected IoUp<String> parent;
+ @IoChild protected IoDown<String> child;
+
+ public IoUp<String> getParent()
+ {
+ return parent;
+ }
+
+ public void setParent(IoUp<String> parent)
+ {
+ this.parent = parent;
+ }
+
+ public IoDown<String> getChild()
+ {
+ return child;
+ }
+
+ public void setChild(IoDown<String> child)
+ {
+ this.child = child;
+ }
+
+ @Override
+ public void send(String message) throws Exception
+ {
+ child.send(message);
+ }
+
+ @Override
+ public void receive(String message) throws Exception
+ {
+ child.send(message);
+ }
+}
Modified: mina/sandbox/adc/ahc/pom.xml
URL: http://svn.apache.org/viewvc/mina/sandbox/adc/ahc/pom.xml?rev=1160009&r1=1160008&r2=1160009&view=diff
==============================================================================
--- mina/sandbox/adc/ahc/pom.xml (original)
+++ mina/sandbox/adc/ahc/pom.xml Sun Aug 21 16:52:58 2011
@@ -86,6 +86,12 @@
<dependencies>
<dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <version>20041127.091804</version>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.ahc</groupId>
<artifactId>api</artifactId>
<version>${project.version}</version>