Issue #3648 Improve GFE error handling for getAllAvailableParms.

Change-Id: I13d41a3c231a56fe7d6fc4bc3cbfd96e1bdcdccf

Former-commit-id: b77b3c916b4dcc9034408220006f941cd301ed3c
This commit is contained in:
Ron Anderson 2014-09-23 18:47:38 -05:00
parent 25a41ff9db
commit 429de3224f
2 changed files with 41 additions and 21 deletions

View file

@ -118,6 +118,8 @@ import com.raytheon.viz.gfe.core.parm.Parm;
* 06/06/13 #2073 dgilling Make getGridInventory() better match A1,
* fix warnings.
* 11/20/2013 #2331 randerso Added getTopoData method
* 09/23/14 #3648 randerso Changed getParmList to return results even if some DbIds
* have errors
*
* </pre>
*
@ -190,8 +192,20 @@ public class IFPClient {
throws GFEServerException {
GetParmListRequest request = new GetParmListRequest();
request.setDbIds(ids);
ServerResponse<?> sr = makeRequest(request);
return (List<ParmID>) sr.getPayload();
ServerResponse<?> sr = makeRequest(request, false);
List<ParmID> parmIds = (List<ParmID>) sr.getPayload();
if (!sr.isOkay()) {
String msg = formatSRMessage(sr);
if (parmIds != null && !parmIds.isEmpty()) {
// got something so display an error message and continue
statusHandler.error(msg);
} else {
// got nothing so throw exception
throw new GFEServerException(msg);
}
}
return parmIds;
}
/**
@ -729,27 +743,33 @@ public class IFPClient {
if ((throwExceptionsBasedOnResponse) && (rval != null)
&& (!rval.isOkay())) {
StringBuilder msg = new StringBuilder();
if (rval.getMessages().size() > 1) {
msg.append("Errors ");
} else {
msg.append("Error ");
}
msg.append("occurred on GFE server -");
Iterator<ServerMsg> iter = rval.getMessages().iterator();
while (iter.hasNext()) {
msg.append(iter.next().getMessage());
if (iter.hasNext()) {
msg.append(", ");
}
}
throw new GFEServerException(msg.toString());
String msg = formatSRMessage(rval);
throw new GFEServerException(msg);
}
return rval;
}
private String formatSRMessage(ServerResponse<?> rval) {
StringBuilder sb = new StringBuilder();
if (rval.getMessages().size() > 1) {
sb.append("Errors ");
} else {
sb.append("Error ");
}
sb.append("occurred on GFE server: ");
Iterator<ServerMsg> iter = rval.getMessages().iterator();
while (iter.hasNext()) {
sb.append(iter.next().getMessage());
if (iter.hasNext()) {
sb.append(", ");
}
}
String msg = sb.toString();
return msg;
}
public void clearPracticeTable(String siteId) throws VizException {
ClearPracticeVTECTableRequest request = new ClearPracticeVTECTableRequest();
request.setRequestedSiteId(SiteMap.getInstance().getSite4LetterId(

View file

@ -38,7 +38,8 @@ import com.raytheon.uf.common.serialization.comm.IRequestHandler;
* 04/08/08 #875 bphillip Initial Creation
* 09/22/09 3058 rjpeter Converted to IRequestHandler
* 05/02/13 #1969 randerso Fixed null pointer if getParmList fails
* 06/13/13 2044 randerso Refactored to use IFPServer
* 06/13/13 #2044 randerso Refactored to use IFPServer
* 09/23/14 #3648 randerso Changed to send results even if some DbIds fail
* </pre>
*
* @author bphillip
@ -52,6 +53,8 @@ public class GetParmListHandler extends BaseGfeRequestHandler implements
List<ParmID> retVal = new ArrayList<ParmID>();
ServerResponse<List<ParmID>> sr = new ServerResponse<List<ParmID>>();
sr.setPayload(retVal);
for (DatabaseID id : request.getDbIds()) {
ServerResponse<List<ParmID>> ssr = getIfpServer(request)
.getGridParmMgr().getParmList(id);
@ -61,9 +64,6 @@ public class GetParmListHandler extends BaseGfeRequestHandler implements
sr.addMessages(ssr);
}
}
if (sr.isOkay()) {
sr.setPayload(retVal);
}
return sr;
}
}