From 09afa83177b76bfa5631f2fff1656691af1d3807 Mon Sep 17 00:00:00 2001 From: markt Date: Sat, 11 Dec 2010 18:27:15 +0000 Subject: [PATCH] Coyote should not depend on Catalina git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1044692 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/catalina/core/AsyncContextImpl.java | 3 ++- java/org/apache/coyote/AsyncContextCallback.java | 28 ++++++++++++++++++++++ java/org/apache/coyote/AsyncStateMachine.java | 5 ++-- .../apache/coyote/ajp/AbstractAjpProcessor.java | 4 ++-- .../coyote/http11/AbstractHttp11Processor.java | 4 ++-- 5 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 java/org/apache/coyote/AsyncContextCallback.java diff --git a/java/org/apache/catalina/core/AsyncContextImpl.java b/java/org/apache/catalina/core/AsyncContextImpl.java index 065139c38..c5b0e3cff 100644 --- a/java/org/apache/catalina/core/AsyncContextImpl.java +++ b/java/org/apache/catalina/core/AsyncContextImpl.java @@ -43,6 +43,7 @@ import org.apache.catalina.Context; import org.apache.catalina.Globals; import org.apache.catalina.connector.Request; import org.apache.coyote.ActionCode; +import org.apache.coyote.AsyncContextCallback; import org.apache.coyote.RequestInfo; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; @@ -52,7 +53,7 @@ import org.apache.tomcat.InstanceManager; * @author fhanik * */ -public class AsyncContextImpl implements AsyncContext { +public class AsyncContextImpl implements AsyncContext, AsyncContextCallback { private static final Log log = LogFactory.getLog(AsyncContextImpl.class); diff --git a/java/org/apache/coyote/AsyncContextCallback.java b/java/org/apache/coyote/AsyncContextCallback.java new file mode 100644 index 000000000..cf20be826 --- /dev/null +++ b/java/org/apache/coyote/AsyncContextCallback.java @@ -0,0 +1,28 @@ +/* + * 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.coyote; + +/** + * Provides a mechanism for the Coyote connectors to signal to a + * {@link javax.servlet.AsyncContext} implementation that an action, such as + * firing event listeners needs to be taken. It is implemented in this manner + * so that the org.apache.coyote package does not have a dependency on the + * org.apache.coyote package. + */ +public interface AsyncContextCallback { + public void fireOnComplete(); +} diff --git a/java/org/apache/coyote/AsyncStateMachine.java b/java/org/apache/coyote/AsyncStateMachine.java index 6ca133ea3..b71a4aca0 100644 --- a/java/org/apache/coyote/AsyncStateMachine.java +++ b/java/org/apache/coyote/AsyncStateMachine.java @@ -19,7 +19,6 @@ package org.apache.coyote; import java.security.AccessController; import java.security.PrivilegedAction; -import org.apache.catalina.core.AsyncContextImpl; import org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState; import org.apache.tomcat.util.res.StringManager; @@ -96,7 +95,7 @@ public class AsyncStateMachine { private volatile AsyncState state = AsyncState.DISPATCHED; // Need this to fire listener on complete - private AsyncContextImpl asyncCtxt = null; + private AsyncContextCallback asyncCtxt = null; private Processor processor; @@ -122,7 +121,7 @@ public class AsyncStateMachine { } - public synchronized void asyncStart(AsyncContextImpl asyncCtxt) { + public synchronized void asyncStart(AsyncContextCallback asyncCtxt) { if (state == AsyncState.DISPATCHED) { state = AsyncState.STARTING; this.asyncCtxt = asyncCtxt; diff --git a/java/org/apache/coyote/ajp/AbstractAjpProcessor.java b/java/org/apache/coyote/ajp/AbstractAjpProcessor.java index 2058c2377..0802b3dac 100644 --- a/java/org/apache/coyote/ajp/AbstractAjpProcessor.java +++ b/java/org/apache/coyote/ajp/AbstractAjpProcessor.java @@ -25,10 +25,10 @@ import java.security.cert.X509Certificate; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicBoolean; -import org.apache.catalina.core.AsyncContextImpl; import org.apache.coyote.ActionCode; import org.apache.coyote.ActionHook; import org.apache.coyote.Adapter; +import org.apache.coyote.AsyncContextCallback; import org.apache.coyote.AsyncStateMachine; import org.apache.coyote.InputBuffer; import org.apache.coyote.Processor; @@ -334,7 +334,7 @@ public abstract class AbstractAjpProcessor implements ActionHook, Processor { replay = true; } else if (actionCode == ActionCode.ASYNC_START) { - asyncStateMachine.asyncStart((AsyncContextImpl) param); + asyncStateMachine.asyncStart((AsyncContextCallback) param); } else if (actionCode == ActionCode.ASYNC_DISPATCHED) { asyncStateMachine.asyncDispatched(); } else if (actionCode == ActionCode.ASYNC_TIMEOUT) { diff --git a/java/org/apache/coyote/http11/AbstractHttp11Processor.java b/java/org/apache/coyote/http11/AbstractHttp11Processor.java index 22bca8e5b..190de2446 100644 --- a/java/org/apache/coyote/http11/AbstractHttp11Processor.java +++ b/java/org/apache/coyote/http11/AbstractHttp11Processor.java @@ -23,10 +23,10 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; -import org.apache.catalina.core.AsyncContextImpl; import org.apache.coyote.ActionCode; import org.apache.coyote.ActionHook; import org.apache.coyote.Adapter; +import org.apache.coyote.AsyncContextCallback; import org.apache.coyote.AsyncStateMachine; import org.apache.coyote.Processor; import org.apache.coyote.Request; @@ -915,7 +915,7 @@ public abstract class AbstractHttp11Processor implements ActionHook, Processor { request.getInputBuffer(); internalBuffer.addActiveFilter(savedBody); } else if (actionCode == ActionCode.ASYNC_START) { - asyncStateMachine.asyncStart((AsyncContextImpl) param); + asyncStateMachine.asyncStart((AsyncContextCallback) param); } else if (actionCode == ActionCode.ASYNC_DISPATCHED) { asyncStateMachine.asyncDispatched(); } else if (actionCode == ActionCode.ASYNC_TIMEOUT) { -- 2.11.0