com.evolveum.midpoint.schema.result
Class OperationResult

java.lang.Object
  extended by com.evolveum.midpoint.schema.result.OperationResult
All Implemented Interfaces:
DebugDumpable, Dumpable, java.io.Serializable

public class OperationResult
extends java.lang.Object
implements java.io.Serializable, Dumpable, DebugDumpable

Nested Operation Result. This class provides informations for better error handling in complex operations. It contains a status (success, failure, warning, ...) and an error message. It also contains a set of sub-results - results on inner operations. This object can be used by GUI to display smart (and interactive) error information. It can also be used by the client code to detect deeper problems in the invocations, retry or otherwise compensate for the errors or decide how severe the error was and it is possible to proceed.

Author:
lazyman, Radovan Semancik
See Also:
Serialized Form

Field Summary
static java.lang.String CONTEXT_IMPLEMENTATION_CLASS
           
static java.lang.String CONTEXT_ITEM
           
static java.lang.String CONTEXT_OBJECT
           
static java.lang.String CONTEXT_OID
           
static java.lang.String CONTEXT_PROGRESS
           
static java.lang.String CONTEXT_TASK
           
static java.lang.String PARAM_OBJECT
           
static java.lang.String PARAM_OID
           
static java.lang.String PARAM_OPTIONS
           
static java.lang.String PARAM_TASK
           
static java.lang.String PARAM_TYPE
           
static java.lang.String RETURN_COUNT
           
 
Constructor Summary
OperationResult(java.lang.String operation)
           
OperationResult(java.lang.String operation, long token, java.lang.String messageCode, java.lang.String message)
           
OperationResult(java.lang.String operation, java.util.Map<java.lang.String,java.lang.Object> params, OperationResultStatus status, long token, java.lang.String messageCode, java.lang.String message)
           
OperationResult(java.lang.String operation, java.util.Map<java.lang.String,java.lang.Object> params, OperationResultStatus status, long token, java.lang.String messageCode, java.lang.String message, java.util.List<OperationResult> subresults)
           
OperationResult(java.lang.String operation, java.util.Map<java.lang.String,java.lang.Object> params, OperationResultStatus status, long token, java.lang.String messageCode, java.lang.String message, java.lang.String localizationMessage, java.util.List<java.lang.Object> localizationArguments, java.lang.Throwable cause, java.util.List<OperationResult> subresults)
           
OperationResult(java.lang.String operation, java.util.Map<java.lang.String,java.lang.Object> params, OperationResultStatus status, long token, java.lang.String messageCode, java.lang.String message, java.lang.String localizationMessage, java.lang.Throwable cause, java.util.List<OperationResult> subresults)
           
OperationResult(java.lang.String operation, OperationResultStatus status, long token, java.lang.String messageCode, java.lang.String message)
           
OperationResult(java.lang.String operation, OperationResultStatus status, long token, java.lang.String messageCode, java.lang.String message, java.lang.Throwable cause)
           
OperationResult(java.lang.String operation, OperationResultStatus status, java.lang.String message)
           
OperationResult(java.lang.String operation, OperationResultStatus status, java.lang.String messageCode, java.lang.String message)
           
OperationResult(java.lang.String operation, java.lang.String messageCode, java.lang.String message)
           
 
Method Summary
 void addContext(java.lang.String contextName, java.lang.Object value)
           
 void addParam(java.lang.String paramName, java.lang.Object paramValue)
           
 void addParams(java.lang.String[] names, java.lang.Object... objects)
           
 void addReturn(java.lang.String returnName, java.lang.Object value)
           
 void addSubresult(OperationResult subresult)
           
 void appendDetail(java.lang.String detailLine)
           
 void computeStatus()
          Computes operation result status based on subtask status.
 void computeStatus(java.lang.String errorMessage)
          Computes operation result status based on subtask status and sets an error message if the status is FATAL_ERROR.
 void computeStatus(java.lang.String errorMessage, java.lang.String warnMessage)
           
static OperationResult createOperationResult(OperationResultType result)
           
 OperationResultType createOperationResultType()
           
 OperationResult createSubresult(java.lang.String operation)
           
 java.lang.String debugDump()
          Show the content of the object intended for diagnostics by system administrator.
 java.lang.String debugDump(int indent)
           
 java.lang.String dump()
          Show the content of the object intended for diagnostics by developer.
 java.lang.String dump(boolean withStack)
           
 OperationResult findSubresult(java.lang.String operation)
           
 java.lang.Throwable getCause()
           
 OperationResultStatus getComputeStatus()
           
 java.util.Map<java.lang.String,java.lang.Object> getContext()
           
<T> T
getContext(java.lang.Class<T> type, java.lang.String contextName)
           
 int getCount()
           
 java.util.List<java.lang.String> getDetail()
           
 OperationResult getLastSubresult()
           
 OperationResultStatus getLastSubresultStatus()
           
 java.util.List<java.lang.Object> getLocalizationArguments()
           
 java.lang.String getLocalizationMessage()
           
 java.lang.String getMessage()
           
 java.lang.String getMessageCode()
          Contains mesage code based on module error catalog.
 java.lang.String getOperation()
          Contains operation name.
 java.util.Map<java.lang.String,java.lang.Object> getParams()
          Method returns Map with operation parameters.
 java.lang.Object getReturn(java.lang.String returnName)
           
 java.util.Map<java.lang.String,java.lang.Object> getReturns()
           
 OperationResultStatus getStatus()
          Contains operation status as defined in OperationResultStatus
 java.util.List<OperationResult> getSubresults()
          Method returns list of operation subresults @{link OperationResult.
 long getToken()
           
 boolean hasUnknownStatus()
          Returns true if result status is UNKNOWN or any of the subresult status is unknown (recursive).
 void incrementCount()
           
 boolean isAcceptable()
          Returns true if the result is acceptable for further processing.
 boolean isError()
           
 boolean isHandledError()
           
 boolean isInProgress()
           
 boolean isNotApplicable()
           
 boolean isPartialError()
           
 boolean isSuccess()
          Returns true if the result is success.
 boolean isSummarizeErrors()
           
 boolean isSummarizePartialErrors()
           
 boolean isSummarizeSuccesses()
           
 boolean isUnknown()
           
 boolean isWarning()
           
 void muteError()
          If the operation is an error then it will switch the status to EXPECTED_ERROR.
 void muteLastSubresultError()
           
 void recomputeStatus()
           
 void recomputeStatus(java.lang.String message)
           
 void recomputeStatus(java.lang.String errorMessage, java.lang.String warningMessage)
           
 void record(CommonException exception)
          Records result from a common exception type.
 void recordFatalError(java.lang.String message)
           
 void recordFatalError(java.lang.String message, java.lang.Throwable cause)
           
 void recordFatalError(java.lang.Throwable cause)
           
 void recordHandledError(java.lang.String message)
           
 void recordInProgress()
           
 void recordPartialError(java.lang.String message)
           
 void recordPartialError(java.lang.String message, java.lang.Throwable cause)
           
 void recordPartialError(java.lang.Throwable cause)
           
 void recordStatus(OperationResultStatus status, java.lang.String message)
           
 void recordStatus(OperationResultStatus status, java.lang.String message, java.lang.Throwable cause)
           
 void recordStatus(OperationResultStatus status, java.lang.Throwable cause)
           
 void recordSuccess()
           
 void recordSuccessIfUnknown()
           
 void recordUnknown()
           
 void recordWarning(java.lang.String message)
           
 void recordWarning(java.lang.String message, java.lang.Throwable cause)
           
 void recordWarning(java.lang.Throwable cause)
           
 void setCount(int count)
           
 void setErrorsHandled()
          Set all error status in this result and all subresults as handled.
 void setStatus(OperationResultStatus status)
           
 void setSummarizeErrors(boolean summarizeErrors)
           
 void setSummarizePartialErrors(boolean summarizePartialErrors)
           
 void setSummarizeSuccesses(boolean summarizeSuccesses)
           
 void summarize()
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

CONTEXT_IMPLEMENTATION_CLASS

public static final java.lang.String CONTEXT_IMPLEMENTATION_CLASS
See Also:
Constant Field Values

CONTEXT_PROGRESS

public static final java.lang.String CONTEXT_PROGRESS
See Also:
Constant Field Values

CONTEXT_OID

public static final java.lang.String CONTEXT_OID
See Also:
Constant Field Values

CONTEXT_OBJECT

public static final java.lang.String CONTEXT_OBJECT
See Also:
Constant Field Values

CONTEXT_ITEM

public static final java.lang.String CONTEXT_ITEM
See Also:
Constant Field Values

CONTEXT_TASK

public static final java.lang.String CONTEXT_TASK
See Also:
Constant Field Values

PARAM_OID

public static final java.lang.String PARAM_OID
See Also:
Constant Field Values

PARAM_TYPE

public static final java.lang.String PARAM_TYPE
See Also:
Constant Field Values

PARAM_OPTIONS

public static final java.lang.String PARAM_OPTIONS
See Also:
Constant Field Values

PARAM_TASK

public static final java.lang.String PARAM_TASK
See Also:
Constant Field Values

PARAM_OBJECT

public static final java.lang.String PARAM_OBJECT
See Also:
Constant Field Values

RETURN_COUNT

public static final java.lang.String RETURN_COUNT
See Also:
Constant Field Values
Constructor Detail

OperationResult

public OperationResult(java.lang.String operation)

OperationResult

public OperationResult(java.lang.String operation,
                       java.lang.String messageCode,
                       java.lang.String message)

OperationResult

public OperationResult(java.lang.String operation,
                       long token,
                       java.lang.String messageCode,
                       java.lang.String message)

OperationResult

public OperationResult(java.lang.String operation,
                       OperationResultStatus status,
                       java.lang.String message)

OperationResult

public OperationResult(java.lang.String operation,
                       OperationResultStatus status,
                       java.lang.String messageCode,
                       java.lang.String message)

OperationResult

public OperationResult(java.lang.String operation,
                       OperationResultStatus status,
                       long token,
                       java.lang.String messageCode,
                       java.lang.String message)

OperationResult

public OperationResult(java.lang.String operation,
                       OperationResultStatus status,
                       long token,
                       java.lang.String messageCode,
                       java.lang.String message,
                       java.lang.Throwable cause)

OperationResult

public OperationResult(java.lang.String operation,
                       java.util.Map<java.lang.String,java.lang.Object> params,
                       OperationResultStatus status,
                       long token,
                       java.lang.String messageCode,
                       java.lang.String message)

OperationResult

public OperationResult(java.lang.String operation,
                       java.util.Map<java.lang.String,java.lang.Object> params,
                       OperationResultStatus status,
                       long token,
                       java.lang.String messageCode,
                       java.lang.String message,
                       java.util.List<OperationResult> subresults)

OperationResult

public OperationResult(java.lang.String operation,
                       java.util.Map<java.lang.String,java.lang.Object> params,
                       OperationResultStatus status,
                       long token,
                       java.lang.String messageCode,
                       java.lang.String message,
                       java.lang.String localizationMessage,
                       java.lang.Throwable cause,
                       java.util.List<OperationResult> subresults)

OperationResult

public OperationResult(java.lang.String operation,
                       java.util.Map<java.lang.String,java.lang.Object> params,
                       OperationResultStatus status,
                       long token,
                       java.lang.String messageCode,
                       java.lang.String message,
                       java.lang.String localizationMessage,
                       java.util.List<java.lang.Object> localizationArguments,
                       java.lang.Throwable cause,
                       java.util.List<OperationResult> subresults)
Method Detail

createSubresult

public OperationResult createSubresult(java.lang.String operation)

getOperation

public java.lang.String getOperation()
Contains operation name. Operation name must be defined as String constant in module interface with description and possible parameters. It can be used for further processing. It will be used as key for translation in admin-gui.

Returns:
always return non null, non empty string

getCount

public int getCount()

setCount

public void setCount(int count)

incrementCount

public void incrementCount()

isSummarizeErrors

public boolean isSummarizeErrors()

setSummarizeErrors

public void setSummarizeErrors(boolean summarizeErrors)

isSummarizePartialErrors

public boolean isSummarizePartialErrors()

setSummarizePartialErrors

public void setSummarizePartialErrors(boolean summarizePartialErrors)

isSummarizeSuccesses

public boolean isSummarizeSuccesses()

setSummarizeSuccesses

public void setSummarizeSuccesses(boolean summarizeSuccesses)

getSubresults

public java.util.List<OperationResult> getSubresults()
Method returns list of operation subresults @{link OperationResult.

Returns:
never returns null

getLastSubresult

public OperationResult getLastSubresult()
Returns:
last subresult, or null if there are no subresults.

getLastSubresultStatus

public OperationResultStatus getLastSubresultStatus()
Returns:
last subresult status, or null if there are no subresults.

addSubresult

public void addSubresult(OperationResult subresult)

findSubresult

public OperationResult findSubresult(java.lang.String operation)

getStatus

public OperationResultStatus getStatus()
Contains operation status as defined in OperationResultStatus

Returns:
never returns null

setStatus

public void setStatus(OperationResultStatus status)

isSuccess

public boolean isSuccess()
Returns true if the result is success. This returns true if the result is absolute success. Presence of partial failures or warnings fail this test.

Returns:
true if the result is success.

isWarning

public boolean isWarning()

isAcceptable

public boolean isAcceptable()
Returns true if the result is acceptable for further processing. In other words: if there were no fatal errors. Warnings and partial errors are acceptable. Yet, this test also fails if the operation state is not known.

Returns:
true if the result is acceptable for further processing.

isUnknown

public boolean isUnknown()

isInProgress

public boolean isInProgress()

isError

public boolean isError()

isPartialError

public boolean isPartialError()

isHandledError

public boolean isHandledError()

isNotApplicable

public boolean isNotApplicable()

setErrorsHandled

public void setErrorsHandled()
Set all error status in this result and all subresults as handled.


computeStatus

public void computeStatus(java.lang.String errorMessage)
Computes operation result status based on subtask status and sets an error message if the status is FATAL_ERROR.

Parameters:
errorMessage - error message

computeStatus

public void computeStatus(java.lang.String errorMessage,
                          java.lang.String warnMessage)

computeStatus

public void computeStatus()
Computes operation result status based on subtask status.


getComputeStatus

public OperationResultStatus getComputeStatus()

recomputeStatus

public void recomputeStatus()

recomputeStatus

public void recomputeStatus(java.lang.String message)

recomputeStatus

public void recomputeStatus(java.lang.String errorMessage,
                            java.lang.String warningMessage)

recordSuccessIfUnknown

public void recordSuccessIfUnknown()

getParams

public java.util.Map<java.lang.String,java.lang.Object> getParams()
Method returns Map with operation parameters. Parameters keys are described in module interface for every operation.

Returns:
never returns null

addParam

public void addParam(java.lang.String paramName,
                     java.lang.Object paramValue)

addParams

public void addParams(java.lang.String[] names,
                      java.lang.Object... objects)

getContext

public java.util.Map<java.lang.String,java.lang.Object> getContext()

getContext

public <T> T getContext(java.lang.Class<T> type,
                        java.lang.String contextName)

addContext

public void addContext(java.lang.String contextName,
                       java.lang.Object value)

getReturns

public java.util.Map<java.lang.String,java.lang.Object> getReturns()

addReturn

public void addReturn(java.lang.String returnName,
                      java.lang.Object value)

getReturn

public java.lang.Object getReturn(java.lang.String returnName)

getToken

public long getToken()
Returns:
Contains random long number, for better searching in logs.

getMessageCode

public java.lang.String getMessageCode()
Contains mesage code based on module error catalog.

Returns:
Can return null.

getMessage

public java.lang.String getMessage()
Returns:
Method returns operation result message. Message is required. It will be key for translation in admin-gui.

getLocalizationMessage

public java.lang.String getLocalizationMessage()
Returns:
Method returns message key for translation, can be null.

getLocalizationArguments

public java.util.List<java.lang.Object> getLocalizationArguments()
Returns:
Method returns arguments if needed for localization, can be null.

getCause

public java.lang.Throwable getCause()
Returns:
Method returns operation result exception. Not required, can be null.

recordSuccess

public void recordSuccess()

recordInProgress

public void recordInProgress()

recordUnknown

public void recordUnknown()

recordFatalError

public void recordFatalError(java.lang.Throwable cause)

muteError

public void muteError()
If the operation is an error then it will switch the status to EXPECTED_ERROR. This is used if the error is expected and properly handled.


muteLastSubresultError

public void muteLastSubresultError()

recordPartialError

public void recordPartialError(java.lang.Throwable cause)

recordWarning

public void recordWarning(java.lang.Throwable cause)

recordStatus

public void recordStatus(OperationResultStatus status,
                         java.lang.Throwable cause)

recordFatalError

public void recordFatalError(java.lang.String message,
                             java.lang.Throwable cause)

recordPartialError

public void recordPartialError(java.lang.String message,
                               java.lang.Throwable cause)

recordWarning

public void recordWarning(java.lang.String message,
                          java.lang.Throwable cause)

recordHandledError

public void recordHandledError(java.lang.String message)

recordStatus

public void recordStatus(OperationResultStatus status,
                         java.lang.String message,
                         java.lang.Throwable cause)

recordFatalError

public void recordFatalError(java.lang.String message)

recordPartialError

public void recordPartialError(java.lang.String message)

recordWarning

public void recordWarning(java.lang.String message)

record

public void record(CommonException exception)
Records result from a common exception type. This automatically determines status and also sets appropriate message.

Parameters:
exception - common exception

recordStatus

public void recordStatus(OperationResultStatus status,
                         java.lang.String message)

hasUnknownStatus

public boolean hasUnknownStatus()
Returns true if result status is UNKNOWN or any of the subresult status is unknown (recursive). May come handy in tests to check if all the operations fill out the status as they should.


appendDetail

public void appendDetail(java.lang.String detailLine)

getDetail

public java.util.List<java.lang.String> getDetail()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

createOperationResult

public static OperationResult createOperationResult(OperationResultType result)

createOperationResultType

public OperationResultType createOperationResultType()

summarize

public void summarize()

debugDump

public java.lang.String debugDump()
Description copied from interface: DebugDumpable
Show the content of the object intended for diagnostics by system administrator. The out put should be suitable to use in system logs at "debug" level. It may be multi-line, but in that case it should be well indented and quite terse. As it is intended to be used by system administrator, it should not use any developer terms such as class names, exceptions or stack traces.

Specified by:
debugDump in interface DebugDumpable
Returns:
content of the object intended for diagnostics by system administrator.

debugDump

public java.lang.String debugDump(int indent)
Specified by:
debugDump in interface DebugDumpable

dump

public java.lang.String dump()
Description copied from interface: Dumpable
Show the content of the object intended for diagnostics by developer. The content may be multi-line, in case of hierarchical objects it may be intended. The use of this method may not be efficient. It is not supposed to be used in normal operation. However, it is very useful in tests or in case of dumping objects in severe error situations.

Specified by:
dump in interface Dumpable
Returns:
content of the object intended for diagnostics.

dump

public java.lang.String dump(boolean withStack)


Copyright © 2012 evolveum. All Rights Reserved.