public IoTDataReadOutAccepted(IoTDataRequest dataRequest) { this(dataRequest.getSequenceNr(), false); setStanzaId(dataRequest.getStanzaId()); setTo(dataRequest.getFrom()); }
public final String getValueString() { if (valueString == null) { valueString = getValueInternal(); } return valueString; }
public IoTDataReadOutAccepted(int seqNr, boolean queued) { super(ELEMENT, NAMESPACE); this.seqNr = seqNr; this.queued = queued; setType(Type.result); }
case "int": { int value = Integer.parseInt(fieldValue); field = new IoTDataField.IntField(fieldName, value); field = new IoTDataField.BooleanField(fieldName, value); return new TimestampElement(date, fields);
public static IoTFieldsExtension buildFor(int seqNr, boolean done, NodeInfo nodeInfo, List<? extends IoTDataField> data) { TimestampElement timestampElement = new TimestampElement(new Date(), data); NodeElement nodeElement = new NodeElement(nodeInfo, timestampElement); return new IoTFieldsExtension(seqNr, done, nodeElement); }
@Override protected boolean acceptSpecific(Message message) { IoTFieldsExtension iotFieldsExtension = IoTFieldsExtension.from(message); if (iotFieldsExtension == null) { return false; } if (iotFieldsExtension.getSequenceNr() != seqNr) { return false; } if (onlyDone && !iotFieldsExtension.isDone()) { return false; } return true; }
final XMPPConnection connection = connection(); final int seqNr = nextSeqNr.incrementAndGet(); IoTDataRequest iotDataRequest = new IoTDataRequest(seqNr, true); iotDataRequest.setTo(jid); for (int i = 0; i < collectedCount; i++) { Message message = dataCollector.pollResult(); IoTFieldsExtension iotFieldsExtension = IoTFieldsExtension.from(message); res.add(iotFieldsExtension);
@Override public void momentaryReadOutRequest(ThingMomentaryReadOutResult callback) { IoTDataField.IntField field = new IntField(testRunId, value); callback.momentaryReadOut(Collections.singletonList(field)); } }).build();
List<NodeElement> nodes = iotFieldsExtension.getNodes(); List<TimestampElement> timestamps = node.getTimestampElements(); List<? extends IoTDataField> fields = timestamp.getDataFields(); assertTrue(dataField instanceof IoTDataField.IntField); IoTDataField.IntField intDataField = (IoTDataField.IntField) dataField; assertEquals(testRunId, intDataField.getName()); assertEquals(value, intDataField.getValue());
final IoTDataRequest dataRequest = (IoTDataRequest) iqRequest; if (!dataRequest.isMomentary()) { return new IoTDataReadOutAccepted(dataRequest);
@Override public IoTDataRequest parse(XmlPullParser parser, int initialDepth) throws Exception { int seqNr = ParserUtils.getIntegerAttributeOrThrow(parser, "seqnr", "IoT data request without sequence number"); boolean momentary = ParserUtils.getBooleanAttribute(parser, "momentary", false); return new IoTDataRequest(seqNr, momentary); }
@Override public IoTDataReadOutAccepted parse(XmlPullParser parser, int initialDepth) throws Exception { int seqNr = ParserUtils.getIntegerAttributeOrThrow(parser, "seqnr", "IoT data request <accepted/> without sequence number"); boolean queued = ParserUtils.getBooleanAttribute(parser, "queued", false); return new IoTDataReadOutAccepted(seqNr, queued); }
@Override public final XmlStringBuilder toXML(String enclosingNamespace) { XmlStringBuilder xml = new XmlStringBuilder(this); xml.attribute("name", name).attribute("value", getValueString()); // TODO handle 'unit' attribute as special case if <numeric/> is implemented. xml.closeEmptyElement(); return xml; }
public NodeElement parseNode(XmlPullParser parser) throws XmlPullParserException, IOException, ParseException { final int initialDepth = parser.getDepth(); final NodeInfo nodeInfo = NodeInfoParser.parse(parser); List<TimestampElement> timestampElements = new ArrayList<>(); outerloop: while (true) { final int eventType = parser.next(); final String name = parser.getName(); switch (eventType) { case XmlPullParser.START_TAG: switch (name){ case TimestampElement.ELEMENT: TimestampElement timestampElement = parseTimestampElement(parser); timestampElements.add(timestampElement); break; } break; case XmlPullParser.END_TAG: if (parser.getDepth() == initialDepth) { break outerloop; } break; } } return new NodeElement(nodeInfo, timestampElements); }
@Override public IoTFieldsExtension parse(XmlPullParser parser, int initialDepth) throws Exception { int seqNr = ParserUtils.getIntegerAttributeOrThrow(parser, "seqnr", "IoT data request <accepted/> without sequence number"); boolean done = ParserUtils.getBooleanAttribute(parser, "done", false); List<NodeElement> nodes = new ArrayList<>(); outerloop: while (true) { final int eventType = parser.next(); final String name = parser.getName(); switch (eventType) { case XmlPullParser.START_TAG: switch (name) { case NodeElement.ELEMENT: NodeElement node = parseNode(parser); nodes.add(node); break; } break; case XmlPullParser.END_TAG: if (parser.getDepth() == initialDepth) { break outerloop; } break; } } return new IoTFieldsExtension(seqNr, done, nodes); }
@Override public void iotScenario(XMPPTCPConnection dataThingConnection, XMPPTCPConnection readingThingConnection) throws TimeoutException, Exception { ThingState dataThingState = actAsDataThing(dataThingConnection); final SimpleResultSyncPoint syncPoint = new SimpleResultSyncPoint(); dataThingState.setThingStateChangeListener(new AbstractThingStateChangeListener() { @Override public void owned(BareJid jid) { syncPoint.signal(); } }); // Wait until the thing is owned. syncPoint.waitForResult(TIMEOUT); printStatus("OWNED - Thing now owned by " + dataThingState.getOwner()); // Make sure things are befriended. IoTProvisioningManager readingThingProvisioningManager = IoTProvisioningManager.getInstanceFor(readingThingConnection); readingThingProvisioningManager.sendFriendshipRequestIfRequired(dataThingConnection.getUser().asBareJid()); Roster dataThingRoster = Roster.getInstanceFor(dataThingConnection); RosterUtil.waitUntilOtherEntityIsSubscribed(dataThingRoster, readingThingConnection.getUser().asBareJid(), TIMEOUT); printStatus("FRIENDSHIP ACCEPTED - Trying to read out data"); IoTDataManager readingThingDataManager = IoTDataManager.getInstanceFor(readingThingConnection); List<IoTFieldsExtension> values = readingThingDataManager.requestMomentaryValuesReadOut(dataThingConnection.getUser()); if (values.size() != 1) { throw new IllegalStateException("Unexpected number of values returned: " + values.size()); } IoTFieldsExtension field = values.get(0); printStatus("DATA READ-OUT SUCCESS: " + field.toXML(null)); printStatus("IoT SCENARIO FINISHED SUCCESSFULLY"); } };
public IoTDataReadOutAccepted(IoTDataRequest dataRequest) { this(dataRequest.getSequenceNr(), false); setStanzaId(dataRequest.getStanzaId()); setTo(dataRequest.getFrom()); }
public static IoTFieldsExtension buildFor(int seqNr, boolean done, NodeInfo nodeInfo, List<? extends IoTDataField> data) { TimestampElement timestampElement = new TimestampElement(new Date(), data); NodeElement nodeElement = new NodeElement(nodeInfo, timestampElement); return new IoTFieldsExtension(seqNr, done, nodeElement); }
@Override public void momentaryReadOutRequest(ThingMomentaryReadOutResult callback) { IoTDataField.IntField field = new IntField("timestamp", (int) (System.currentTimeMillis() / 1000)); callback.momentaryReadOut(Collections.singletonList(field)); } })
public final String getValueString() { if (valueString == null) { valueString = getValueInternal(); } return valueString; }