Source:
<code>public void getSharedLock(final AsyncResponse asyncResponse, String lockInfo) { final String refDesignator = "ref_desig"; final String lockOwner = "lock_owner"; log.handle(Priority.INFO, "getSharedLock executes..."); try { Map<String, Object> lockInfoMap = Helper.toMap(lockInfo); if (lockInfoMap != null) { log.handle(Priority.INFO, "Lock Info Map = " + lockInfoMap.toString()); final String name = (String) lockInfoMap.get(refDesignator); final String details = (String) lockInfoMap.get(lockOwner); if (name != null && details != null) { executor.execute(new Runnable() { @Override public void run() { try { ClusterTask ct = ClusterLockUtils.lookupLock(name, details); if (ct != null) { ClusterTaskPK id = ct.getId(); log.handle(Priority.INFO, "ID name = " + id.getName() + " Details = " + id.getDetails() + " Running = " + ct.isRunning()); String ctString = Helper.toJson(ct); asyncResponse.resume(Response.ok(ctString).type(MediaType.APPLICATION_JSON).build()); } else { <START> log.handle(Priority.INFO, "LockUtils lookupLock returns null for Cluster Task"); <END> asyncResponse.resume(Response.ok("LockUtils lookupLock returns null Cluster Task", MediaType.APPLICATION_JSON).build()); } } catch (IOException e) { log.error("Helper to Json Exception", e); asyncResponse.resume(Response.ok("Helper to Json Exception", MediaType.APPLICATION_JSON).build()); } } }); } } } catch (Exception e) { log.error("getSharedLock Exception", e); asyncResponse.resume(Response.ok("getSharedLock Exception", MediaType.APPLICATION_JSON).build()); } }</code><technical_language>Error messages regurgitate software problem, instead provide insight wrong and, if possible, done operator correct prevent problem. E.g. "<filename> is null" is helpful, "Unable read <filename>" provides some insight</technical_language>

Target:
public void getSharedLock(final AsyncResponse asyncResponse, String lockInfo) { final String refDesignator = "ref_desig"; final String lockOwner = "lock_owner"; log.handle(Priority.INFO, "getSharedLock executes..."); try { Map<String, Object> lockInfoMap = Helper.toMap(lockInfo); if (lockInfoMap != null) { log.handle(Priority.INFO, "Lock Info Map = " + lockInfoMap.toString()); final String name = (String) lockInfoMap.get(refDesignator); final String details = (String) lockInfoMap.get(lockOwner); if (name != null && details != null) { executor.execute(new Runnable() { @Override public void run() { try { ClusterTask ct = ClusterLockUtils.lookupLock(name, details); if (ct != null) { ClusterTaskPK id = ct.getId(); log.handle(Priority.INFO, "ID name = " + id.getName() + " Details = " + id.getDetails() + " Running = " + ct.isRunning()); String ctString = Helper.toJson(ct); asyncResponse.resume(Response.ok(ctString).type(MediaType.APPLICATION_JSON).build()); } else { log.handle(Priority.INFO, "Lock with ID name = " + name + " and details = " + details + " was not found"); asyncResponse.resume(Response.ok("Lock with ID name = " + name + " and details = " + details + " was not found", MediaType.APPLICATION_JSON).build()); } } catch (IOException e) { log.error("Error in converting requested Lock info to JSON ", e); asyncResponse.resume(Response.ok("Error in converting requested Lock info to JSON ", MediaType.APPLICATION_JSON).build()); } } }); } else { log.error("reference designator or lock owner input to getSharedLock is invalid"); } } } catch (Exception e) { log.error("Invalid requested lock information: " + lockInfo, e); asyncResponse.resume(Response.ok(" INvalid requested lock information " + lockInfo, MediaType.APPLICATION_JSON).build()); } }