@Override public void getAgents(DeviceWrapper wrapper, IAgentUPnPListener listener) { final DeviceWrapper refDevice = wrapper; final IAgentUPnPListener callback = listener; if (_upnpService != null) { Service service = wrapper.getDevice().findService(upnpAgentService); if (service == null) { EngineContext.log() .error("Agent JS action not found for " + wrapper.getDevice().getDisplayString()); return; } Action getAgentListAction = service.getAction("GetAgentList"); if (getAgentListAction == null) { EngineContext.log().error("Agent list action not found"); return; } ActionInvocation getAgentListInvocation = new ActionInvocation(getAgentListAction); ActionCallback getAgentListCallback = new ActionCallback(getAgentListInvocation) { @Override public void success(ActionInvocation invocation) { List<AgentScript> scripts = new ArrayList<AgentScript>(); ActionArgumentValue agents = invocation.getOutput("Agents"); if (agents != null) { if (agents.getDatatype().getBuiltin() == Datatype.Builtin.STRING) { String encodedJsonArray = String.valueOf(agents.getValue()); try { JSONArray agentJsonArray = new JSONArray(encodedJsonArray); for (int idx = 0; idx < agentJsonArray.length(); idx++) { JSONObject agentObject = agentJsonArray.getJSONObject(idx); AgentScript networkScript = new AgentNetworkScript(refDevice, agentObject); scripts.add(networkScript); } } catch (JSONException e) { e.printStackTrace(); } } } callback.setAvailableAgents(refDevice, scripts); } @Override public void failure( ActionInvocation invocation, UpnpResponse operation, String defaultMsg) { // don't callback } }; _upnpService.getControlPoint().execute(getAgentListCallback); } }
@Override public void getSourceCode(DeviceWrapper wrapper, String agentId, IAgentUPnPListener listener) { final DeviceWrapper refDevice = wrapper; final IAgentUPnPListener callback = listener; if (_upnpService != null) { Service service = wrapper.getDevice().findService(upnpAgentService); Action getAgentSourceAction = service.getAction("GetAgentSource"); ActionInvocation getAgentSourceInvocation = new ActionInvocation(getAgentSourceAction); getAgentSourceInvocation.setInput("AgentId", agentId); ActionCallback getAgentSourceCallback = new ActionCallback(getAgentSourceInvocation) { @Override public void success(ActionInvocation invocation) { AgentScript networkScript = null; ActionArgumentValue agents = invocation.getOutput("Agent"); if (agents != null) { if (agents.getDatatype().getBuiltin() == Datatype.Builtin.STRING) { String encodedJsonArray = String.valueOf(agents.getValue()); try { JSONObject agentObject = new JSONObject(encodedJsonArray); networkScript = new AgentNetworkScript(refDevice, agentObject); } catch (JSONException e) { e.printStackTrace(); } } } callback.setAgentSourceCode(refDevice, networkScript); } @Override public void failure( ActionInvocation invocation, UpnpResponse operation, String defaultMsg) {} }; _upnpService.getControlPoint().execute(getAgentSourceCallback); } }