@Override
public final Entity updateEntity(UriInfo uriInfo, DeserializerResult payLoad,ODataRequest request,ODataResponse response) throws ODataApplicationException {
this.conn = getConnection(request);
UriResourceEntitySet entitySet = ((UriResourceEntitySet)uriInfo.getUriResourceParts().get(0));
String serviceName = entitySet.getEntityType().getNamespace();
Map<String, AdminDataAnnotation> adminDataMapForCreate = null;
try{
adminDataMapForCreate = CSNUtil.getAdminDataMapForUpdate(serviceName,entitySet.getEntitySet().getName(),(conn != null && conn.getClientInfo(APPLICATIONUSER) != null));
}catch(SQLException ex){
CDSRuntimeException cdsRuntimeException = new CDSRuntimeException(CDSRuntimeException.MessageKeys.INTERNAL_ERROR,
"UPDATE FAILED WITH INTERNAL ERROR", HttpStatusCode.INTERNAL_SERVER_ERROR.getStatusCode(),
HeaderUtil.getlocale(request), "INSERT FAILED WITH INTERNAL ERROR");
logger.error("INSERT FAILED WITH INTERNAL ERROR", ex);
throw cdsRuntimeException;
}
UpdateEntityInfo uEinfo=cdsprocessor.transormToUpdateEntityInfo(uriInfo, payLoad, request,(request!=null&&request.getMethod()==HttpMethod.PUT)?false:true ,adminDataMapForCreate);
cdsprocessor.executeUpdate(uriInfo, uEinfo, conn, request);
if(isDraftFlow()) {
return readDataFromMainTable(uriInfo, request, DraftUtilsV4.extractKeyPredicateFilterExpressions(uriInfo, false));
}else {
return readEntity(uriInfo,request,response, false).getEntity();
}
}