Fixed: Service Log screen is broken
Steps to regenerate
Navigate to Logging menu under webtools
Select Service Log menu, see NPE error
Thanks: Swapnil M Mane for report and Swapnil and Rishi Solanki for reviews
@@ -301,6 +301,7 @@ public class ServiceDispatcher {
if (modelService.requireNewTransaction) {
parentTransaction = TransactionUtil.suspend();
if (TransactionUtil.isTransactionInPlace()) {
+ rs.setEndStamp();
throw new GenericTransactionException("In service " + modelService.name + " transaction is still in place after suspend, status is " + TransactionUtil.getStatusString());
}
// now start a new transaction
@@ -358,6 +359,7 @@ public class ServiceDispatcher {
GenericValue userLogin = (GenericValue) context.get("userLogin");
if (modelService.auth && userLogin == null) {
+ rs.setEndStamp();
throw new ServiceAuthException("User authorization is required for this service: " + modelService.name + modelService.debugInfo());
}
@@ -381,6 +383,7 @@ public class ServiceDispatcher {
modelService.validate(context, ModelService.IN_PARAM, locale);
} catch (ServiceValidationException e) {
Debug.logError(e, "Incoming context (in runSync : " + modelService.name + ") does not match expected requirements", module);
+ rs.setEndStamp();
throw e;
}
}
@@ -489,6 +492,7 @@ public class ServiceDispatcher {
try {
modelService.validate(result, ModelService.OUT_PARAM, locale);
} catch (ServiceValidationException e) {
+ rs.setEndStamp();
throw new GenericServiceException("Outgoing result (in runSync : " + modelService.name + ") does not match expected requirements", e);
}
}
@@ -555,6 +559,7 @@ public class ServiceDispatcher {
if (e.getMessage() != null) {
errMsg = errMsg + ": " + e.getMessage();
}
+ rs.setEndStamp();
throw new GenericServiceException(errMsg);
}
}
@@ -567,6 +572,7 @@ public class ServiceDispatcher {
}
} catch (GenericTransactionException te) {
Debug.logError(te, "Problems with the transaction", module);
+ rs.setEndStamp();
throw new GenericServiceException("Problems with the transaction.", te.getNested());
} finally {
if (lock != null) {
@@ -584,6 +590,7 @@ public class ServiceDispatcher {
TransactionUtil.resume(parentTransaction);
} catch (GenericTransactionException ite) {
Debug.logWarning(ite, "Transaction error, not resumed", module);
+ rs.setEndStamp();
throw new GenericServiceException("Resume transaction exception, see logs");
}
}
