From be6b4608bdea970657d0257460ab92874314ca9b Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Fri, 26 Sep 2014 11:06:51 +0200 Subject: Various problems found by FindBugs --- .../com/c2kernel/lifecycle/instance/Activity.java | 3 +- .../com/c2kernel/lifecycle/instance/WfVertex.java | 2 +- .../lifecycle/instance/stateMachine/State.java | 22 +++ .../instance/stateMachine/StateMachine.java | 2 +- .../instance/stateMachine/Transition.java | 23 +++ .../instance/stateMachine/TransitionOutcome.java | 4 +- .../instance/stateMachine/TransitionScript.java | 4 +- src/main/java/com/c2kernel/lookup/Path.java | 19 +-- .../java/com/c2kernel/process/UserCodeProcess.java | 5 +- src/main/java/com/c2kernel/scripting/Script.java | 10 +- .../java/com/c2kernel/utils/CastorXMLUtility.java | 2 +- .../java/com/c2kernel/utils/XmlElementParser.java | 172 ++++++++++----------- 12 files changed, 163 insertions(+), 105 deletions(-) (limited to 'src') diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java index 3dd94b0..d921cfc 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java @@ -1,5 +1,6 @@ package com.c2kernel.lifecycle.instance; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.Map; import java.util.Vector; @@ -316,7 +317,7 @@ public class Activity extends WfVertex hasNoNext = true; out = true; } - Logger.debug(8, outVertices + " " + outVertices2); + Logger.debug(8, Arrays.toString(outVertices) + " " + Arrays.toString(outVertices2)); if (!hasNoNext) ((WfVertex) outVertices[0]).run(agent, itemPath); else diff --git a/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java b/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java index c2596f8..f21b947 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java @@ -147,7 +147,7 @@ public abstract class WfVertex extends GraphableVertex inputParam = null; } } - Logger.msg(5, "Split.evaluateScript() - Setting param " + element.getKey() + " to " + inputParam.toString()); + Logger.msg(5, "Split.evaluateScript() - Setting param " + element.getKey() + " to " + inputParam); script.setInputParamValue(element.getKey(), inputParam); } } diff --git a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/State.java b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/State.java index fd712f4..dd0c763 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/State.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/State.java @@ -57,4 +57,26 @@ public class State implements Serializable { public Set getPossibleTransitionIds() { return possibleTransitions.keySet(); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + id; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + State other = (State) obj; + if (id != other.id) + return false; + return true; + } } diff --git a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java index ff9d5a8..f9814dd 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java @@ -63,7 +63,7 @@ public class StateMachine implements DescriptionObject for (Transition trans : transitions) { Logger.debug(6, "Transition "+trans.id+": "+trans.name); transitionCodes.put(trans.getId(), trans); - isCoherent &= trans.resolveStates(stateCodes); + isCoherent = isCoherent && trans.resolveStates(stateCodes); } } diff --git a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java index 8a82bc1..b16520c 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java @@ -299,4 +299,27 @@ public class Transition implements Serializable { return false; return true; } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + id; + return result; + } + + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Transition other = (Transition) obj; + if (id != other.id) + return false; + return true; + } } diff --git a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionOutcome.java b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionOutcome.java index 71ba3b3..ad2d54c 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionOutcome.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionOutcome.java @@ -1,6 +1,8 @@ package com.c2kernel.lifecycle.instance.stateMachine; -public class TransitionOutcome extends TransitionResource { +import java.io.Serializable; + +public class TransitionOutcome extends TransitionResource implements Serializable { // schema properties String schemaName, schemaVersion; // Name & version of the schema of the data required for this transition. diff --git a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionScript.java b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionScript.java index 9585102..271b44d 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionScript.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionScript.java @@ -1,6 +1,8 @@ package com.c2kernel.lifecycle.instance.stateMachine; -public class TransitionScript extends TransitionResource { +import java.io.Serializable; + +public class TransitionScript extends TransitionResource implements Serializable { // script properties String scriptName, scriptVersion; // Name & version of the script to be run by the agent during this transition diff --git a/src/main/java/com/c2kernel/lookup/Path.java b/src/main/java/com/c2kernel/lookup/Path.java index 65d9738..1a563b5 100644 --- a/src/main/java/com/c2kernel/lookup/Path.java +++ b/src/main/java/com/c2kernel/lookup/Path.java @@ -21,8 +21,7 @@ import com.c2kernel.process.Gateway; /** -* @version $Revision: 1.27 $ $Date: 2006/01/17 07:49:58 $ -* @author $Author: abranson $ +* **/ public abstract class Path implements Serializable { @@ -113,13 +112,15 @@ public abstract class Path implements Serializable public void setPath(String path) { ArrayList newPath = new ArrayList(); - StringTokenizer tok = new StringTokenizer(path, delim); - if (tok.hasMoreTokens()) { - String first = tok.nextToken(); - if (!first.equals(getRoot())) - newPath.add(first); - while (tok.hasMoreTokens()) - newPath.add(tok.nextToken()); + if (path != null) { + StringTokenizer tok = new StringTokenizer(path, delim); + if (tok.hasMoreTokens()) { + String first = tok.nextToken(); + if (!first.equals(getRoot())) + newPath.add(first); + while (tok.hasMoreTokens()) + newPath.add(tok.nextToken()); + } } mPath = (newPath.toArray(mPath)); diff --git a/src/main/java/com/c2kernel/process/UserCodeProcess.java b/src/main/java/com/c2kernel/process/UserCodeProcess.java index cb8ca74..8182f65 100644 --- a/src/main/java/com/c2kernel/process/UserCodeProcess.java +++ b/src/main/java/com/c2kernel/process/UserCodeProcess.java @@ -36,7 +36,7 @@ public class UserCodeProcess extends StandardClient implements ProxyObserver ignoredPaths = new ArrayList(); HashMap errors = new HashMap(); - HashMap jobs; + final HashMap jobs = new HashMap(); public UserCodeProcess(String agentName, String agentPass, String resource) { // login - try for a while in case server hasn't imported our user yet @@ -59,7 +59,6 @@ public class UserCodeProcess extends StandardClient implements ProxyObserver(); // subscribe to job list agent.subscribe(new MemberSubscription(this, ClusterStorage.JOB, true)); while (active) { @@ -193,7 +192,7 @@ public class UserCodeProcess extends StandardClient implements ProxyObserver returnData = new Vector(); - String[] returnArray = new String[0]; - try - { - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - StringReader is = new StringReader(data); - Document doc = builder.parse(new InputSource(is)); - StringTokenizer pathTokens = new StringTokenizer(xpath, "/"); - int taille = pathTokens.countTokens(); - String[] pathElements = new String[taille]; - int i=taille; - while (pathTokens.hasMoreElements()) - pathElements[--i] = pathTokens.nextToken(); +public class XmlElementParser { + public static String[] parse(String data, String xpath) { + Vector returnData = new Vector(); + String[] returnArray = new String[0]; + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder; + try { + builder = factory.newDocumentBuilder(); + } catch (ParserConfigurationException e) { + Logger.error(e); + throw new RuntimeException("Could not create XML Document Builder"); + } + StringReader is = new StringReader(data); + Document doc; + try { + doc = builder.parse(new InputSource(is)); + } catch (Exception e) { + Logger.error(e); + throw new RuntimeException("Parser malfunction"); + } + StringTokenizer pathTokens = new StringTokenizer(xpath, "/"); + int taille = pathTokens.countTokens(); + String[] pathElements = new String[taille]; + int i = taille; + while (pathTokens.hasMoreElements()) + pathElements[--i] = pathTokens.nextToken(); - if (Logger.doLog(6)) { - Logger.msg(6, "Path elements:"); - for (String pathElement : pathElements) - Logger.debug(6, pathElement); - } + if (Logger.doLog(6)) { + Logger.msg(6, "Path elements:"); + for (String pathElement : pathElements) + Logger.debug(6, pathElement); + } - Logger.msg(6, "Looking for attribute "+pathElements[0]+" in "+pathElements[1]); - NodeList nl = doc.getElementsByTagName(pathElements[1]); - for (int j = 0; j < nl.getLength(); j++) - { - Logger.msg(6, "Found one"); - Element e = (Element)nl.item(j); - boolean match=true; - Node child=e; - for (int k=2;k