Author: markt Date: Mon Dec 6 15:01:34 2010 New Revision: 1042670 URL: http://svn.apache.org/viewvc?rev=1042670&view=rev Log: Re-factoring in support of https://issues.apache.org/bugzilla/show_bug.cgi?id=50360 Start to pull more getters/setters and the generic attribute handling. Note that the comments around generic attribute handling are aspirational in some cases but subsequent commits should align the behaviour to the comments.
Modified: tomcat/trunk/java/org/apache/coyote/AbstractProtocolHandler.java tomcat/trunk/java/org/apache/coyote/LocalStrings.properties tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java tomcat/trunk/java/org/apache/coyote/ajp/LocalStrings.properties tomcat/trunk/java/org/apache/coyote/ajp/LocalStrings_es.properties tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java tomcat/trunk/java/org/apache/coyote/http11/LocalStrings.properties tomcat/trunk/java/org/apache/coyote/http11/LocalStrings_es.properties tomcat/trunk/java/org/apache/coyote/http11/LocalStrings_fr.properties tomcat/trunk/java/org/apache/coyote/http11/LocalStrings_ja.properties Modified: tomcat/trunk/java/org/apache/coyote/AbstractProtocolHandler.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/AbstractProtocolHandler.java?rev=1042670&r1=1042669&r2=1042670&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/AbstractProtocolHandler.java (original) +++ tomcat/trunk/java/org/apache/coyote/AbstractProtocolHandler.java Mon Dec 6 15:01:34 2010 @@ -16,16 +16,28 @@ */ package org.apache.coyote; +import java.util.HashMap; +import java.util.Iterator; +import java.util.concurrent.Executor; + import javax.management.MBeanRegistration; import javax.management.ObjectName; import org.apache.juli.logging.Log; import org.apache.tomcat.util.net.AbstractEndpoint; +import org.apache.tomcat.util.res.StringManager; public abstract class AbstractProtocolHandler implements ProtocolHandler, MBeanRegistration { /** + * The string manager for this package. + */ + protected static final StringManager sm = + StringManager.getManager(Constants.Package); + + + /** * Name of MBean for the Global Request Processor. */ protected ObjectName rgOname = null; @@ -45,6 +57,83 @@ public abstract class AbstractProtocolHa protected AbstractEndpoint endpoint = null; + // ----------------------------------------------- Generic property handling + + /** + * Attributes provide a way for configuration to be passed to sub-components + * without the {...@link ProtocolHandler} being aware of the properties + * available on those sub-components. One example of such a sub-component is + * the {...@link org.apache.tomcat.util.net.ServerSocketFactory}. + */ + protected HashMap<String, Object> attributes = + new HashMap<String, Object>(); + + + /** + * Generic property setter called when a property for which a specific + * setter already exists within the {...@link ProtocolHandler} needs to be + * made available to sub-components. The specific setter will call this + * method to populate the attributes. + */ + @Override + public void setAttribute(String name, Object value) { + if (getLog().isTraceEnabled()) { + getLog().trace(sm.getString("abstractProtocolHandler.setAttribute", + name, value)); + } + attributes.put(name, value); + } + + + /** + * Used by sub-components to retrieve configuration information. + */ + @Override + public Object getAttribute(String key) { + Object value = attributes.get(key); + if (getLog().isTraceEnabled()) { + getLog().trace(sm.getString("abstractProtocolHandler.getAttribute", + key, value)); + } + return value; + } + + + /** + * Used by sub-components to retrieve configuration information. + */ + @Override + public Iterator<String> getAttributeNames() { + return attributes.keySet().iterator(); + } + + + /** + * Generic property setter used by the digester. Other code should not need + * to use this. The digester will only use this method if it can't find a + * more specific setter. That means the property belongs to the Endpoint, + * the ServerSocketFactory or some other lower level component. This method + * ensures that it is visible to both. + */ + public boolean setProperty(String name, String value) { + setAttribute(name, value); + return endpoint.setProperty(name, value); + } + + + /** + * Generic property getter used by the digester. Other code should not need + * to use this. + */ + public String getProperty(String name) { + // Since all calls to setProperty() will place the property in the + // attributes list, just retrieve it from there. + return (String)getAttribute(name); + } + + + // ------------------------------- Properties managed by the ProtocolHandler + /** * The adapter provides the link between the ProtocolHandler and the * connector. @@ -56,6 +145,57 @@ public abstract class AbstractProtocolHa public Adapter getAdapter() { return adapter; } + // ---------------------- Properties that are passed through to the EndPoint + + @Override + public Executor getExecutor() { return endpoint.getExecutor(); } + public void setExecutor(Executor executor) { + endpoint.setExecutor(executor); + } + + + public int getMaxThreads() { return endpoint.getMaxThreads(); } + public void setMaxThreads(int maxThreads) { + endpoint.setMaxThreads(maxThreads); + } + + + public int getMinSpareThreads() { return endpoint.getMinSpareThreads(); } + public void setMinSpareThreads(int minSpareThreads) { + endpoint.setMinSpareThreads(minSpareThreads); + } + + + public int getThreadPriority() { return endpoint.getThreadPriority(); } + public void setThreadPriority(int threadPriority) { + endpoint.setThreadPriority(threadPriority); + } + + + public int getPort() { return endpoint.getPort(); } + public void setPort(int port) { endpoint.setPort(port); } + + + public int getBacklog() { return endpoint.getBacklog(); } + public void setBacklog(int backlog) { endpoint.setBacklog(backlog); } + + + public boolean getTcpNoDelay() { return endpoint.getTcpNoDelay(); } + public void setTcpNoDelay(boolean tcpNoDelay) { + endpoint.setTcpNoDelay(tcpNoDelay); + } + + + public int getSoLinger() { return endpoint.getSoLinger(); } + public void setSoLinger(int soLinger) { endpoint.setSoLinger(soLinger); } + + + // ------------------------ Properties that are made available as attributes + // -------------------------------------(and passed through to the EndPoint) + + + + // -------------------------------------------------------- Abstract methods /** * Concrete implementations need to provide access to their logger to be * used by the abstract classes. Modified: tomcat/trunk/java/org/apache/coyote/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/LocalStrings.properties?rev=1042670&r1=1042669&r2=1042670&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/coyote/LocalStrings.properties Mon Dec 6 15:01:34 2010 @@ -13,4 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +abstractProtocolHandler.getAttribute=Get attribute [{0}] with value [{1}] +abstractProtocolHandler.setAttribute=Set attribute [{0}] with value [{1}] + asyncStateMachine.invalidAsyncState=Calling [{0}] is not valid for a request with Async state [{1}] Modified: tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java?rev=1042670&r1=1042669&r2=1042670&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProtocol.java Mon Dec 6 15:01:34 2010 @@ -18,9 +18,6 @@ package org.apache.coyote.ajp; import java.net.InetAddress; import java.net.URLEncoder; -import java.util.HashMap; -import java.util.Iterator; -import java.util.concurrent.Executor; import javax.management.MBeanServer; import javax.management.ObjectName; @@ -35,48 +32,6 @@ public abstract class AbstractAjpProtoco */ protected static final StringManager sm = StringManager.getManager(Constants.Package); - protected HashMap<String, Object> attributes = new HashMap<String, Object>(); - - /** - * Pass config info - */ - @Override - public void setAttribute(String name, Object value) { - if (getLog().isTraceEnabled()) { - getLog().trace(sm.getString("ajpprotocol.setattribute", name, value)); - } - attributes.put(name, value); - } - - @Override - public Object getAttribute(String key) { - if (getLog().isTraceEnabled()) { - getLog().trace(sm.getString("ajpprotocol.getattribute", key)); - } - return attributes.get(key); - } - - - @Override - public Iterator<String> getAttributeNames() { - return attributes.keySet().iterator(); - } - - /** - * Set a property. - */ - public boolean setProperty(String name, String value) { - setAttribute(name, value); //store all settings - return endpoint.setProperty(name, value); - } - - /** - * Get a property - */ - public String getProperty(String name) { - return (String)getAttribute(name); - } - @Override public void pause() throws Exception { try { @@ -143,35 +98,10 @@ public abstract class AbstractAjpProtoco public int getProcessorCache() { return this.processorCache; } public void setProcessorCache(int processorCache) { this.processorCache = processorCache; } - @Override - public Executor getExecutor() { return endpoint.getExecutor(); } - public void setExecutor(Executor executor) { endpoint.setExecutor(executor); } - - public int getMaxThreads() { return endpoint.getMaxThreads(); } - public void setMaxThreads(int maxThreads) { endpoint.setMaxThreads(maxThreads); } - - public int getMinSpareThreads() { return endpoint.getMinSpareThreads(); } - public void setMinSpareThreads(int minSpareThreads) { endpoint.setMinSpareThreads(minSpareThreads); } - - - public int getThreadPriority() { return endpoint.getThreadPriority(); } - public void setThreadPriority(int threadPriority) { endpoint.setThreadPriority(threadPriority); } - - public int getBacklog() { return endpoint.getBacklog(); } - public void setBacklog(int backlog) { endpoint.setBacklog(backlog); } - - public int getPort() { return endpoint.getPort(); } - public void setPort(int port) { endpoint.setPort(port); } public InetAddress getAddress() { return endpoint.getAddress(); } public void setAddress(InetAddress ia) { endpoint.setAddress(ia); } - public boolean getTcpNoDelay() { return endpoint.getTcpNoDelay(); } - public void setTcpNoDelay(boolean tcpNoDelay) { endpoint.setTcpNoDelay(tcpNoDelay); } - - public int getSoLinger() { return endpoint.getSoLinger(); } - public void setSoLinger(int soLinger) { endpoint.setSoLinger(soLinger); } - public int getSoTimeout() { return endpoint.getSoTimeout(); } public void setSoTimeout(int soTimeout) { endpoint.setSoTimeout(soTimeout); } Modified: tomcat/trunk/java/org/apache/coyote/ajp/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/LocalStrings.properties?rev=1042670&r1=1042669&r2=1042670&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/ajp/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/coyote/ajp/LocalStrings.properties Mon Dec 6 15:01:34 2010 @@ -29,8 +29,6 @@ ajpprotocol.endpoint.starterror=Error st ajpprotocol.endpoint.stoperror=Error stopping endpoint ajpprotocol.init=Initializing Coyote AJP/1.3 on {0} ajpprotocol.proto.error=Error reading request, ignored -ajpprotocol.getattribute=Attribute {0} -ajpprotocol.setattribute=Attribute {0}: {1} ajpprotocol.start=Starting Coyote AJP/1.3 on {0} ajpprotocol.stop=Stopping Coyote AJP/1.3 on {0} ajpprotocol.pause=Pausing Coyote AJP/1.3 on {0} Modified: tomcat/trunk/java/org/apache/coyote/ajp/LocalStrings_es.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/LocalStrings_es.properties?rev=1042670&r1=1042669&r2=1042670&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/ajp/LocalStrings_es.properties (original) +++ tomcat/trunk/java/org/apache/coyote/ajp/LocalStrings_es.properties Mon Dec 6 15:01:34 2010 @@ -17,8 +17,6 @@ ajpprotocol.endpoint.initerror = Error i ajpprotocol.endpoint.starterror = Error arrancando punto final ajpprotocol.init = Inicializando Coyote AJP/1.3 en {0} ajpprotocol.proto.error = Error leyendo requerimiento, ignorado -ajpprotocol.getattribute = Atributo {0} -ajpprotocol.setattribute = Atributo {0}\: {1} ajpprotocol.start = Arrancando Coyote AJP/1.3 en {0} ajpprotocol.stop = Parando Coyote AJP/1.3 en {0} ajpprotocol.pause = Pausando Coyote AJP/1.3 en {0} Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java?rev=1042670&r1=1042669&r2=1042670&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Protocol.java Mon Dec 6 15:01:34 2010 @@ -18,9 +18,6 @@ package org.apache.coyote.http11; import java.net.InetAddress; import java.net.URLEncoder; -import java.util.HashMap; -import java.util.Iterator; -import java.util.concurrent.Executor; import javax.management.MBeanServer; import javax.management.ObjectName; @@ -39,47 +36,6 @@ public abstract class AbstractHttp11Prot protected SSLImplementation sslImplementation = null; - protected HashMap<String, Object> attributes = new HashMap<String, Object>(); - - - /** - * Pass config info - */ - @Override - public void setAttribute(String name, Object value) { - if (getLog().isTraceEnabled()) { - getLog().trace(sm.getString("http11protocol.setattribute", name, value)); - } - attributes.put(name, value); - } - - @Override - public Object getAttribute(String key) { - if (getLog().isTraceEnabled()) - getLog().trace(sm.getString("http11protocol.getattribute", key)); - return attributes.get(key); - } - - @Override - public Iterator<String> getAttributeNames() { - return attributes.keySet().iterator(); - } - - /** - * Set a property. - */ - public boolean setProperty(String name, String value) { - setAttribute(name, value); //store all settings - return endpoint.setProperty(name, value); - } - - /** - * Get a property - */ - public String getProperty(String name) { - return (String)getAttribute(name); - } - public InetAddress getAddress() { return endpoint.getAddress(); } public void setAddress(InetAddress ia) { endpoint.setAddress( ia ); @@ -318,33 +274,6 @@ public abstract class AbstractHttp11Prot } @Override - public Executor getExecutor() { return endpoint.getExecutor(); } - public void setExecutor(Executor executor) { endpoint.setExecutor(executor); } - - - public int getMaxThreads() { return endpoint.getMaxThreads(); } - public void setMaxThreads(int maxThreads) { endpoint.setMaxThreads(maxThreads); } - - public int getMinSpareThreads() { return endpoint.getMinSpareThreads(); } - public void setMinSpareThreads(int minSpareThreads) { endpoint.setMinSpareThreads(minSpareThreads); } - - public int getThreadPriority() { return endpoint.getThreadPriority(); } - public void setThreadPriority(int threadPriority) { endpoint.setThreadPriority(threadPriority); } - - public int getPort() { return endpoint.getPort(); } - public void setPort(int port) { endpoint.setPort(port); } - - public int getBacklog() { return endpoint.getBacklog(); } - public void setBacklog(int backlog) { endpoint.setBacklog(backlog); } - - - public boolean getTcpNoDelay() { return endpoint.getTcpNoDelay(); } - public void setTcpNoDelay(boolean tcpNoDelay) { endpoint.setTcpNoDelay(tcpNoDelay); } - - public int getSoLinger() { return endpoint.getSoLinger(); } - public void setSoLinger(int soLinger) { endpoint.setSoLinger(soLinger); } - - @Override public abstract void init() throws Exception; // -------------------- JMX related methods -------------------- Modified: tomcat/trunk/java/org/apache/coyote/http11/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/LocalStrings.properties?rev=1042670&r1=1042669&r2=1042670&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/coyote/http11/LocalStrings.properties Mon Dec 6 15:01:34 2010 @@ -23,8 +23,6 @@ http11protocol.proto.ioexception.debug=I http11protocol.proto.ioexception.info=IOException reading request, ignored http11protocol.proto.socketexception.debug=SocketException reading request http11protocol.proto.socketexception.info=SocketException reading request, ignored -http11protocol.getattribute=Attribute {0} -http11protocol.setattribute=Attribute {0}: {1} http11protocol.socketfactory.initerror=Error initializing socket factory http11protocol.start=Starting Coyote HTTP/1.1 on {0} http11protocol.stop=Stopping Coyote HTTP/1.1 on {0} Modified: tomcat/trunk/java/org/apache/coyote/http11/LocalStrings_es.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/LocalStrings_es.properties?rev=1042670&r1=1042669&r2=1042670&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/LocalStrings_es.properties (original) +++ tomcat/trunk/java/org/apache/coyote/http11/LocalStrings_es.properties Mon Dec 6 15:01:34 2010 @@ -21,8 +21,6 @@ http11protocol.proto.ioexception.debug = http11protocol.proto.ioexception.info = IOException leyendo requerimiento, ignorada http11protocol.proto.socketexception.debug = SocketException leyendo requerimiento http11protocol.proto.socketexception.info = SocketException leyendo requerimiento, ignorada -http11protocol.getattribute = Atributo {0} -http11protocol.setattribute = Atributo {0}\: {1} http11protocol.socketfactory.initerror = Error inicializando f\u00E1brica de enchufes (sockets) http11protocol.start = Arrancando Coyote HTTP/1.1 en puerto {0} http11protocol.stop = Parando Coyote HTTP/1.1 en puerto {0} Modified: tomcat/trunk/java/org/apache/coyote/http11/LocalStrings_fr.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/LocalStrings_fr.properties?rev=1042670&r1=1042669&r2=1042670&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/LocalStrings_fr.properties (original) +++ tomcat/trunk/java/org/apache/coyote/http11/LocalStrings_fr.properties Mon Dec 6 15:01:34 2010 @@ -21,7 +21,6 @@ http11protocol.proto.ioexception.debug=E http11protocol.proto.ioexception.info=Exception d'entr\u00e9e/sortie \u00e0 la lecture de la requ\u00eate, ignor\u00e9 http11protocol.proto.socketexception.debug=Exception "Socket" (SocketException) \u00e0 la lecture de la requ\u00eate http11protocol.proto.socketexception.info=Exception "Socket" (SocketException) \u00e0 la lecture de la requ\u00eate, ignor\u00e9 -http11protocol.setattribute=Attribut {0}: {1} http11protocol.socketfactory.initerror=Erreur \u00e0 l'initialisation du cr\u00e9ateur de socket (socket factory) http11protocol.start=D\u00e9marrage de Coyote HTTP/1.1 sur {0} http11protocol.stop=Arr\u00eat de Coyote HTTP/1.1 sur {0} Modified: tomcat/trunk/java/org/apache/coyote/http11/LocalStrings_ja.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/LocalStrings_ja.properties?rev=1042670&r1=1042669&r2=1042670&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/LocalStrings_ja.properties (original) +++ tomcat/trunk/java/org/apache/coyote/http11/LocalStrings_ja.properties Mon Dec 6 15:01:34 2010 @@ -21,7 +21,6 @@ http11protocol.proto.ioexception.debug=\ http11protocol.proto.ioexception.info=\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u306eIOException\u3067\u3059\u304c\u3001\u7121\u8996\u3055\u308c\u307e\u3057\u305f http11protocol.proto.socketexception.debug=\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u306eSocketException\u3067\u3059 http11protocol.proto.socketexception.info=\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u306eSocketException\u3067\u3059\u304c\u3001\u7121\u8996\u3055\u308c\u307e\u3057\u305f -http11protocol.setattribute=\u5c5e\u6027 {0}: {1} http11protocol.socketfactory.initerror=\u30bd\u30b1\u30c3\u30c8\u30d5\u30a1\u30af\u30c8\u30ea\u3092\u521d\u671f\u5316\u4e2d\u306e\u30a8\u30e9\u30fc\u3067\u3059 http11protocol.start=Coyote HTTP/1.1\u3092 {0} \u3067\u8d77\u52d5\u3057\u307e\u3059 http11protocol.stop=Coyote HTTP/1.1\u3092 {0} \u3067\u505c\u6b62\u3057\u307e\u3059 --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org