Skip to content

Commit

Permalink
Backporting error reporting fixes.
Browse files Browse the repository at this point in the history
  • Loading branch information
semancik committed Mar 30, 2013
1 parent 162a868 commit cc4cc7e
Show file tree
Hide file tree
Showing 8 changed files with 258 additions and 166 deletions.
Expand Up @@ -454,35 +454,18 @@ public void computeStatus() {
}
if (sub.getStatus() == OperationResultStatus.PARTIAL_ERROR) {
newStatus = OperationResultStatus.PARTIAL_ERROR;
// if (message == null) {
// message = sub.getMessage();
// } else {
// message = message + ": " + sub.getMessage();
// }
newMessage = sub.getMessage();
// newMessage = sub.getMessage();
// return;
}
if (newStatus != OperationResultStatus.PARTIAL_ERROR){
if (sub.getStatus() == OperationResultStatus.HANDLED_ERROR) {
newStatus = OperationResultStatus.HANDLED_ERROR;
// if (message == null) {
newMessage = sub.getMessage();
// } else {
// message = message + ": " + sub.getMessage();
// }
// return;
newMessage = sub.getMessage();
}
}
if (sub.getStatus() != OperationResultStatus.SUCCESS
// && sub.getStatus() != OperationResultStatus.HANDLED_ERROR
&& sub.getStatus() != OperationResultStatus.NOT_APPLICABLE) {
allSuccess = false;
}
// if (sub.getStatus() == OperationResultStatus.PARTIAL_ERROR) {
// newStatus = OperationResultStatus.PARTIAL_ERROR;
// newMessage = sub.getMessage();
// }
if (newStatus != OperationResultStatus.HANDLED_ERROR) {
if (sub.getStatus() == OperationResultStatus.WARNING) {
newStatus = OperationResultStatus.WARNING;
Expand All @@ -505,6 +488,63 @@ public void computeStatus() {
}
}
}

/**
* Used when the result contains several composite sub-result that are of equivalent meaning.
* If all of them fails the result will be fatal error as well. If only some of them fail the
* result will be partial error. Handled error is considered a success.
*/
public void computeStatusComposite() {
if (getSubresults().isEmpty()) {
if (status == OperationResultStatus.UNKNOWN) {
status = OperationResultStatus.SUCCESS;
}
return;
}

boolean allOk = true;
boolean allNotApplicable = true;
boolean hasInProgress = false;
for (OperationResult sub : getSubresults()) {
if (sub.getStatus() != OperationResultStatus.NOT_APPLICABLE) {
allNotApplicable = false;
}
if (sub.getStatus() == OperationResultStatus.FATAL_ERROR) {
allOk = false;
if (message == null) {
message = sub.getMessage();
} else {
message = message + ", " + sub.getMessage();
}
}
if (sub.getStatus() == OperationResultStatus.IN_PROGRESS) {
hasInProgress = true;
if (message == null) {
message = sub.getMessage();
} else {
message = message + ", " + sub.getMessage();
}
}
if (sub.getStatus() == OperationResultStatus.PARTIAL_ERROR) {
allOk = false;
if (message == null) {
message = sub.getMessage();
} else {
message = message + ", " + sub.getMessage();
}
}
}

if (allNotApplicable) {
status = OperationResultStatus.NOT_APPLICABLE;
} else if (allOk) {
status = OperationResultStatus.SUCCESS;
} else if (hasInProgress) {
status = OperationResultStatus.IN_PROGRESS;
} else {
status = OperationResultStatus.PARTIAL_ERROR;
}
}

public OperationResultStatus getComputeStatus() {
OperationResultStatus origStatus = status;
Expand Down Expand Up @@ -545,6 +585,12 @@ public void recordSuccessIfUnknown() {
recordSuccess();
}
}

public void recordNotApplicableIfUnknown() {
if (isUnknown()) {
status = OperationResultStatus.NOT_APPLICABLE;
}
}

/**
* Method returns {@link Map} with operation parameters. Parameters keys are
Expand Down

0 comments on commit cc4cc7e

Please sign in to comment.