JBossWeb SVN: r289 - trunk/java/org/apache/catalina/manager/util.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2007-10-02 10:08:19 -0400 (Tue, 02 Oct 2007)
New Revision: 289
Modified:
trunk/java/org/apache/catalina/manager/util/SessionUtils.java
Log:
- Fix one explicit warning.
Modified: trunk/java/org/apache/catalina/manager/util/SessionUtils.java
===================================================================
--- trunk/java/org/apache/catalina/manager/util/SessionUtils.java 2007-10-02 01:14:17 UTC (rev 288)
+++ trunk/java/org/apache/catalina/manager/util/SessionUtils.java 2007-10-02 14:08:19 UTC (rev 289)
@@ -118,10 +118,10 @@
Object probableEngine = tapestryArray.get(0);
if (null != probableEngine) {
try {
- Method readMethod = probableEngine.getClass().getMethod("getLocale", null);//$NON-NLS-1$
+ Method readMethod = probableEngine.getClass().getMethod("getLocale", (Class[]) null);//$NON-NLS-1$
if (null != readMethod) {
// Call the property getter and return the value
- Object possibleLocale = readMethod.invoke(probableEngine, null);
+ Object possibleLocale = readMethod.invoke(probableEngine, (Object[]) null);
if (null != possibleLocale && possibleLocale instanceof Locale) {
locale = (Locale) possibleLocale;
}
17 years, 3 months
JBossWeb SVN: r288 - in trunk/java/org/apache: tomcat/util/net and 1 other directory.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2007-10-01 21:14:17 -0400 (Mon, 01 Oct 2007)
New Revision: 288
Removed:
trunk/java/org/apache/tomcat/util/net/BaseEndpoint.java
Modified:
trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
trunk/java/org/apache/coyote/http11/Http11AprProtocol.java
trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
Log:
- Remove BaseEndpoint (not used).
- Add concurrency checks for write and read. It should be
enough but I'm not certain at this point.
Modified: trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
===================================================================
--- trunk/java/org/apache/coyote/http11/Http11AprProcessor.java 2007-10-01 22:41:10 UTC (rev 287)
+++ trunk/java/org/apache/coyote/http11/Http11AprProcessor.java 2007-10-02 01:14:17 UTC (rev 288)
@@ -326,12 +326,29 @@
protected int cometTimeout = -1;
protected boolean readNotifications = true;
+ protected boolean writeNotification = false;
protected boolean nonBlocking = true;
+ protected boolean cometProcessing = false;
// ------------------------------------------------------------- Properties
+ public void startProcessing() {
+ cometProcessing = true;
+ }
+
+
+ public void endProcessing() {
+ cometProcessing = false;
+ }
+
+
+ public boolean getWriteNotification() {
+ return writeNotification;
+ }
+
+
public boolean getReadNotifications() {
return readNotifications;
}
@@ -762,6 +779,8 @@
try {
// If processing a write event, must flush any leftover bytes first
if (status == SocketStatus.OPEN_WRITE) {
+ // The write notification is now done
+ writeNotification = false;
// FIXME: If the flush does not manage to flush all leftover bytes, it is possible
// that the servlet is not going to be able to write bytes. This will be handled properly,
// but is wasteful.
@@ -1250,9 +1269,13 @@
readNotifications = true;
endpoint.getCometPoller().add(socket, timeout, false, false, true);
} else if (actionCode == ActionCode.ACTION_COMET_WRITE) {
- // FIXME: Maybe, should check (?)
- // FIXME: If called synchronously, setting a flag instead of a direct call is needed.
- endpoint.getCometPoller().add(socket, timeout, false, true, false);
+ // An event is being processed already:adding for write will be done
+ // when the socket gets back to the poller
+ if (cometProcessing) {
+ writeNotification = true;
+ } else {
+ endpoint.getCometPoller().add(socket, timeout, false, true, false);
+ }
} else if (actionCode == ActionCode.ACTION_COMET_TIMEOUT) {
cometTimeout = ((Integer) param).intValue();
}
Modified: trunk/java/org/apache/coyote/http11/Http11AprProtocol.java
===================================================================
--- trunk/java/org/apache/coyote/http11/Http11AprProtocol.java 2007-10-01 22:41:10 UTC (rev 287)
+++ trunk/java/org/apache/coyote/http11/Http11AprProtocol.java 2007-10-02 01:14:17 UTC (rev 288)
@@ -514,6 +514,7 @@
SocketState state = SocketState.CLOSED;
if (result != null) {
+ result.startProcessing();
// Call the appropriate event
try {
state = result.event(status);
@@ -546,8 +547,9 @@
}
} else {
proto.endpoint.getCometPoller().add(socket, result.getCometTimeout(),
- result.getReadNotifications(), false, false);
+ result.getReadNotifications(), result.getWriteNotification(), false);
}
+ result.endProcessing();
}
}
return state;
Modified: trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
===================================================================
--- trunk/java/org/apache/tomcat/util/net/AprEndpoint.java 2007-10-01 22:41:10 UTC (rev 287)
+++ trunk/java/org/apache/tomcat/util/net/AprEndpoint.java 2007-10-02 01:14:17 UTC (rev 288)
@@ -342,8 +342,6 @@
*/
protected Poller[] pollers = null;
protected int pollerRoundRobin = 0;
- // FIXME: due to Comet and the socket state, getPoller should accept the socket as an argument,
- // or (better) a getPoller(long socket) should be added for cases that need it
public Poller getPoller() {
pollerRoundRobin = (pollerRoundRobin + 1) % pollers.length;
return pollers[pollerRoundRobin];
@@ -355,6 +353,8 @@
*/
protected Poller[] cometPollers = null;
protected int cometPollerRoundRobin = 0;
+ // FIXME: due to Comet and the socket state, getPoller should accept the socket as an argument,
+ // or (better) a getPoller(long socket) should be added for cases that need it
public Poller getCometPoller() {
cometPollerRoundRobin = (cometPollerRoundRobin + 1) % cometPollers.length;
return cometPollers[cometPollerRoundRobin];
@@ -1589,12 +1589,6 @@
SocketInfo info = localAddList.get();
while (info != null) {
if (info.read || info.write) {
- // FIXME: Check concurrency to see if the socket isn't being processed for an
- // event (such as a read if a write is added): need to add a "processing event"
- // concurrent map ...
- if (comet) {
-
- }
// Store timeout
timeouts.add(info.socket, System.currentTimeMillis() + info.timeout);
if (comet) {
@@ -1653,7 +1647,6 @@
for (int n = 0; n < rv; n++) {
timeouts.remove(desc[n*2+1]);
// Check for failed sockets and hand this socket off to a worker
- // FIXME: Need to check for a write
if (((desc[n*2] & Poll.APR_POLLHUP) == Poll.APR_POLLHUP)
|| ((desc[n*2] & Poll.APR_POLLERR) == Poll.APR_POLLERR)
|| (comet &&
@@ -1671,7 +1664,7 @@
}
} else if (rv < 0) {
int errn = -rv;
- /* Any non timeup or interrupted error is critical */
+ // Any non timeup or interrupted error is critical
if ((errn != Status.TIMEUP) && (errn != Status.EINTR)) {
if (errn > Status.APR_OS_START_USERERR) {
errn -= Status.APR_OS_START_USERERR;
@@ -1689,6 +1682,8 @@
// Process socket timeouts
if (soTimeout > 0 && maintainTime > 1000000L && running) {
+ // This works and uses only one timeout mechanism for everything, but the
+ // non Comet poller might be a bit faster by using the old maintain.
maintainTime = 0;
long date = System.currentTimeMillis();
long socket = timeouts.check(date);
Deleted: trunk/java/org/apache/tomcat/util/net/BaseEndpoint.java
===================================================================
--- trunk/java/org/apache/tomcat/util/net/BaseEndpoint.java 2007-10-01 22:41:10 UTC (rev 287)
+++ trunk/java/org/apache/tomcat/util/net/BaseEndpoint.java 2007-10-02 01:14:17 UTC (rev 288)
@@ -1,358 +0,0 @@
-/*
- * 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.tomcat.util.net;
-
-import java.net.InetAddress;
-import java.util.concurrent.Executor;
-
-import org.apache.tomcat.util.res.StringManager;
-import org.jboss.logging.Logger;
-import org.jboss.logging.Logger;
-
-/**
- * APR tailored thread pool, providing the following services:
- * <ul>
- * <li>Socket acceptor thread</li>
- * <li>Socket poller thread</li>
- * <li>Sendfile thread</li>
- * <li>Worker threads pool</li>
- * </ul>
- *
- * When switching to Java 5, there's an opportunity to use the virtual
- * machine's thread pool.
- *
- * @author Mladen Turk
- * @author Remy Maucherat
- */
-public abstract class BaseEndpoint {
-
-
- // -------------------------------------------------------------- Constants
-
-
- protected static Logger log = Logger.getLogger(BaseEndpoint.class);
-
- protected static StringManager sm =
- StringManager.getManager("org.apache.tomcat.util.net.res");
-
-
- /**
- * The Request attribute key for the cipher suite.
- */
- public static final String CIPHER_SUITE_KEY = "javax.servlet.request.cipher_suite";
-
- /**
- * The Request attribute key for the key size.
- */
- public static final String KEY_SIZE_KEY = "javax.servlet.request.key_size";
-
- /**
- * The Request attribute key for the client certificate chain.
- */
- public static final String CERTIFICATE_KEY = "javax.servlet.request.X509Certificate";
-
- /**
- * The Request attribute key for the session id.
- * This one is a Tomcat extension to the Servlet spec.
- */
- public static final String SESSION_ID_KEY = "javax.servlet.request.ssl_session";
-
-
- // ----------------------------------------------------------------- Fields
-
-
- /**
- * Running state of the endpoint.
- */
- protected volatile boolean running = false;
-
-
- /**
- * Will be set to true whenever the endpoint is paused.
- */
- protected volatile boolean paused = false;
-
-
- /**
- * Track the initialization state of the endpoint.
- */
- protected boolean initialized = false;
-
-
- /**
- * Current worker threads busy count.
- */
- protected int curThreadsBusy = 0;
-
-
- /**
- * Current worker threads count.
- */
- protected int curThreads = 0;
-
-
- /**
- * Sequence number used to generate thread names.
- */
- protected int sequence = 0;
-
-
- // ------------------------------------------------------------- Properties
-
-
- /**
- * External Executor based thread pool.
- */
- protected Executor executor = null;
- public void setExecutor(Executor executor) { this.executor = executor; }
- public Executor getExecutor() { return executor; }
-
-
- /**
- * Maximum amount of worker threads.
- */
- protected int maxThreads = 40;
- public void setMaxThreads(int maxThreads) { this.maxThreads = maxThreads; }
- public int getMaxThreads() { return maxThreads; }
-
-
- /**
- * Priority of the acceptor and poller threads.
- */
- protected int threadPriority = Thread.NORM_PRIORITY;
- public void setThreadPriority(int threadPriority) { this.threadPriority = threadPriority; }
- public int getThreadPriority() { return threadPriority; }
-
-
- /**
- * Server socket port.
- */
- protected int port;
- public int getPort() { return port; }
- public void setPort(int port ) { this.port=port; }
-
-
- /**
- * Address for the server socket.
- */
- protected InetAddress address;
- public InetAddress getAddress() { return address; }
- public void setAddress(InetAddress address) { this.address = address; }
-
-
- /**
- * Allows the server developer to specify the backlog that
- * should be used for server sockets. By default, this value
- * is 100.
- */
- protected int backlog = 100;
- public void setBacklog(int backlog) { if (backlog > 0) this.backlog = backlog; }
- public int getBacklog() { return backlog; }
-
-
- /**
- * Socket TCP no delay.
- */
- protected boolean tcpNoDelay = false;
- public boolean getTcpNoDelay() { return tcpNoDelay; }
- public void setTcpNoDelay(boolean tcpNoDelay) { this.tcpNoDelay = tcpNoDelay; }
-
-
- /**
- * Socket linger.
- */
- protected int soLinger = 100;
- public int getSoLinger() { return soLinger; }
- public void setSoLinger(int soLinger) { this.soLinger = soLinger; }
-
-
- /**
- * Socket timeout.
- */
- protected int soTimeout = -1;
- public int getSoTimeout() { return soTimeout; }
- public void setSoTimeout(int soTimeout) { this.soTimeout = soTimeout; }
-
-
- /**
- * The default is true - the created threads will be
- * in daemon mode. If set to false, the control thread
- * will not be daemon - and will keep the process alive.
- */
- protected boolean daemon = true;
- public void setDaemon(boolean b) { daemon = b; }
- public boolean getDaemon() { return daemon; }
-
-
- /**
- * Name of the thread pool, which will be used for naming child threads.
- */
- protected String name = "TP";
- public void setName(String name) { this.name = name; }
- public String getName() { return name; }
-
-
- /**
- * Dummy maxSpareThreads property.
- */
- public int getMaxSpareThreads() { return 0; }
-
-
- /**
- * Dummy minSpareThreads property.
- */
- public int getMinSpareThreads() { return 0; }
-
-
- // --------------------------------------------------------- Public Methods
-
-
- /**
- * Return the amount of threads that are managed by the pool.
- *
- * @return the amount of threads that are managed by the pool
- */
- public int getCurrentThreadCount() {
- return curThreads;
- }
-
-
- /**
- * Return the amount of threads currently busy.
- *
- * @return the amount of threads currently busy
- */
- public int getCurrentThreadsBusy() {
- return curThreadsBusy;
- }
-
-
- /**
- * Return the state of the endpoint.
- *
- * @return true if the endpoint is running, false otherwise
- */
- public boolean isRunning() {
- return running;
- }
-
-
- /**
- * Return the state of the endpoint.
- *
- * @return true if the endpoint is paused, false otherwise
- */
- public boolean isPaused() {
- return paused;
- }
-
-
- // ----------------------------------------------- Public Lifecycle Methods
-
-
- /**
- * Initialize the endpoint.
- */
- public abstract void init()
- throws Exception;
-
-
- /**
- * Start the APR endpoint, creating acceptor, poller and sendfile threads.
- */
- public abstract void start()
- throws Exception;
-
-
- /**
- * Pause the endpoint, which will make it stop accepting new sockets.
- */
- public void pause() {
- if (running && !paused) {
- paused = true;
- unlockAccept();
- }
- }
-
-
- /**
- * Resume the endpoint, which will make it start accepting new sockets
- * again.
- */
- public void resume() {
- if (running) {
- paused = false;
- }
- }
-
-
- /**
- * Stop the endpoint. This will cause all processing threads to stop.
- */
- public abstract void stop();
-
-
- /**
- * Deallocate APR memory pools, and close server socket.
- */
- public abstract void destroy() throws Exception;
-
-
- // ------------------------------------------------------ Protected Methods
-
-
- /**
- * Get a sequence number used for thread naming.
- */
- protected int getSequence() {
- return sequence++;
- }
-
-
- /**
- * Unlock the server socket accept using a bugus connection.
- */
- protected void unlockAccept() {
- java.net.Socket s = null;
- try {
- // Need to create a connection to unlock the accept();
- if (address == null) {
- s = new java.net.Socket("127.0.0.1", port);
- } else {
- s = new java.net.Socket(address, port);
- // setting soLinger to a small value will help shutdown the
- // connection quicker
- s.setSoLinger(true, 0);
- }
- } catch(Exception e) {
- if (log.isDebugEnabled()) {
- log.debug(sm.getString("endpoint.debug.unlock", "" + port), e);
- }
- } finally {
- if (s != null) {
- try {
- s.close();
- } catch (Exception e) {
- // Ignore
- }
- }
- }
- }
-
-
-}
17 years, 3 months
JBossWeb SVN: r287 - in trunk/java/org/apache/catalina: connector and 2 other directories.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2007-10-01 18:41:10 -0400 (Mon, 01 Oct 2007)
New Revision: 287
Removed:
trunk/java/org/apache/catalina/CometEvent.java
trunk/java/org/apache/catalina/CometFilter.java
trunk/java/org/apache/catalina/CometFilterChain.java
trunk/java/org/apache/catalina/CometProcessor.java
Modified:
trunk/java/org/apache/catalina/Valve.java
trunk/java/org/apache/catalina/connector/CometEventImpl.java
trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
trunk/java/org/apache/catalina/core/ApplicationFilterChain.java
trunk/java/org/apache/catalina/core/ApplicationFilterFactory.java
trunk/java/org/apache/catalina/core/StandardContextValve.java
trunk/java/org/apache/catalina/core/StandardEngineValve.java
trunk/java/org/apache/catalina/core/StandardHostValve.java
trunk/java/org/apache/catalina/core/StandardWrapperValve.java
trunk/java/org/apache/catalina/valves/CometConnectionManagerValve.java
trunk/java/org/apache/catalina/valves/ValveBase.java
Log:
- Finish moving the Comet API to its own package (if really
needed, deprecated classes and interfaces can be added to
org.apache.catalina).
Deleted: trunk/java/org/apache/catalina/CometEvent.java
===================================================================
--- trunk/java/org/apache/catalina/CometEvent.java 2007-09-30 22:34:24 UTC (rev 286)
+++ trunk/java/org/apache/catalina/CometEvent.java 2007-10-01 22:41:10 UTC (rev 287)
@@ -1,189 +0,0 @@
-/*
- * 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.catalina;
-
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * The CometEvent interface.
- *
- * @author Filip Hanik
- * @author Remy Maucherat
- */
-public interface CometEvent {
-
- /**
- * Enumeration describing the major events that the container can invoke
- * the CometProcessor event() method with:
- * <ul>
- * <li>BEGIN - will be called at the beginning
- * of the processing of the connection. It can be used to initialize any relevant
- * fields using the request and response objects. Between the end of the processing
- * of this event, and the beginning of the processing of the end or error events,
- * it is possible to use the response object to write data on the open connection.
- * Note that the response object and depedent OutputStream and Writer are still
- * not synchronized, so when they are accessed by multiple threads,
- * synchronization is mandatory. After processing the initial event, the request
- * is considered to be committed.</li>
- * <li>READ - This indicates that input data is available, and that one read can be made
- * without blocking. The available and ready methods of the InputStream or
- * Reader may be used to determine if there is a risk of blocking: the servlet
- * should read while data is reported available. When encountering a read error,
- * the servlet should report it by propagating the exception properly. Throwing
- * an exception will cause the error event to be invoked, and the connection
- * will be closed.
- * Alternately, it is also possible to catch any exception, perform clean up
- * on any data structure the servlet may be using, and using the close method
- * of the event. It is not allowed to attempt reading data from the request
- * object outside of the execution of this method.</li>
- * <li>END - End may be called to end the processing of the request. Fields that have
- * been initialized in the begin method should be reset. After this event has
- * been processed, the request and response objects, as well as all their dependent
- * objects will be recycled and used to process other requests.</li>
- * <li>ERROR - Error will be called by the container in the case where an IO exception
- * or a similar unrecoverable error occurs on the connection. Fields that have
- * been initialized in the begin method should be reset. After this event has
- * been processed, the request and response objects, as well as all their dependent
- * objects will be recycled and used to process other requests.</li>
- * <li>EVENT - Event will be called by the container after the resume() method is called.
- * This allows you get an event instantly, and you can perform IO actions
- * or close the Comet connection.</li>
- * <li>WRITE - Write is sent if the servlet is using the ready method. This means that
- * the connection is ready to receive data to be written out.</li>
- * </ul>
- */
- public enum EventType {BEGIN, READ, END, ERROR, WRITE, EVENT}
-
-
- /**
- * Event details:
- * <ul>
- * <li>TIMEOUT - the connection timed out (sub type of ERROR); note that this ERROR type is not fatal, and
- * the connection will not be closed unless the servlet uses the close method of the event</li>
- * <li>CLIENT_DISCONNECT - the client connection was closed (sub type of ERROR)</li>
- * <li>IOEXCEPTION - an IO exception occurred, such as invalid content, for example, an invalid chunk block (sub type of ERROR)</li>
- * <li>WEBAPP_RELOAD - the webapplication is being reloaded (sub type of END)</li>
- * <li>SERVER_SHUTDOWN - the server is shutting down (sub type of END)</li>
- * <li>SESSION_END - the servlet ended the session (sub type of END)</li>
- * </ul>
- */
- public enum EventSubType { TIMEOUT, CLIENT_DISCONNECT, IOEXCEPTION, WEBAPP_RELOAD, SERVER_SHUTDOWN, SESSION_END }
-
-
- /**
- * Returns the HttpServletRequest.
- *
- * @return HttpServletRequest
- */
- public HttpServletRequest getHttpServletRequest();
-
- /**
- * Returns the HttpServletResponse.
- *
- * @return HttpServletResponse
- */
- public HttpServletResponse getHttpServletResponse();
-
- /**
- * Returns the event type.
- *
- * @return EventType
- * @see #EventType
- */
- public EventType getEventType();
-
- /**
- * Returns the sub type of this event.
- *
- * @return EventSubType
- * @see #EventSubType
- */
- public EventSubType getEventSubType();
-
- /**
- * Ends the Comet session. This signals to the container that
- * the container wants to end the comet session. This will send back to the
- * client a notice that the server has no more data to send as part of this
- * request. The servlet should perform any needed cleanup as if it had recieved
- * an END or ERROR event.
- *
- * @throws IOException if an IO exception occurs
- */
- public void close() throws IOException;
-
- /**
- * This method sets the timeout in milliseconds of idle time on the connection.
- * The timeout is reset every time data is received from the connection or data is flushed
- * using <code>response.flushBuffer()</code>. If a timeout occurs, the
- * servlet will receive an ERROR/TIMEOUT event which will not result in automatically closing
- * the event (the event may be closed using the close() method).
- *
- * @param timeout The timeout in milliseconds for this connection, must be a positive value, larger than 0
- */
- public void setTimeout(int timeout);
-
- /**
- * Returns true when data may be written to the connection (the flag becomes false
- * when the client is unable to accept data fast enough). When the flag becomes false,
- * the servlet must stop writing data. If there's an attempt to flush additional data
- * to the client and data still cannot be written immediately, an IOException will be
- * thrown. If calling this method returns false, it will also
- * request notification when the connection becomes available for writing again, and the
- * servlet will recieve a write event.<br/>
- *
- * Note: If the servlet is not using ready, and is writing its output inside the
- * container threads, using this method is not mandatory, but any incomplete writes will be
- * performed again in blocking mode.
- *
- * @return boolean true if you can write to the response
- */
- public boolean ready();
-
- /**
- * Suspend processing of the connection until the configured timeout occurs, or resume() is called. In
- * parctice, this means the servlet will no longer recieve read events. Reading should always be
- * performed synchronously in the Tomcat threads unless the connection has been suspended.
- */
- public void suspend();
-
- /**
- * Will ask the servlet container to send a generic event to the servlet, where the request can be processed
- * synchronously (for example, it is possible to use this to complete the request after some asynchronous
- * processing is done). This also resumes read events if they had been disabled using suspend (it is possible
- * to call suspend again). It is possible to call resume without calling suspend before.
- */
- public void resume();
-
-}
-
-/**
- * Returns true if data is available to be read. If attempting to read and this flag is false,
- * an IO exception will occur.
- *
- * <!--Note: If the servlet is not using isReadable, and is reading data inside the
- * container threads, it is not needed to call this method. Any such read will be
- * performed again in blocking mode.-->
- *
- * @see javax.servlet.ServletRequest#getInputStream()#available()>0
- * @return boolean
- */
-//public boolean isReadable();
Deleted: trunk/java/org/apache/catalina/CometFilter.java
===================================================================
--- trunk/java/org/apache/catalina/CometFilter.java 2007-09-30 22:34:24 UTC (rev 286)
+++ trunk/java/org/apache/catalina/CometFilter.java 2007-10-01 22:41:10 UTC (rev 287)
@@ -1,82 +0,0 @@
-/*
- * 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.catalina;
-
-import java.io.IOException;
-
-import javax.servlet.Filter;
-import javax.servlet.ServletException;
-
-/**
- * A Comet filter, similar to regular filters, performs filtering tasks on either
- * the request to a resource (a Comet servlet), or on the response from a resource, or both.
- * <br><br>
- * Filters perform filtering in the <code>doFilterEvent</code> method. Every Filter has access to
- * a FilterConfig object from which it can obtain its initialization parameters, a
- * reference to the ServletContext which it can use, for example, to load resources
- * needed for filtering tasks.
- * <p>
- * Filters are configured in the deployment descriptor of a web application
- * <p>
- * Examples that have been identified for this design are<br>
- * 1) Authentication Filters <br>
- * 2) Logging and Auditing Filters <br>
- * 3) Image conversion Filters <br>
- * 4) Data compression Filters <br>
- * 5) Encryption Filters <br>
- * 6) Tokenizing Filters <br>
- * 7) Filters that trigger resource access events <br>
- * 8) XSL/T filters <br>
- * 9) Mime-type chain Filter <br>
- * <br>
- *
- * @author Remy Maucherat
- * @author Filip Hanik
- */
-public interface CometFilter extends Filter {
-
-
- /**
- * The <code>doFilterEvent</code> method of the CometFilter is called by the container
- * each time a request/response pair is passed through the chain due
- * to a client event for a resource at the end of the chain. The CometFilterChain passed in to this
- * method allows the Filter to pass on the event to the next entity in the
- * chain.<p>
- * A typical implementation of this method would follow the following pattern:- <br>
- * 1. Examine the request<br>
- * 2. Optionally wrap the request object contained in the event with a custom implementation to
- * filter content or headers for input filtering and pass a CometEvent instance containing
- * the wrapped request to the next filter<br>
- * 3. Optionally wrap the response object contained in the event with a custom implementation to
- * filter content or headers for output filtering and pass a CometEvent instance containing
- * the wrapped request to the next filter<br>
- * 4. a) <strong>Either</strong> invoke the next entity in the chain using the CometFilterChain object (<code>chain.doFilterEvent()</code>), <br>
- * 4. b) <strong>or</strong> not pass on the request/response pair to the next entity in the filter chain to block the event processing<br>
- * 5. Directly set fields on the response after invocation of the next entity in the filter chain.
- *
- * @param event the event that is being processed. Another event may be passed along the chain.
- * @param chain
- * @throws IOException
- * @throws ServletException
- */
- public void doFilterEvent(CometEvent event, CometFilterChain chain)
- throws IOException, ServletException;
-
-
-}
Deleted: trunk/java/org/apache/catalina/CometFilterChain.java
===================================================================
--- trunk/java/org/apache/catalina/CometFilterChain.java 2007-09-30 22:34:24 UTC (rev 286)
+++ trunk/java/org/apache/catalina/CometFilterChain.java 2007-10-01 22:41:10 UTC (rev 287)
@@ -1,46 +0,0 @@
-/*
- * 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.catalina;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-
-/**
- * A CometFilterChain is an object provided by the servlet container to the developer
- * giving a view into the invocation chain of a filtered event for a resource. Filters
- * use the CometFilterChain to invoke the next filter in the chain, or if the calling filter
- * is the last filter in the chain, to invoke the resource at the end of the chain.
- *
- * @author Remy Maucherat
- * @author Filip Hanik
- */
-public interface CometFilterChain {
-
-
- /**
- * Causes the next filter in the chain to be invoked, or if the calling filter is the last filter
- * in the chain, causes the resource at the end of the chain to be invoked.
- *
- * @param event the event to pass along the chain.
- */
- public void doFilterEvent(CometEvent event) throws IOException, ServletException;
-
-
-}
Deleted: trunk/java/org/apache/catalina/CometProcessor.java
===================================================================
--- trunk/java/org/apache/catalina/CometProcessor.java 2007-09-30 22:34:24 UTC (rev 286)
+++ trunk/java/org/apache/catalina/CometProcessor.java 2007-10-01 22:41:10 UTC (rev 287)
@@ -1,46 +0,0 @@
-/*
- * 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.catalina;
-
-import java.io.IOException;
-
-import javax.servlet.ServletException;
-import javax.servlet.Servlet;
-
-/**
- * This interface should be implemented by servlets which would like to handle
- * asynchronous IO, recieving events when data is available for reading, and
- * being able to output data without the need for being invoked by the container.
- * Note: When this interface is implemented, the service method of the servlet will
- * never be called, and will be replaced with a begin event.
- */
-public interface CometProcessor extends Servlet
-{
-
- /**
- * Process the given Comet event.
- *
- * @param event The Comet event that will be processed
- * @throws IOException
- * @throws ServletException
- */
- public void event(CometEvent event)
- throws IOException, ServletException;
-
-}
Modified: trunk/java/org/apache/catalina/Valve.java
===================================================================
--- trunk/java/org/apache/catalina/Valve.java 2007-09-30 22:34:24 UTC (rev 286)
+++ trunk/java/org/apache/catalina/Valve.java 2007-10-01 22:41:10 UTC (rev 287)
@@ -24,6 +24,7 @@
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
+import org.apache.comet.CometEvent;
/**
Modified: trunk/java/org/apache/catalina/connector/CometEventImpl.java
===================================================================
--- trunk/java/org/apache/catalina/connector/CometEventImpl.java 2007-09-30 22:34:24 UTC (rev 286)
+++ trunk/java/org/apache/catalina/connector/CometEventImpl.java 2007-10-01 22:41:10 UTC (rev 287)
@@ -23,8 +23,8 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.apache.catalina.CometEvent;
import org.apache.catalina.util.StringManager;
+import org.apache.comet.CometEvent;
public class CometEventImpl implements CometEvent {
Modified: trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
===================================================================
--- trunk/java/org/apache/catalina/connector/CoyoteAdapter.java 2007-09-30 22:34:24 UTC (rev 286)
+++ trunk/java/org/apache/catalina/connector/CoyoteAdapter.java 2007-10-01 22:41:10 UTC (rev 287)
@@ -20,11 +20,11 @@
import java.io.IOException;
-import org.apache.catalina.CometEvent;
import org.apache.catalina.Context;
import org.apache.catalina.Globals;
import org.apache.catalina.Wrapper;
import org.apache.catalina.util.StringManager;
+import org.apache.comet.CometEvent;
import org.apache.coyote.ActionCode;
import org.apache.coyote.Adapter;
import org.apache.tomcat.util.buf.B2CConverter;
@@ -35,7 +35,6 @@
import org.apache.tomcat.util.http.ServerCookie;
import org.apache.tomcat.util.net.SocketStatus;
import org.jboss.logging.Logger;
-import org.jboss.logging.Logger;
/**
Modified: trunk/java/org/apache/catalina/core/ApplicationFilterChain.java
===================================================================
--- trunk/java/org/apache/catalina/core/ApplicationFilterChain.java 2007-09-30 22:34:24 UTC (rev 286)
+++ trunk/java/org/apache/catalina/core/ApplicationFilterChain.java 2007-10-01 22:41:10 UTC (rev 287)
@@ -32,15 +32,15 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.apache.catalina.CometEvent;
-import org.apache.catalina.CometFilter;
-import org.apache.catalina.CometFilterChain;
-import org.apache.catalina.CometProcessor;
import org.apache.catalina.Globals;
import org.apache.catalina.InstanceEvent;
import org.apache.catalina.security.SecurityUtil;
import org.apache.catalina.util.InstanceSupport;
import org.apache.catalina.util.StringManager;
+import org.apache.comet.CometEvent;
+import org.apache.comet.CometFilter;
+import org.apache.comet.CometFilterChain;
+import org.apache.comet.CometProcessor;
/**
* Implementation of <code>javax.servlet.FilterChain</code> used to manage
Modified: trunk/java/org/apache/catalina/core/ApplicationFilterFactory.java
===================================================================
--- trunk/java/org/apache/catalina/core/ApplicationFilterFactory.java 2007-09-30 22:34:24 UTC (rev 286)
+++ trunk/java/org/apache/catalina/core/ApplicationFilterFactory.java 2007-10-01 22:41:10 UTC (rev 287)
@@ -23,11 +23,11 @@
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
-import org.apache.catalina.CometFilter;
import org.apache.catalina.Globals;
import org.apache.catalina.Wrapper;
import org.apache.catalina.connector.Request;
import org.apache.catalina.deploy.FilterMap;
+import org.apache.comet.CometFilter;
/**
* Factory for the creation and caching of Filters and creationg
Modified: trunk/java/org/apache/catalina/core/StandardContextValve.java
===================================================================
--- trunk/java/org/apache/catalina/core/StandardContextValve.java 2007-09-30 22:34:24 UTC (rev 286)
+++ trunk/java/org/apache/catalina/core/StandardContextValve.java 2007-10-01 22:41:10 UTC (rev 287)
@@ -27,7 +27,6 @@
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletResponse;
-import org.apache.catalina.CometEvent;
import org.apache.catalina.Container;
import org.apache.catalina.Globals;
import org.apache.catalina.Wrapper;
@@ -35,6 +34,7 @@
import org.apache.catalina.connector.Response;
import org.apache.catalina.util.StringManager;
import org.apache.catalina.valves.ValveBase;
+import org.apache.comet.CometEvent;
import org.apache.tomcat.util.buf.MessageBytes;
/**
Modified: trunk/java/org/apache/catalina/core/StandardEngineValve.java
===================================================================
--- trunk/java/org/apache/catalina/core/StandardEngineValve.java 2007-09-30 22:34:24 UTC (rev 286)
+++ trunk/java/org/apache/catalina/core/StandardEngineValve.java 2007-10-01 22:41:10 UTC (rev 287)
@@ -24,12 +24,12 @@
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
-import org.apache.catalina.CometEvent;
import org.apache.catalina.Host;
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.util.StringManager;
import org.apache.catalina.valves.ValveBase;
+import org.apache.comet.CometEvent;
/**
Modified: trunk/java/org/apache/catalina/core/StandardHostValve.java
===================================================================
--- trunk/java/org/apache/catalina/core/StandardHostValve.java 2007-09-30 22:34:24 UTC (rev 286)
+++ trunk/java/org/apache/catalina/core/StandardHostValve.java 2007-10-01 22:41:10 UTC (rev 287)
@@ -26,7 +26,6 @@
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
-import org.apache.catalina.CometEvent;
import org.apache.catalina.Context;
import org.apache.catalina.Globals;
import org.apache.catalina.Wrapper;
@@ -37,8 +36,8 @@
import org.apache.catalina.util.RequestUtil;
import org.apache.catalina.util.StringManager;
import org.apache.catalina.valves.ValveBase;
+import org.apache.comet.CometEvent;
import org.jboss.logging.Logger;
-import org.jboss.logging.Logger;
/**
Modified: trunk/java/org/apache/catalina/core/StandardWrapperValve.java
===================================================================
--- trunk/java/org/apache/catalina/core/StandardWrapperValve.java 2007-09-30 22:34:24 UTC (rev 286)
+++ trunk/java/org/apache/catalina/core/StandardWrapperValve.java 2007-10-01 22:41:10 UTC (rev 287)
@@ -28,8 +28,6 @@
import javax.servlet.UnavailableException;
import javax.servlet.http.HttpServletResponse;
-import org.apache.catalina.CometEvent;
-import org.apache.catalina.CometProcessor;
import org.apache.catalina.Context;
import org.apache.catalina.Globals;
import org.apache.catalina.connector.ClientAbortException;
@@ -37,6 +35,8 @@
import org.apache.catalina.connector.Response;
import org.apache.catalina.util.StringManager;
import org.apache.catalina.valves.ValveBase;
+import org.apache.comet.CometEvent;
+import org.apache.comet.CometProcessor;
import org.apache.tomcat.util.buf.MessageBytes;
import org.apache.tomcat.util.log.SystemLogHandler;
Modified: trunk/java/org/apache/catalina/valves/CometConnectionManagerValve.java
===================================================================
--- trunk/java/org/apache/catalina/valves/CometConnectionManagerValve.java 2007-09-30 22:34:24 UTC (rev 286)
+++ trunk/java/org/apache/catalina/valves/CometConnectionManagerValve.java 2007-10-01 22:41:10 UTC (rev 287)
@@ -28,7 +28,6 @@
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
-import org.apache.catalina.CometEvent;
import org.apache.catalina.Context;
import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleEvent;
@@ -39,6 +38,7 @@
import org.apache.catalina.connector.Response;
import org.apache.catalina.util.LifecycleSupport;
import org.apache.catalina.util.StringManager;
+import org.apache.comet.CometEvent;
/**
Modified: trunk/java/org/apache/catalina/valves/ValveBase.java
===================================================================
--- trunk/java/org/apache/catalina/valves/ValveBase.java 2007-09-30 22:34:24 UTC (rev 286)
+++ trunk/java/org/apache/catalina/valves/ValveBase.java 2007-10-01 22:41:10 UTC (rev 287)
@@ -27,7 +27,6 @@
import javax.management.ObjectName;
import javax.servlet.ServletException;
-import org.apache.catalina.CometEvent;
import org.apache.catalina.Contained;
import org.apache.catalina.Container;
import org.apache.catalina.Context;
@@ -40,8 +39,8 @@
import org.apache.catalina.connector.Response;
import org.apache.catalina.core.ContainerBase;
import org.apache.catalina.util.StringManager;
+import org.apache.comet.CometEvent;
import org.jboss.logging.Logger;
-import org.jboss.logging.Logger;
/**
17 years, 3 months