public class ServiceException extends RuntimeException
ServiceException
is the central unchecked exception thrown by the framework and Handler
when an error occurs during event processing via Service.emit(EventContext)
It extends RuntimeException
with an ErrorStatus
, which indicates an internal error code and a mapping to an HTTP status code.Modifier and Type | Field and Description |
---|---|
protected Object[] |
args |
protected ErrorStatus |
errorStatus |
protected MessageTarget |
messageTarget |
protected static ServiceExceptionUtils |
Utils |
Constructor and Description |
---|
ServiceException(ErrorStatus errorStatus,
String message,
Object... args)
Creates a new
ServiceException |
ServiceException(String message,
Object... args)
Creates a new
ServiceException . |
ServiceException(Throwable e)
Creates a new
ServiceException
The ErrorStatus of the first ServiceException found within the cause chain is used. |
Modifier and Type | Method and Description |
---|---|
protected List<EventContext> |
collectEventContexts() |
ErrorStatus |
getErrorStatus() |
List<EventContext> |
getEventContexts()
Returns the stack of
EventContext which corresponds to the events processed along the exception stack trace. |
String |
getLocalizedMessage() |
String |
getLocalizedMessage(Locale locale) |
String |
getMessage() |
MessageTarget |
getMessageTarget() |
String |
getPlainMessage() |
<E extends com.sap.cds.ql.StructuredType<E>> |
messageTarget(Class<E> type,
Function<E,Object> path)
Adds the passed path as target to the current
ServiceException . |
ServiceException |
messageTarget(Function<com.sap.cds.ql.StructuredType<?>,Object> path)
Adds the passed path as target to the current
ServiceException . |
ServiceException |
messageTarget(MessageTarget target)
Sets the provided message target.
|
ServiceException |
messageTarget(com.sap.cds.ql.cqn.Path path,
com.sap.cds.reflect.CdsElement element)
Sets the message target based on the provided path and cds element.
|
ServiceException |
messageTarget(String target)
Sets the provided string-based target.
|
<E extends com.sap.cds.ql.StructuredType<E>> |
messageTarget(String parameter,
Class<E> type,
Function<E,Object> path)
Adds the passed target parameter and path as target to the current
ServiceException . |
ServiceException |
messageTarget(String parameter,
Function<com.sap.cds.ql.StructuredType<?>,Object> path)
Adds the passed target parameter and path as target to the current
ServiceException . |
ServiceException |
messageTarget(String prefix,
String entity,
Function<com.sap.cds.ql.StructuredType<?>,Object> path)
Deprecated.
no longer supported, use
messageTarget(String, Function)
instead |
addSuppressed, fillInStackTrace, getCause, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
protected final ErrorStatus errorStatus
protected MessageTarget messageTarget
protected final Object[] args
protected static ServiceExceptionUtils Utils
public ServiceException(Throwable e)
ServiceException
ErrorStatus
of the first ServiceException
found within the cause chain is used.
If no ErrorStatus
is found, it defaults to ErrorStatuses.SERVER_ERROR
.e
- The causing Throwable
public ServiceException(String message, Object... args)
ServiceException
. The last argument might be the causing Throwable
and not a formatting argument.
ErrorStatus
of the first ServiceException
found within the cause chain is used.
If no ErrorStatus
is found, it defaults to ErrorStatuses.SERVER_ERROR
.message
- The formatting message, based on SLF4J's MessageFormatter
args
- The arguments to the formatting message. The last argument might the causing Throwable
.public ServiceException(ErrorStatus errorStatus, String message, Object... args)
ServiceException
errorStatus
- The ErrorStatus
, if null
the ErrorStatus
of the first ServiceException
found within the cause chain is used.
If no ErrorStatus
is found, it defaults to ErrorStatuses.SERVER_ERROR
message
- The formatting message, based on SLF4J's MessageFormatter
args
- The arguments to the formatting message. The last argument might the causing Throwable
.public ErrorStatus getErrorStatus()
ErrorStatus
public MessageTarget getMessageTarget()
MessageTarget
public String getMessage()
getMessage
in class Throwable
public String getLocalizedMessage()
getLocalizedMessage
in class Throwable
public String getPlainMessage()
public List<EventContext> getEventContexts()
EventContext
which corresponds to the events processed along the exception stack trace.
The lists starts with the EventContext
from which the exception was triggered.
If there are no contexts, the method returns an empty listEventContext
which corresponds to the events processed along the exception stack trace.protected List<EventContext> collectEventContexts()
public ServiceException messageTarget(String target)
target
- the string-based targetServiceException
public ServiceException messageTarget(MessageTarget target)
target
- the message targetServiceException
public ServiceException messageTarget(Function<com.sap.cds.ql.StructuredType<?>,Object> path)
ServiceException
.
The path is interpreted relative to the CQN statement, which was determined from the request.
For CRUD events this CQN statement points to the targeted entity.
For bound actions or functions this CQN statement points to the bound entity.
Is equivalent to calling messageTarget(MessageTarget.PARAMETER_CQN, path)
path
- the path to the target element or associationServiceException
public ServiceException messageTarget(String parameter, Function<com.sap.cds.ql.StructuredType<?>,Object> path)
ServiceException
.parameter
- target parameter serving as the entry point for the path resolution.
Passing MessageTarget.PARAMETER_CQN
indicates that the path
should be interpreted relatively to the target entity of the request.
Alternatively you can pass names of action or function parameters.path
- the path to the target element or associationServiceException
@Deprecated public ServiceException messageTarget(String prefix, String entity, Function<com.sap.cds.ql.StructuredType<?>,Object> path)
messageTarget(String, Function)
insteadServiceException
.prefix
- the string-based prefix, prepended to the CQN pathentity
- the root entity of the pathpath
- the path to the target element or associationServiceException
public <E extends com.sap.cds.ql.StructuredType<E>> ServiceException messageTarget(Class<E> type, Function<E,Object> path)
ServiceException
.
This method allows to build the path in a type-safe way, by passing the corresponding entity or structured type interface.
The path is interpreted relative to the CQN statement, which was determined from the request.
For CRUD events this CQN statement points to the targeted entity.
For bound actions or functions this CQN statement points to the bound entity.
Is equivalent to calling messageTarget(MessageTarget.PARAMETER_CQN, type, path)
E
- the type of the roottype
- the root type of the path. Either an entity or a structured type.path
- the path to the target element or associationServiceException
public <E extends com.sap.cds.ql.StructuredType<E>> ServiceException messageTarget(String parameter, Class<E> type, Function<E,Object> path)
ServiceException
. This method allows to build the path in a type-safe way,
by passing the corresponding entity or structured type interface.E
- the type of the rootparameter
- target parameter serving as the entry point for the path resolution.
Passing MessageTarget.PARAMETER_CQN
indicates that the path
should be interpreted relatively to the target entity of the request.
Alternatively you can pass names of action or function parameters.type
- the root type of the path. Either an entity or a structured type.path
- the path to the target element or associationServiceException
public ServiceException messageTarget(com.sap.cds.ql.cqn.Path path, com.sap.cds.reflect.CdsElement element)
path
- the target pathelement
- the cds elementServiceException
Copyright © 2022. All rights reserved.