This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 7.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit a35cb870f50f5d90b1ff10728fc84b21e9141c4b Author: Mark Emlyn David Thomas <ma...@apache.org> AuthorDate: Mon Sep 8 12:21:13 2014 +0000 Refactor to reduce code duplication identified by Simian. --- .../catalina/ant/jmx/JMXAccessorCondition.java | 168 +------------------- ...ondition.java => JMXAccessorConditionBase.java} | 90 ++--------- .../ant/jmx/JMXAccessorEqualsCondition.java | 170 +-------------------- 3 files changed, 26 insertions(+), 402 deletions(-) diff --git a/java/org/apache/catalina/ant/jmx/JMXAccessorCondition.java b/java/org/apache/catalina/ant/jmx/JMXAccessorCondition.java index 3d2a21f..ca41ffb 100644 --- a/java/org/apache/catalina/ant/jmx/JMXAccessorCondition.java +++ b/java/org/apache/catalina/ant/jmx/JMXAccessorCondition.java @@ -14,18 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.catalina.ant.jmx; -import java.io.IOException; -import java.net.MalformedURLException; - -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; - import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.ProjectComponent; -import org.apache.tools.ant.taskdefs.condition.Condition; /** * @@ -87,21 +78,12 @@ import org.apache.tools.ant.taskdefs.condition.Condition; * @author Peter Rossbach * @since 5.5.10 */ -public class JMXAccessorCondition extends ProjectComponent implements Condition { +public class JMXAccessorCondition extends JMXAccessorConditionBase { // ----------------------------------------------------- Instance Variables - private String url = null; - private String host = "localhost"; - private String port = "8050"; - private String password = null; - private String username = null; - private String name = null; - private String attribute; - private String value; private String operation = "==" ; private String type = "long" ; - private String ref = "jmx.server"; private String unlessCondition; private String ifCondition; @@ -118,10 +100,9 @@ public class JMXAccessorCondition extends ProjectComponent implements Condition * <code><description>/<version></code>. */ public String getInfo() { - - return (info); - + return info; } + // ----------------------------------------------------- Properties /** @@ -149,114 +130,8 @@ public class JMXAccessorCondition extends ProjectComponent implements Condition public void setType(String type) { this.type = type; } - /** - * @return Returns the attribute. - */ - public String getAttribute() { - return attribute; - } - /** - * @param attribute The attribute to set. - */ - public void setAttribute(String attribute) { - this.attribute = attribute; - } - /** - * @return Returns the host. - */ - public String getHost() { - return host; - } - /** - * @param host The host to set. - */ - public void setHost(String host) { - this.host = host; - } - /** - * @return Returns the name. - */ - public String getName() { - return name; - } - /** - * @param objectName The name to set. - */ - public void setName(String objectName) { - this.name = objectName; - } - /** - * @return Returns the password. - */ - public String getPassword() { - return password; - } - /** - * @param password The password to set. - */ - public void setPassword(String password) { - this.password = password; - } - /** - * @return Returns the port. - */ - public String getPort() { - return port; - } - /** - * @param port The port to set. - */ - public void setPort(String port) { - this.port = port; - } - /** - * @return Returns the url. - */ - public String getUrl() { - return url; - } - /** - * @param url The url to set. - */ - public void setUrl(String url) { - this.url = url; - } - /** - * @return Returns the username. - */ - public String getUsername() { - return username; - } - /** - * @param username The username to set. - */ - public void setUsername(String username) { - this.username = username; - } - /** - * @return Returns the value. - */ - public String getValue() { - return value; - } - // The setter for the "value" attribute - public void setValue(String value) { - this.value = value; - } /** - * @return Returns the ref. - */ - public String getRef() { - return ref; - } - /** - * @param refId The ref to set. - */ - public void setRef(String refId) { - this.ref = refId; - } - /** * @return Returns the ifCondition. */ public String getIf() { @@ -269,13 +144,13 @@ public class JMXAccessorCondition extends ProjectComponent implements Condition public void setIf(String c) { ifCondition = c; } + /** * @return Returns the unlessCondition. */ public String getUnless() { return unlessCondition; } - /** * Only execute if a property of the given name does not * exist in the current project. @@ -286,36 +161,6 @@ public class JMXAccessorCondition extends ProjectComponent implements Condition } /** - * Get JMXConnection (default look at <em>jmx.server</em> project reference from jmxOpen Task) - * @return active JMXConnection - * @throws MalformedURLException - * @throws IOException - */ - protected MBeanServerConnection getJMXConnection() - throws MalformedURLException, IOException { - return JMXAccessorTask.accessJMXConnection( - getProject(), - getUrl(), getHost(), - getPort(), getUsername(), getPassword(), ref); - } - - /** - * Get value from MBeans attribute - * @return The value - */ - protected String accessJMXValue() { - try { - Object result = getJMXConnection().getAttribute( - new ObjectName(name), attribute); - if(result != null) - return result.toString(); - } catch (Exception e) { - // ignore access or connection open errors - } - return null; - } - - /** * test the if condition * @return true if there is no if condition, or the named property exists */ @@ -345,15 +190,16 @@ public class JMXAccessorCondition extends ProjectComponent implements Condition */ @Override public boolean eval() { + String value = getValue(); if (operation == null) { throw new BuildException("operation attribute is not set"); } if (value == null) { throw new BuildException("value attribute is not set"); } - if ((name == null || attribute == null)) { + if ((getName() == null || getAttribute() == null)) { throw new BuildException( - "Must specify a 'attribute', name for equals condition"); + "Must specify an MBean name and attribute for condition"); } if (testIfCondition() && testUnlessCondition()) { String jmxValue = accessJMXValue(); diff --git a/java/org/apache/catalina/ant/jmx/JMXAccessorEqualsCondition.java b/java/org/apache/catalina/ant/jmx/JMXAccessorConditionBase.java similarity index 61% copy from java/org/apache/catalina/ant/jmx/JMXAccessorEqualsCondition.java copy to java/org/apache/catalina/ant/jmx/JMXAccessorConditionBase.java index b001c0e..8348213 100644 --- a/java/org/apache/catalina/ant/jmx/JMXAccessorEqualsCondition.java +++ b/java/org/apache/catalina/ant/jmx/JMXAccessorConditionBase.java @@ -14,7 +14,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.catalina.ant.jmx; import java.io.IOException; @@ -23,52 +22,10 @@ import java.net.MalformedURLException; import javax.management.MBeanServerConnection; import javax.management.ObjectName; -import org.apache.tools.ant.BuildException; import org.apache.tools.ant.ProjectComponent; import org.apache.tools.ant.taskdefs.condition.Condition; -/** - * - * Definition - * <pre> - * <path id="catalina_ant"> - * <fileset dir="${catalina.home}/server/lib"> - * <include name="catalina-ant.jar"/> - * </fileset> - * </path> - * - * <typedef - * name="jmxEquals" - * classname="org.apache.catalina.ant.jmx.JMXAccessorEqualsCondition" - * classpathref="catalina_ant"/> - * </pre> - * - * usage: Wait for start backup node - * <pre> - * <target name="wait"> - * <waitfor maxwait="${maxwait}" maxwaitunit="second" timeoutproperty="server.timeout" > - * <and> - * <socket server="${server.name}" port="${server.port}"/> - * <http url="${url}"/> - * <jmxEquals - * host="localhost" port="9014" username="controlRole" password="tomcat" - * name="Catalina:type=IDataSender,host=localhost,senderAddress=192.168.111.1,senderPort=9025" - * attribute="connected" value="true" - * /> - * </and> - * </waitfor> - * <fail if="server.timeout" message="Server ${url} don't answer inside ${maxwait} sec" /> - * <echo message="Server ${url} alive" /> - * </target> - * - * </pre> - * - * @author Peter Rossbach - * @since 5.5.10 - */ -public class JMXAccessorEqualsCondition extends ProjectComponent implements Condition { - - // ----------------------------------------------------- Instance Variables +public abstract class JMXAccessorConditionBase extends ProjectComponent implements Condition { private String url = null; private String host = "localhost"; @@ -79,24 +36,6 @@ public class JMXAccessorEqualsCondition extends ProjectComponent implements Co private String attribute; private String value; private String ref = "jmx.server" ; - // ----------------------------------------------------- Instance Info - - /** - * Descriptive information describing this implementation. - */ - private static final String info = "org.apache.catalina.ant.JMXAccessorEqualsCondition/1.1"; - - /** - * Return descriptive information about this implementation and the - * corresponding version number, in the format - * <code><description>/<version></code>. - */ - public String getInfo() { - - return (info); - - } - // ----------------------------------------------------- Properties /** * @return Returns the attribute. @@ -206,6 +145,14 @@ public class JMXAccessorEqualsCondition extends ProjectComponent implements Co this.ref = refId; } + /** + * Get JMXConnection (default look at <em>jmx.server</em> project reference + * from jmxOpen Task). + * + * @return active JMXConnection + * @throws MalformedURLException + * @throws IOException + */ protected MBeanServerConnection getJMXConnection() throws MalformedURLException, IOException { return JMXAccessorTask.accessJMXConnection( @@ -215,6 +162,8 @@ public class JMXAccessorEqualsCondition extends ProjectComponent implements Co } /** + * Get value from MBeans attribute. + * * @return The value */ protected String accessJMXValue() { @@ -228,22 +177,5 @@ public class JMXAccessorEqualsCondition extends ProjectComponent implements Co } return null; } - - // This method evaluates the condition - @Override - public boolean eval() { - if (value == null) { - throw new BuildException("value attribute is not set"); - } - if ((name == null || attribute == null)) { - throw new BuildException( - "Must specify a 'attribute', name for equals condition"); - } - //FIXME check url or host/parameter - String jmxValue = accessJMXValue(); - if(jmxValue != null) - return jmxValue.equals(value); - return false; - } } diff --git a/java/org/apache/catalina/ant/jmx/JMXAccessorEqualsCondition.java b/java/org/apache/catalina/ant/jmx/JMXAccessorEqualsCondition.java index b001c0e..16a9ae1 100644 --- a/java/org/apache/catalina/ant/jmx/JMXAccessorEqualsCondition.java +++ b/java/org/apache/catalina/ant/jmx/JMXAccessorEqualsCondition.java @@ -14,18 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.catalina.ant.jmx; -import java.io.IOException; -import java.net.MalformedURLException; - -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; - import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.ProjectComponent; -import org.apache.tools.ant.taskdefs.condition.Condition; /** * @@ -66,20 +57,7 @@ import org.apache.tools.ant.taskdefs.condition.Condition; * @author Peter Rossbach * @since 5.5.10 */ -public class JMXAccessorEqualsCondition extends ProjectComponent implements Condition { - - // ----------------------------------------------------- Instance Variables - - private String url = null; - private String host = "localhost"; - private String port = "8050"; - private String password = null; - private String username = null; - private String name = null; - private String attribute; - private String value; - private String ref = "jmx.server" ; - // ----------------------------------------------------- Instance Info +public class JMXAccessorEqualsCondition extends JMXAccessorConditionBase { /** * Descriptive information describing this implementation. @@ -92,157 +70,25 @@ public class JMXAccessorEqualsCondition extends ProjectComponent implements Co * <code><description>/<version></code>. */ public String getInfo() { - - return (info); - - } - // ----------------------------------------------------- Properties - - /** - * @return Returns the attribute. - */ - public String getAttribute() { - return attribute; - } - /** - * @param attribute The attribute to set. - */ - public void setAttribute(String attribute) { - this.attribute = attribute; - } - /** - * @return Returns the host. - */ - public String getHost() { - return host; - } - /** - * @param host The host to set. - */ - public void setHost(String host) { - this.host = host; - } - /** - * @return Returns the name. - */ - public String getName() { - return name; - } - /** - * @param objectName The name to set. - */ - public void setName(String objectName) { - this.name = objectName; - } - /** - * @return Returns the password. - */ - public String getPassword() { - return password; - } - /** - * @param password The password to set. - */ - public void setPassword(String password) { - this.password = password; - } - /** - * @return Returns the port. - */ - public String getPort() { - return port; - } - /** - * @param port The port to set. - */ - public void setPort(String port) { - this.port = port; - } - /** - * @return Returns the url. - */ - public String getUrl() { - return url; - } - /** - * @param url The url to set. - */ - public void setUrl(String url) { - this.url = url; - } - /** - * @return Returns the username. - */ - public String getUsername() { - return username; - } - /** - * @param username The username to set. - */ - public void setUsername(String username) { - this.username = username; - } - /** - * @return Returns the value. - */ - public String getValue() { - return value; - } - // The setter for the "value" attribute - public void setValue(String value) { - this.value = value; + return info; } - /** - * @return Returns the ref. - */ - public String getRef() { - return ref; - } - /** - * @param refId The ref to set. - */ - public void setRef(String refId) { - this.ref = refId; - } - - protected MBeanServerConnection getJMXConnection() - throws MalformedURLException, IOException { - return JMXAccessorTask.accessJMXConnection( - getProject(), - getUrl(), getHost(), - getPort(), getUsername(), getPassword(), ref); - } - - /** - * @return The value - */ - protected String accessJMXValue() { - try { - Object result = getJMXConnection().getAttribute( - new ObjectName(name), attribute); - if(result != null) - return result.toString(); - } catch (Exception e) { - // ignore access or connection open errors - } - return null; - } - - // This method evaluates the condition @Override public boolean eval() { + String value = getValue(); + if (value == null) { throw new BuildException("value attribute is not set"); } - if ((name == null || attribute == null)) { + if (getName() == null || getAttribute() == null) { throw new BuildException( - "Must specify a 'attribute', name for equals condition"); + "Must specify an MBean name and attribute for equals condition"); } //FIXME check url or host/parameter String jmxValue = accessJMXValue(); - if(jmxValue != null) + if (jmxValue != null) { return jmxValue.equals(value); + } return false; } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org