You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2012/11/17 16:20:09 UTC
svn commit: r1410740 -
/tomcat/trunk/java/org/apache/tomcat/util/modeler/OperationInfo.java
Author: markt
Date: Sat Nov 17 15:20:08 2012
New Revision: 1410740
URL: http://svn.apache.org/viewvc?rev=1410740&view=rev
Log:
Fix a FindBugs issue (incorrect synchronization)
Modified:
tomcat/trunk/java/org/apache/tomcat/util/modeler/OperationInfo.java
Modified: tomcat/trunk/java/org/apache/tomcat/util/modeler/OperationInfo.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/modeler/OperationInfo.java?rev=1410740&r1=1410739&r2=1410740&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/modeler/OperationInfo.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/modeler/OperationInfo.java Sat Nov 17 15:20:08 2012
@@ -14,17 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-
package org.apache.tomcat.util.modeler;
-
import java.util.Locale;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
import javax.management.MBeanOperationInfo;
import javax.management.MBeanParameterInfo;
-
/**
* <p>Internal configuration information for an <code>Operation</code>
* descriptor.</p>
@@ -32,23 +31,24 @@ import javax.management.MBeanParameterIn
* @author Craig R. McClanahan
*/
public class OperationInfo extends FeatureInfo {
+
static final long serialVersionUID = 4418342922072614875L;
- // ----------------------------------------------------------- Constructors
+ // ----------------------------------------------------------- Constructors
/**
* Standard zero-arguments constructor.
*/
public OperationInfo() {
-
super();
-
}
+
// ----------------------------------------------------- Instance Variables
protected String impact = "UNKNOWN";
protected String role = "operation";
+ protected ReadWriteLock parametersLock = new ReentrantReadWriteLock();
protected ParameterInfo parameters[] = new ParameterInfo[0];
@@ -59,7 +59,7 @@ public class OperationInfo extends Featu
* string value "ACTION", "ACTION_INFO", "INFO", or "UNKNOWN".
*/
public String getImpact() {
- return (this.impact);
+ return this.impact;
}
public void setImpact(String impact) {
@@ -75,7 +75,7 @@ public class OperationInfo extends Featu
* "constructor").
*/
public String getRole() {
- return (this.role);
+ return this.role;
}
public void setRole(String role) {
@@ -102,7 +102,13 @@ public class OperationInfo extends Featu
* The set of parameters for this operation.
*/
public ParameterInfo[] getSignature() {
- return (this.parameters);
+ Lock readLock = parametersLock.readLock();
+ try {
+ readLock.lock();
+ return this.parameters;
+ } finally {
+ readLock.unlock();
+ }
}
// --------------------------------------------------------- Public Methods
@@ -115,14 +121,17 @@ public class OperationInfo extends Featu
*/
public void addParameter(ParameterInfo parameter) {
- synchronized (parameters) {
+ Lock writeLock = parametersLock.writeLock();
+ try {
+ writeLock.lock();
ParameterInfo results[] = new ParameterInfo[parameters.length + 1];
System.arraycopy(parameters, 0, results, 0, parameters.length);
results[parameters.length] = parameter;
parameters = results;
this.info = null;
+ } finally {
+ writeLock.unlock();
}
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org