diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/core/internal/IFPClient.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/core/internal/IFPClient.java index 01762f44bc..abc0fd7b89 100644 --- a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/core/internal/IFPClient.java +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/core/internal/IFPClient.java @@ -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 * * * @@ -190,8 +192,20 @@ public class IFPClient { throws GFEServerException { GetParmListRequest request = new GetParmListRequest(); request.setDbIds(ids); - ServerResponse sr = makeRequest(request); - return (List) sr.getPayload(); + ServerResponse sr = makeRequest(request, false); + List parmIds = (List) 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 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 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( diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/handler/GetParmListHandler.java b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/handler/GetParmListHandler.java index e51b3f0984..6b8be3a7fa 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/handler/GetParmListHandler.java +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/handler/GetParmListHandler.java @@ -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 * * * @author bphillip @@ -52,6 +53,8 @@ public class GetParmListHandler extends BaseGfeRequestHandler implements List retVal = new ArrayList(); ServerResponse> sr = new ServerResponse>(); + sr.setPayload(retVal); + for (DatabaseID id : request.getDbIds()) { ServerResponse> 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; } }