Author: fhanik Date: Sat Oct 20 07:57:18 2007 New Revision: 586738 URL: http://svn.apache.org/viewvc?rev=586738&view=rev Log: Added NIO connector to server.xml parser warnings
Modified: tomcat/tc6.0.x/trunk/STATUS tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/Connector.java tomcat/tc6.0.x/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java tomcat/tc6.0.x/trunk/java/org/apache/catalina/ha/util/IDynamicProperty.java tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/Embedded.java tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc6.0.x/trunk/STATUS URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS?rev=586738&r1=586737&r2=586738&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/STATUS (original) +++ tomcat/tc6.0.x/trunk/STATUS Sat Oct 20 07:57:18 2007 @@ -25,13 +25,6 @@ PATCHES PROPOSED TO BACKPORT: [ New proposals should be added at the end of the list ] -* Make server.xml parsing warnings more generic, add support for the NIO connector -* Connector is no longer an exception case. Any new component can still use setProperty and return a boolean -* to accept or reject the property - http://people.apache.org/~fhanik/patches/digester-attribute-warnings.patch - +1: fhanik, yoavs,funkman - -1: - * IcedTea support. Upcoming Linux distributions will package a (working) open source JRE, available in /usr. As a result, it could now be possible to use a "/usr/bin/java" binary if one is present and expect results. [tested on Fedora 8 test 3] Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/Connector.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/Connector.java?rev=586738&r1=586737&r2=586738&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/Connector.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/Connector.java Sat Oct 20 07:57:18 2007 @@ -313,29 +313,14 @@ /** * Set a configured property. */ - public void setProperty(String name, String value) { + public boolean setProperty(String name, String value) { String repl = name; if (replacements.get(name) != null) { repl = (String) replacements.get(name); } - if (!IntrospectionUtils.setProperty(protocolHandler, repl, value)) { - log.warn("Property " + name + " not found on the protocol handler."); - } - } - - - /** - * Set a configured property. - */ - public void setPropertyInternal(String name, String value) { - String repl = name; - if (replacements.get(name) != null) { - repl = (String) replacements.get(name); - } - IntrospectionUtils.setProperty(protocolHandler, repl, value); + return IntrospectionUtils.setProperty(protocolHandler, repl, value); } - /** * Return a configured property. */ @@ -402,7 +387,7 @@ public void setAllowTrace(boolean allowTrace) { this.allowTrace = allowTrace; - setPropertyInternal("allowTrace", String.valueOf(allowTrace)); + setProperty("allowTrace", String.valueOf(allowTrace)); } @@ -480,7 +465,7 @@ public void setEmptySessionPath(boolean emptySessionPath) { this.emptySessionPath = emptySessionPath; - setPropertyInternal("emptySessionPath", String.valueOf(emptySessionPath)); + setProperty("emptySessionPath", String.valueOf(emptySessionPath)); } @@ -503,7 +488,7 @@ public void setEnableLookups(boolean enableLookups) { this.enableLookups = enableLookups; - setPropertyInternal("enableLookups", String.valueOf(enableLookups)); + setProperty("enableLookups", String.valueOf(enableLookups)); } @@ -573,7 +558,7 @@ public void setMaxSavePostSize(int maxSavePostSize) { this.maxSavePostSize = maxSavePostSize; - setPropertyInternal("maxSavePostSize", String.valueOf(maxSavePostSize)); + setProperty("maxSavePostSize", String.valueOf(maxSavePostSize)); } @@ -595,7 +580,7 @@ public void setPort(int port) { this.port = port; - setPropertyInternal("port", String.valueOf(port)); + setProperty("port", String.valueOf(port)); } @@ -759,7 +744,7 @@ if(proxyName != null && proxyName.length() > 0) { this.proxyName = proxyName; - setPropertyInternal("proxyName", proxyName); + setProperty("proxyName", proxyName); } else { this.proxyName = null; removeProperty("proxyName"); @@ -786,7 +771,7 @@ public void setProxyPort(int proxyPort) { this.proxyPort = proxyPort; - setPropertyInternal("proxyPort", String.valueOf(proxyPort)); + setProperty("proxyPort", String.valueOf(proxyPort)); } @@ -811,7 +796,7 @@ public void setRedirectPort(int redirectPort) { this.redirectPort = redirectPort; - setPropertyInternal("redirectPort", String.valueOf(redirectPort)); + setProperty("redirectPort", String.valueOf(redirectPort)); } @@ -860,7 +845,7 @@ public void setSecure(boolean secure) { this.secure = secure; - setPropertyInternal("secure", Boolean.toString(secure)); + setProperty("secure", Boolean.toString(secure)); } /** @@ -881,7 +866,7 @@ public void setURIEncoding(String URIEncoding) { this.URIEncoding = URIEncoding; - setPropertyInternal("uRIEncoding", URIEncoding); + setProperty("uRIEncoding", URIEncoding); } @@ -904,7 +889,7 @@ public void setUseBodyEncodingForURI(boolean useBodyEncodingForURI) { this.useBodyEncodingForURI = useBodyEncodingForURI; - setPropertyInternal + setProperty ("useBodyEncodingForURI", String.valueOf(useBodyEncodingForURI)); } @@ -932,7 +917,7 @@ */ public void setXpoweredBy(boolean xpoweredBy) { this.xpoweredBy = xpoweredBy; - setPropertyInternal("xpoweredBy", String.valueOf(xpoweredBy)); + setProperty("xpoweredBy", String.valueOf(xpoweredBy)); } /** @@ -943,7 +928,7 @@ */ public void setUseIPVHosts(boolean useIPVHosts) { this.useIPVHosts = useIPVHosts; - setPropertyInternal("useIPVHosts", String.valueOf(useIPVHosts)); + setProperty("useIPVHosts", String.valueOf(useIPVHosts)); } /** Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java?rev=586738&r1=586737&r2=586738&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java Sat Oct 20 07:57:18 2007 @@ -406,8 +406,8 @@ * @param name * @param value */ - public void setProperty(String name, String value) { - setProperty(name, (Object) value); + public boolean setProperty(String name, String value) { + return setProperty(name, (Object) value); } /** @@ -416,29 +416,9 @@ * @param name * @param value */ - public void setProperty(String name, Object value) { - if (log.isTraceEnabled()) - log.trace(sm.getString("SimpleTcpCluster.setProperty", name, value,properties.get(name))); + public boolean setProperty(String name, Object value) { properties.put(name, value); - //using a dynamic way of setting properties is nice, but a security risk - //if exposed through JMX. This way you can sit and try to guess property names, - //we will only allow explicit property names - log.warn("Dynamic setProperty("+name+",value) has been disabled, please use explicit properties for the element you are trying to identify"); - if(started) { - // FIXME Hmm, is that correct when some DeltaManagers are direct configured inside Context? - // Why we not support it for other elements, like sender, receiver or membership? - // Must we restart element after change? -// if (name.startsWith("manager")) { -// String key = name.substring("manager".length() + 1); -// String pvalue = value.toString(); -// for (Iterator iter = managers.values().iterator(); iter.hasNext();) { -// Manager manager = (Manager) iter.next(); -// if(manager instanceof DeltaManager && ((ClusterManager) manager).isDefaultMode()) { -// IntrospectionUtils.setProperty(manager, key, pvalue ); -// } -// } -// } - } + return false; } /** Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/ha/util/IDynamicProperty.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/ha/util/IDynamicProperty.java?rev=586738&r1=586737&r2=586738&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/ha/util/IDynamicProperty.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/ha/util/IDynamicProperty.java Sat Oct 20 07:57:18 2007 @@ -32,7 +32,7 @@ * @param name * @param value */ - public void setProperty(String name, Object value) ; + public boolean setProperty(String name, Object value) ; /** * get current config Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/Embedded.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/Embedded.java?rev=586738&r1=586737&r2=586738&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/Embedded.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/Embedded.java Sat Oct 20 07:57:18 2007 @@ -427,7 +427,7 @@ connector = new Connector(); connector.setScheme("https"); connector.setSecure(true); - connector.setPropertyInternal("SSLEnabled","true"); + connector.setProperty("SSLEnabled","true"); // FIXME !!!! SET SSL PROPERTIES } else { connector = new Connector(protocol); Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java?rev=586738&r1=586737&r2=586738&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java Sat Oct 20 07:57:18 2007 @@ -94,13 +94,13 @@ /** * Set a property. */ - public void setProperty(String name, String value) { + public boolean setProperty(String name, String value) { + setAttribute(name, value); if ( name!=null && (name.startsWith("socket.") ||name.startsWith("selectorPool.")) ){ - ep.setProperty(name, value); + return ep.setProperty(name, value); } else { - ep.setProperty(name,value); //make sure we at least try to set all properties + return ep.setProperty(name,value); //make sure we at least try to set all properties } - setAttribute(name, value); } /** Modified: tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java?rev=586738&r1=586737&r2=586738&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java Sat Oct 20 07:57:18 2007 @@ -266,7 +266,8 @@ try { Method methods[] = findMethods(o.getClass()); - Method setPropertyMethod = null; + Method setPropertyMethodVoid = null; + Method setPropertyMethodBool = null; // First, the ideal case - a setFoo( String ) method for (int i = 0; i < methods.length; i++) { @@ -334,17 +335,37 @@ // save "setProperty" for later if ("setProperty".equals(methods[i].getName())) { - setPropertyMethod = methods[i]; + if (methods[i].getReturnType()==Boolean.TYPE){ + setPropertyMethodBool = methods[i]; + }else { + setPropertyMethodVoid = methods[i]; + } + } } // Ok, no setXXX found, try a setProperty("name", "value") - if (setPropertyMethod != null) { + if (setPropertyMethodBool != null || setPropertyMethodVoid != null) { Object params[] = new Object[2]; params[0] = name; params[1] = value; - setPropertyMethod.invoke(o, params); - return true; + if (setPropertyMethodBool != null) { + try { + return (Boolean) setPropertyMethodBool.invoke(o, params); + }catch (IllegalArgumentException biae) { + //the boolean method had the wrong + //parameter types. lets try the other + if (setPropertyMethodVoid!=null) { + setPropertyMethodVoid.invoke(o, params); + return true; + }else { + throw biae; + } + } + } else { + setPropertyMethodVoid.invoke(o, params); + return true; + } } } catch (IllegalArgumentException ex2) { Modified: tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java?rev=586738&r1=586737&r2=586738&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Sat Oct 20 07:57:18 2007 @@ -510,19 +510,20 @@ /** * Generic properties, introspected */ - public void setProperty(String name, String value) { + public boolean setProperty(String name, String value) { final String selectorPoolName = "selectorPool."; final String socketName = "socket."; try { if (name.startsWith(selectorPoolName)) { - IntrospectionUtils.setProperty(selectorPool, name.substring(selectorPoolName.length()), value); + return IntrospectionUtils.setProperty(selectorPool, name.substring(selectorPoolName.length()), value); } else if (name.startsWith(socketName)) { - IntrospectionUtils.setProperty(socketProperties, name.substring(socketName.length()), value); + return IntrospectionUtils.setProperty(socketProperties, name.substring(socketName.length()), value); } else { - IntrospectionUtils.setProperty(this,name,value); + return IntrospectionUtils.setProperty(this,name,value); } }catch ( Exception x ) { log.error("Unable to set attribute \""+name+"\" to \""+value+"\"",x); + return false; } } Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=586738&r1=586737&r2=586738&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Sat Oct 20 07:57:18 2007 @@ -45,6 +45,7 @@ </subsection> <subsection name="Catalina"> <changelog> + <update>Add NIO connector to server.xml parsing warning, remove Connector as exception case</update> <fix><bug>43653</bug>Fix SSL buffer mixup when response is unable to write more than socket buffer can handle</fix> <fix><bug>43643</bug>If connector doesn't support external executor, display warning</fix> <fix><bug>43641</bug>Property bind multicast address for cluster membership</fix> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]