Skip to content

Commit 1729671

Browse files
committed
[CSAPI] Fix to deserialize command parameters + set timestamp
1 parent 5f59b5b commit 1729671

File tree

3 files changed

+23
-10
lines changed

3 files changed

+23
-10
lines changed

sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/client/ConSysApiClient.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
import java.util.stream.Stream;
5151
import java.util.stream.StreamSupport;
5252
import net.opengis.swe.v20.BinaryEncoding;
53-
import org.sensorhub.api.command.CommandStatus;
5453
import org.sensorhub.api.command.CommandStreamInfo;
5554
import org.sensorhub.api.command.ICommandData;
5655
import org.sensorhub.api.command.ICommandStatus;
@@ -85,7 +84,6 @@
8584
import org.sensorhub.impl.service.consys.task.CommandBindingJson;
8685
import org.sensorhub.impl.service.consys.task.CommandBindingSweCommon;
8786
import org.sensorhub.impl.service.consys.task.CommandHandler;
88-
import org.sensorhub.impl.service.consys.task.CommandResultBindingSweCommon;
8987
import org.sensorhub.impl.service.consys.task.CommandStatusBindingJson;
9088
import org.sensorhub.impl.service.consys.task.CommandStatusHandler.CommandStatusHandlerContextData;
9189
import org.sensorhub.impl.service.consys.task.CommandStreamBindingJson;

sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandBindingJson.java

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,12 @@
3535
import org.sensorhub.impl.service.consys.resource.ResourceBindingJson;
3636
import org.sensorhub.impl.service.consys.resource.ResourceLink;
3737
import org.sensorhub.impl.service.consys.task.CommandHandler.CommandHandlerContextData;
38+
import org.sensorhub.utils.SWEDataUtils;
3839
import org.vast.cdm.common.DataStreamWriter;
3940
import org.vast.swe.BinaryDataWriter;
4041
import org.vast.swe.IComponentFilter;
4142
import org.vast.swe.SWEConstants;
43+
import org.vast.swe.ScalarIndexer;
4244
import org.vast.swe.fast.JsonDataParserGson;
4345
import org.vast.swe.fast.JsonDataWriterGson;
4446
import org.vast.util.ReaderException;
@@ -56,6 +58,7 @@ public class CommandBindingJson extends ResourceBindingJson<BigId, ICommandData>
5658
ICommandStore cmdStore;
5759
JsonDataParserGson paramsReader;
5860
Map<BigId, DataStreamWriter> paramsWriters;
61+
ScalarIndexer timeStampIndexer;
5962
String userID;
6063

6164

@@ -68,6 +71,7 @@ public CommandBindingJson(RequestContext ctx, IdEncoders idEncoders, boolean for
6871
if (forReading)
6972
{
7073
this.paramsReader = getSweCommonParser(contextData.csInfo, reader);
74+
this.timeStampIndexer = SWEDataUtils.getTimeStampIndexer(contextData.csInfo.getRecordStructure());
7175

7276
var user = ctx.getSecurityHandler().getCurrentUser();
7377
this.userID = user != null ? user.getId() : "api";
@@ -104,16 +108,21 @@ public ICommandData deserialize(JsonReader reader) throws IOException
104108
try
105109
{
106110
reader.beginObject();
107-
111+
108112
while (reader.hasNext())
109113
{
110114
var propName = reader.nextName();
111115

112-
if ("issueTime".equals(propName))
113-
cmd.withIssueTime(OffsetDateTime.parse(reader.nextString()).toInstant());
116+
if ("issueTime".equals(propName)) {
117+
if (reader.peek() != JsonToken.NULL) {
118+
cmd.withIssueTime(OffsetDateTime.parse(reader.nextString()).toInstant());
119+
} else {
120+
reader.nextNull();
121+
}
122+
}
114123
//else if ("foi".equals(propName))
115124
// obs.withFoi(id)
116-
else if ("params".equals(propName))
125+
else if ("parameters".equals(propName))
117126
{
118127
var result = paramsReader.parseNextBlock();
119128
cmd.withParams(result);
@@ -133,11 +142,18 @@ else if ("params".equals(propName))
133142
throw new ResourceParseException(INVALID_JSON_ERROR_MSG + e.getMessage());
134143
}
135144

136-
if (contextData.foiId != null)
145+
if (contextData.foiId != null && contextData.foiId != BigId.NONE)
137146
cmd.withFoi(contextData.foiId);
138147

139-
// also set timestamp
140-
return cmd.build();
148+
// set timestamp in params data if present in schema
149+
var newCmd = cmd.build();
150+
if (timeStampIndexer != null)
151+
{
152+
var issueTimeIdx = timeStampIndexer.getDataIndex(newCmd.getParams());
153+
newCmd.getParams().setDoubleValue(issueTimeIdx, newCmd.getIssueTime().toEpochMilli() / 1000.0);
154+
}
155+
156+
return newCmd;
141157
}
142158

143159

sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/task/CommandResultBindingSweCommon.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.util.Collection;
2121
import org.sensorhub.api.command.CommandResult;
2222
import org.sensorhub.api.command.CommandStatus;
23-
import org.sensorhub.api.command.ICommandResult;
2423
import org.sensorhub.api.command.ICommandStatus;
2524
import org.sensorhub.api.command.ICommandStreamInfo;
2625
import org.sensorhub.api.common.BigId;

0 commit comments

Comments
 (0)