Skip to content

Commit

Permalink
Update JS API to remove last calls to fetchObject
Browse files Browse the repository at this point in the history
  • Loading branch information
niloc132 committed Aug 10, 2023
1 parent addbe97 commit 9fd19d9
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@
import io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.console_pb_service.ConsoleServiceClient;
import io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.hierarchicaltable_pb_service.HierarchicalTableServiceClient;
import io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.inputtable_pb_service.InputTableServiceClient;
import io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.object_pb.FetchObjectRequest;
import io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.object_pb.FetchObjectResponse;
import io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.object_pb_service.ObjectServiceClient;
import io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.partitionedtable_pb_service.PartitionedTableServiceClient;
Expand Down Expand Up @@ -83,6 +82,7 @@
import io.deephaven.web.client.api.state.StateCache;
import io.deephaven.web.client.api.tree.JsTreeTable;
import io.deephaven.web.client.api.widget.JsWidget;
import io.deephaven.web.client.api.widget.JsWidgetExportedObject;
import io.deephaven.web.client.api.widget.plot.JsFigure;
import io.deephaven.web.client.fu.JsItr;
import io.deephaven.web.client.fu.JsLog;
Expand All @@ -94,7 +94,6 @@
import io.deephaven.web.shared.data.RangeSet;
import io.deephaven.web.shared.data.TableSnapshot;
import io.deephaven.web.shared.data.TableSubscriptionRequest;
import io.deephaven.web.shared.fu.JsBiConsumer;
import io.deephaven.web.shared.fu.JsConsumer;
import io.deephaven.web.shared.fu.JsRunnable;
import jsinterop.annotations.JsMethod;
Expand Down Expand Up @@ -882,7 +881,20 @@ public Promise<JsFigure> getFigure(JsVariableDefinition varDef) {
}
return whenServerReady("get a figure")
.then(server -> new JsFigure(this,
c -> fetchObject(varDef, c)).refetch());
c -> {
getWidget(varDef).then(widget -> {
FetchObjectResponse legacyResponse = new FetchObjectResponse();
legacyResponse.setData(widget.getDataAsU8());
legacyResponse.setType(widget.getType());
legacyResponse.setTypedExportIdsList(Arrays.stream(widget.getExportedObjects())
.map(JsWidgetExportedObject::typedTicket).toArray(TypedTicket[]::new));
c.apply(null, legacyResponse);
return null;
}, error -> {
c.apply(error, null);
return null;
});
}).refetch());
}

private TypedTicket createTypedTicket(JsVariableDefinition varDef) {
Expand All @@ -892,16 +904,13 @@ private TypedTicket createTypedTicket(JsVariableDefinition varDef) {
return typedTicket;
}

private void fetchObject(JsVariableDefinition varDef, JsBiConsumer<Object, FetchObjectResponse> c) {
FetchObjectRequest request = new FetchObjectRequest();
TypedTicket typedTicket = createTypedTicket(varDef);
request.setSourceId(typedTicket);
objectServiceClient().fetchObject(request, metadata(), c::apply);
public Promise<JsWidget> getWidget(JsVariableDefinition varDef) {
return getWidget(createTypedTicket(varDef));
}

public Promise<JsWidget> getWidget(JsVariableDefinition varDef) {
public Promise<JsWidget> getWidget(TypedTicket typedTicket) {
return whenServerReady("get a widget")
.then(response -> new JsWidget(this, createTypedTicket(varDef)).refetch());
.then(response -> new JsWidget(this, typedTicket).refetch());
}

public void registerSimpleReconnectable(HasLifecycle figure) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import elemental2.promise.Promise;
import io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.console_pb.FigureDescriptor;
import io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.console_pb.figuredescriptor.AxisDescriptor;
import io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.object_pb.FetchObjectRequest;
import io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.object_pb.FetchObjectResponse;
import io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.table_pb.ExportedTableCreationResponse;
import io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.ticket_pb.TypedTicket;
Expand Down Expand Up @@ -788,21 +787,14 @@ public Promise<FigureTableFetchData> fetch(JsFigure figure, FetchObjectResponse
});
} else if (ticket.getType().equals(JsVariableType.PARTITIONEDTABLE)) {
int partitionedTableIndex = nextPartitionedTableIndex++;
promises[i] = Callbacks.<FetchObjectResponse, Object>grpcUnaryPromise(c -> {
FetchObjectRequest partitionedTableRequest = new FetchObjectRequest();
partitionedTableRequest.setSourceId(ticket);
connection.objectServiceClient().fetchObject(partitionedTableRequest, connection.metadata(),
c::apply);
}).then(object -> {
JsPartitionedTable partitionedTable =
new JsPartitionedTable(connection, new JsWidget(connection, ticket));
// TODO(deephaven-core#3604) if using a new session don't attempt a reconnect, since we might
// have a different figure schema entirely
// partitionedTable.addEventListener(JsPartitionedTable.EVENT_DISCONNECT, ignore ->
// partitionedTable.close());
partitionedTables[partitionedTableIndex] = partitionedTable;
return partitionedTable.refetch();
});
JsPartitionedTable partitionedTable =
new JsPartitionedTable(connection, new JsWidget(connection, ticket));
// TODO(deephaven-core#3604) if using a new session don't attempt a reconnect, since we might
// have a different figure schema entirely
// partitionedTable.addEventListener(JsPartitionedTable.EVENT_DISCONNECT, ignore ->
// partitionedTable.close());
partitionedTables[partitionedTableIndex] = partitionedTable;
promises[i] = partitionedTable.refetch();
} else {
throw new IllegalStateException("Ticket type not recognized in a Figure: " + ticket.getType());
}
Expand Down

0 comments on commit 9fd19d9

Please sign in to comment.