Skip to content

Commit 7cfd545

Browse files
authored
2231 restructure rpc handler (#2310)
* #2231 move default rpc handling logic to RpcHandler * #2231 change DefaultRpcHandler and ViewportTypeAheadRpcHandler to trait. Add DefaultRpcHandlerImpl. Use ViewPortDef.default * #2231 change EditTableRpcHandler to trait * #2231 change EditTableRpcHandler to trait, make EditTableRpcHandler extend RpcHandler instead, make services extend EditTableRpcHandler and DefaultRpcHandler * #2231 remove unused code * #2231 fix * #2231 change CreateSessionTableRpcHandler to trait * #2231 fix java rpc handler * #2231 add java example of rpc handler interface * #2231 rename * #2231 make DefaultRpcHandlerImpl object * #2231 rename * #2231 rename * #2231 remove unused variable * #2231 create a new default rpc handler each time * #2231 refactor
1 parent da5094a commit 7cfd545

46 files changed

Lines changed: 247 additions & 249 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

example/basket/src/main/scala/org/finos/vuu/core/module/basket/BasketModule.scala

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,16 @@ object BasketModule extends DefaultModule {
3838
(table, _) => new BasketProvider(table),
3939
(table, _, _, tableContainer) => ViewPortDef(
4040
columns = table.getTableDef.getColumns,
41-
service = new BasketService(table, omsApi)(clock, tableContainer)
41+
service = new BasketService(table, omsApi, tableContainer)
4242
)
4343
)
4444
.addTable(
4545
TableDef(
4646
name = BasketConstituentTable,
4747
keyField = BC.RicBasketId,
4848
customColumns = Columns.fromNames(BC.RicBasketId.string(), BC.Ric.string(), BC.BasketId.string(),
49-
BC.Weighting.double(), BC.LastTrade.string(), BC.Change.string(),
50-
BC.Volume.string(), BC.Side.string(), BC.Description.string()), // we can join to instruments and other tables to get the rest of the data.....
49+
BC.Weighting.double(), BC.LastTrade.string(), BC.Change.string(),
50+
BC.Volume.string(), BC.Side.string(), BC.Description.string()), // we can join to instruments and other tables to get the rest of the data.....
5151
options = TableDefOptions(
5252
joinFields = List(BC.RicBasketId, BC.Ric)
5353
)
@@ -59,8 +59,8 @@ object BasketModule extends DefaultModule {
5959
name = BasketTradingTable,
6060
keyField = BT.InstanceId,
6161
customColumns = Columns.fromNames(BT.InstanceId.string(), BT.BasketId.string(), BT.BasketName.string(),
62-
BT.Status.string(), BT.Units.int(), BT.FilledPct.double(), BT.FxRateToUsd.double(),
63-
BT.TotalNotional.double(), BT.TotalNotionalUsd.double(), BT.Side.string()
62+
BT.Status.string(), BT.Units.int(), BT.FilledPct.double(), BT.FxRateToUsd.double(),
63+
BT.TotalNotional.double(), BT.TotalNotionalUsd.double(), BT.Side.string()
6464
),
6565
options = TableDefOptions(
6666
joinFields = List(BT.BasketId),
@@ -75,25 +75,25 @@ object BasketModule extends DefaultModule {
7575
(table, vs) => new BasketTradingProvider(table, vs.tableContainer),
7676
(table, _, _, tableContainer) => ViewPortDef(
7777
columns = table.getTableDef.getColumns,
78-
service = new BasketTradingService(table, omsApi)(using tableContainer)
78+
service = new BasketTradingService(table, omsApi, tableContainer)
7979
)
8080
)
8181
.addTable(
8282
TableDef(
8383
name = BasketTradingConstituentTable,
8484
keyField = BTC.InstanceIdRic,
8585
customColumns = Columns.fromNames(BTC.Quantity.long(), BTC.Side.string(),
86-
BTC.InstanceIdRic.string(), BTC.InstanceId.string(), BTC.Ric.string(),
87-
BTC.BasketId.string(), BTC.PriceStrategyId.int(),
88-
BTC.Description.string(),
89-
BTC.NotionalUsd.double(), BTC.NotionalLocal.double(),
90-
BTC.Venue.string(),
91-
BTC.Algo.string(), BTC.AlgoParams.string(),
92-
BTC.PctFilled.double(), BTC.Weighting.double(),
93-
BTC.PriceSpread.int(),
94-
BTC.LimitPrice.double(),
95-
BTC.FilledQty.long(),
96-
BTC.OrderStatus.string()
86+
BTC.InstanceIdRic.string(), BTC.InstanceId.string(), BTC.Ric.string(),
87+
BTC.BasketId.string(), BTC.PriceStrategyId.int(),
88+
BTC.Description.string(),
89+
BTC.NotionalUsd.double(), BTC.NotionalLocal.double(),
90+
BTC.Venue.string(),
91+
BTC.Algo.string(), BTC.AlgoParams.string(),
92+
BTC.PctFilled.double(), BTC.Weighting.double(),
93+
BTC.PriceSpread.int(),
94+
BTC.LimitPrice.double(),
95+
BTC.FilledQty.long(),
96+
BTC.OrderStatus.string()
9797
),
9898
options = TableDefOptions(
9999
joinFields = List(BTC.InstanceIdRic, BTC.Ric),
@@ -108,7 +108,7 @@ object BasketModule extends DefaultModule {
108108
(table, vs) => new BasketTradingConstituentProvider(table, omsApi),
109109
(table, _, _, tableContainer) => ViewPortDef(
110110
columns = table.getTableDef.getColumns,
111-
service = new BasketTradingConstituentService(table)(using tableContainer)
111+
service = new BasketTradingConstituentService
112112
)
113113
)
114114
.addTable(
@@ -153,7 +153,7 @@ object BasketModule extends DefaultModule {
153153
),
154154
(table, _, _, tableContainer) => ViewPortDef(
155155
columns = table.getTableDef.getColumns,
156-
service = new BasketTradingConstituentJoinService(table)(using tableContainer)
156+
service = new BasketTradingConstituentJoinService(table, tableContainer)
157157
)
158158
)
159159
.asModule()
@@ -203,7 +203,7 @@ object BasketModule extends DefaultModule {
203203

204204
object BasketTradingConstituentColumnNames {
205205
final val InstanceIdRic = "instanceIdRic"
206-
final val Side = "side"
206+
final val Side = "side"
207207
final val InstanceId = "instanceId"
208208
final val BasketId = "basketId"
209209
final val Ric = "ric"

example/basket/src/main/scala/org/finos/vuu/core/module/basket/service/BasketService.scala

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
package org.finos.vuu.core.module.basket.service
22

33
import com.typesafe.scalalogging.StrictLogging
4-
import org.finos.toolbox.time.Clock
54
import org.finos.vuu.core.module.basket.BasketConstants.Side
65
import org.finos.vuu.core.module.basket.BasketModule
76
import org.finos.vuu.core.module.basket.BasketModule.BasketConstituentTable
87
import org.finos.vuu.core.module.price.PriceModule
9-
import org.finos.vuu.core.table._
8+
import org.finos.vuu.core.table.*
109
import org.finos.vuu.net.rpc.{DefaultRpcHandler, RpcFunctionResult, RpcFunctionSuccess, RpcParams}
1110
import org.finos.vuu.order.oms.OmsApi
1211

@@ -26,9 +25,9 @@ trait BasketServiceIF {
2625
def createBasket(params: RpcParams): RpcFunctionResult
2726
}
2827

29-
class BasketService(val table: DataTable, val omsApi: OmsApi)(implicit clock: Clock, val tableContainer: TableContainer) extends DefaultRpcHandler with BasketServiceIF with StrictLogging {
28+
class BasketService(table: DataTable, omsApi: OmsApi, tableContainer: TableContainer) extends DefaultRpcHandler with BasketServiceIF with StrictLogging {
3029

31-
import org.finos.vuu.core.module.basket.BasketModule.{BasketConstituentColumnNames => BC, BasketTradingColumnNames => BT, BasketTradingConstituentColumnNames => BTC}
30+
import org.finos.vuu.core.module.basket.BasketModule.{BasketConstituentColumnNames as BC, BasketTradingColumnNames as BT, BasketTradingConstituentColumnNames as BTC}
3231

3332
registerRpc("createBasket", params => createBasket(params))
3433

example/basket/src/main/scala/org/finos/vuu/core/module/basket/service/BasketTradingConstituentJoinService.scala

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,21 @@ import org.finos.vuu.core.module.basket.BasketModule
77
import org.finos.vuu.core.module.basket.BasketModule.{BasketConstituentColumnNames as BCColumnName, BasketTradingColumnNames as BTColumnName, BasketTradingConstituentColumnNames as ColumnName}
88
import org.finos.vuu.core.module.basket.result.ErrorReason
99
import org.finos.vuu.core.table.*
10-
import org.finos.vuu.net.rpc.{EditTableRpcHandler, RpcFunctionFailure, RpcFunctionResult, RpcFunctionSuccess, RpcParams}
10+
import org.finos.vuu.net.rpc.{DefaultRpcHandler, EditTableRpcHandler, RpcFunctionFailure, RpcFunctionResult, RpcFunctionSuccess, RpcParams}
1111
import org.finos.vuu.net.ClientSessionId
1212
import org.finos.vuu.viewport.*
1313

1414
import scala.util.control.NonFatal
1515

16-
17-
trait BasketTradingConstituentJoinServiceIF extends EditTableRpcHandler {
16+
trait BasketTradingConstituentJoinServiceIF {
1817
def setSell(params: RpcParams): RpcFunctionResult
1918

2019
def setBuy(params: RpcParams): RpcFunctionResult
2120

2221
def addConstituent(params: RpcParams): RpcFunctionResult
2322
}
2423

25-
class BasketTradingConstituentJoinService(val table: DataTable)(using tableContainer: TableContainer) extends BasketTradingConstituentJoinServiceIF with StrictLogging {
24+
class BasketTradingConstituentJoinService(table: DataTable, tableContainer: TableContainer) extends BasketTradingConstituentJoinServiceIF with EditTableRpcHandler with DefaultRpcHandler with StrictLogging {
2625
registerRpc("setSell", params => setSell(params))
2726
registerRpc("setBuy", params => setBuy(params))
2827
registerRpc("addConstituent", params => addConstituent(params))

example/basket/src/main/scala/org/finos/vuu/core/module/basket/service/BasketTradingConstituentService.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ package org.finos.vuu.core.module.basket.service
22

33
import com.typesafe.scalalogging.StrictLogging
44
import org.finos.vuu.core.module.basket.BasketModule.BasketTradingConstituentColumnNames.InstanceIdRic
5-
import org.finos.vuu.core.table.{DataTable, RowWithData, TableContainer}
5+
import org.finos.vuu.core.table.RowWithData
66
import org.finos.vuu.net.ClientSessionId
7-
import org.finos.vuu.net.rpc.{EditTableRpcHandler, RpcFunctionResult, RpcFunctionSuccess, RpcParams}
7+
import org.finos.vuu.net.rpc.*
88
import org.finos.vuu.viewport.*
99

10-
class BasketTradingConstituentService(val table: DataTable)(using tableContainer: TableContainer) extends EditTableRpcHandler with StrictLogging {
10+
class BasketTradingConstituentService extends EditTableRpcHandler with DefaultRpcHandler with StrictLogging {
1111
override def editCell(params: RpcParams): RpcFunctionResult = {
1212
val key: String = params.namedParams("key").asInstanceOf[String]
1313
val columnName: String = params.namedParams("column").asInstanceOf[String]

example/basket/src/main/scala/org/finos/vuu/core/module/basket/service/BasketTradingService.scala

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,16 @@ import org.finos.vuu.core.module.basket.BasketConstants.Side
55
import org.finos.vuu.core.module.basket.BasketModule
66
import org.finos.vuu.core.module.basket.BasketModule.BasketTradingConstituentTable
77
import org.finos.vuu.core.table.*
8-
import org.finos.vuu.net.rpc.{EditTableRpcHandler, RpcFunctionResult, RpcFunctionSuccess, RpcParams}
8+
import org.finos.vuu.net.rpc.{DefaultRpcHandler, EditTableRpcHandler, RpcFunctionResult, RpcFunctionSuccess, RpcParams}
99
import org.finos.vuu.order.oms.{CancelOrder, NewOrder, OmsApi}
10-
import org.finos.vuu.viewport.*
1110

12-
trait BasketTradingServiceIF extends EditTableRpcHandler {
11+
trait BasketTradingServiceIF {
1312
def sendToMarket(params: RpcParams): RpcFunctionResult
1413

1514
def takeOffMarket(params: RpcParams): RpcFunctionResult
1615
}
1716

18-
class BasketTradingService(val table: DataTable, val omsApi: OmsApi)(using tableContainer: TableContainer) extends BasketTradingServiceIF with StrictLogging {
17+
class BasketTradingService(table: DataTable, omsApi: OmsApi, tableContainer: TableContainer) extends BasketTradingServiceIF with EditTableRpcHandler with DefaultRpcHandler with StrictLogging {
1918

2019
import org.finos.vuu.core.module.basket.BasketModule.{BasketTradingColumnNames as BT, BasketTradingConstituentColumnNames as BTC}
2120

example/editable/src/main/scala/org/finos/vuu/core/module/editable/EditableModule.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package org.finos.vuu.core.module.editable
22

33
import org.finos.toolbox.lifecycle.LifecycleContainer
44
import org.finos.toolbox.time.Clock
5-
import org.finos.vuu.api.{SessionTableDef, TableDef, TableDefOptions, ViewPortDef, VisualLinks}
5+
import org.finos.vuu.api.{SessionTableDef, TableDef, TableDefOptions, ViewPortDef}
66
import org.finos.vuu.core.module.{DefaultModule, ModuleFactory, TableDefContainer, ViewServerModule}
77
import org.finos.vuu.core.table.Columns
88

@@ -25,7 +25,7 @@ object EditableModule extends DefaultModule {
2525
(table, vs) => new ProcessProvider(table),
2626
(table, _, _, tableContainer) => ViewPortDef(
2727
columns = table.getTableDef.getColumns,
28-
service = new ProcessRpcService()(tableContainer)
28+
service = new ProcessRpcService(tableContainer)
2929
)
3030
).addSessionTable(
3131
SessionTableDef(
@@ -35,7 +35,7 @@ object EditableModule extends DefaultModule {
3535
),
3636
(table, _, _, tableContainer) => ViewPortDef(
3737
columns = table.getTableDef.getColumns,
38-
service = new FixSequenceRpcService()(using tableContainer)
38+
service = new FixSequenceRpcService
3939
)
4040
).asModule()
4141
}

example/editable/src/main/scala/org/finos/vuu/core/module/editable/FixSequenceRpcService.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package org.finos.vuu.core.module.editable
22

3-
import org.finos.vuu.core.table.{RowWithData, TableContainer}
3+
import org.finos.vuu.core.table.RowWithData
44
import org.finos.vuu.net.rpc.*
55

6-
class FixSequenceRpcService()(using tableContainer: TableContainer) extends EditTableRpcHandler {
6+
class FixSequenceRpcService extends EditTableRpcHandler with DefaultRpcHandler {
77

88
override def editCell(params: RpcParams): RpcFunctionResult = {
99
val key: String = params.namedParams("key").asInstanceOf[String]

example/editable/src/main/scala/org/finos/vuu/core/module/editable/ProcessRpcService.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import org.finos.vuu.net.ClientSessionId
55
import org.finos.vuu.net.rpc.DefaultRpcHandler
66
import org.finos.vuu.viewport._
77

8-
class ProcessRpcService(implicit val tableContainer: TableContainer) extends DefaultRpcHandler {
8+
class ProcessRpcService(tableContainer: TableContainer) extends DefaultRpcHandler {
99

1010
private final val FIX_SEQ_RESET_TABLE = "fixSequenceReset"
1111

@@ -25,6 +25,6 @@ class ProcessRpcService(implicit val tableContainer: TableContainer) extends Def
2525
}
2626

2727
override def menuItems(): ViewPortMenu = ViewPortMenu("Admin",
28-
new SelectionViewPortMenuItem("Reset SeqNum", "", this.openEditSeqNum, "OPEN_EDIT_RESET_FIX")
28+
SelectionViewPortMenuItem("Reset SeqNum", "", this.openEditSeqNum, "OPEN_EDIT_RESET_FIX")
2929
)
3030
}

example/editable/src/test/scala/org/finos/vuu/core/module/editable/EditableTestModule.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ package org.finos.vuu.core.module.editable
33
import com.typesafe.scalalogging.StrictLogging
44
import org.finos.toolbox.lifecycle.LifecycleContainer
55
import org.finos.toolbox.time.Clock
6-
import org.finos.vuu.api.{TableDef, TableDefOptions, ViewPortDef, VisualLinks}
6+
import org.finos.vuu.api.{TableDef, TableDefOptions, ViewPortDef}
77
import org.finos.vuu.core.module.ModuleFactory.stringToString
88
import org.finos.vuu.core.module.{ModuleFactory, TableDefContainer, ViewServerModule}
9-
import org.finos.vuu.core.table.{Columns, RowWithData, TableContainer}
9+
import org.finos.vuu.core.table.{Columns, RowWithData}
1010
import org.finos.vuu.net.ClientSessionId
1111
import org.finos.vuu.net.rpc.{EditTableRpcHandler, RpcFunctionResult, RpcFunctionSuccess, RpcParams}
1212
import org.finos.vuu.viewport.ViewPort
1313

14-
class EditTableTestService(val originalData: Map[String, Any])(using tableContainer: TableContainer) extends EditTableRpcHandler with StrictLogging {
14+
class EditTableTestService(val originalData: Map[String, Any]) extends EditTableRpcHandler with StrictLogging {
1515

1616
override def deleteRow(params: RpcParams): RpcFunctionResult = {
1717
val key: String = params.namedParams("key").asInstanceOf[String]
@@ -111,14 +111,14 @@ object EditTableTestModule {
111111
name = "editTestTable",
112112
keyField = "rowId",
113113
customColumns = Columns.fromNames("rowId".string(), "A".string(), "B".double(), "C".int(), "D".boolean()),
114-
options= TableDefOptions(
114+
options = TableDefOptions(
115115
joinFields = List("rowId")
116116
)
117117
),
118118
(table, _) => new NullProvider(),
119119
(table, _, _, tableContainer) => ViewPortDef(
120120
columns = table.getTableDef.getColumns,
121-
service = new EditTableTestService(originalData.asInstanceOf[Map[String, Any]])(using tableContainer)
121+
service = new EditTableTestService(originalData.asInstanceOf[Map[String, Any]])
122122
)
123123
).asModule()
124124

example/main-java/src/main/java/org/finos/vuu/module/JavaExampleModule.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,17 @@
88
import org.finos.vuu.core.module.TableDefContainer;
99
import org.finos.vuu.core.module.ViewServerModule;
1010
import org.finos.vuu.core.table.Columns;
11+
import org.finos.vuu.core.table.DataTable;
1112
import org.finos.vuu.core.table.DefaultColumn;
13+
import org.finos.vuu.net.rpc.RpcHandler;
14+
import org.finos.vuu.person.DeleteRecordRpcHandler;
15+
import org.finos.vuu.person.DeleteRecordRpcHandlerIF;
1216
import org.finos.vuu.person.PersonRpcHandler;
1317
import org.finos.vuu.person.auto.AutoMappedPersonProvider;
1418
import org.finos.vuu.person.auto.EntitySchema;
1519
import org.finos.vuu.person.datasource.PersonStore;
1620
import org.finos.vuu.person.manual.PersonProvider;
21+
import org.finos.vuu.util.RpcHandlerBuilder;
1722
import org.finos.vuu.util.SortSpecBuilder;
1823
import org.finos.vuu.util.TableDefBuilder;
1924

@@ -39,7 +44,7 @@ public ViewServerModule create(final TableDefContainer tableDefContainer, Clock
3944
(table, vs) -> new PersonProvider(table, new PersonStore()),
4045
(table, provider, providerContainer, tableContainer) -> new ViewPortDef(
4146
table.getTableDef().getColumns(),
42-
new PersonRpcHandler(table, tableContainer)
47+
buildRpcHandler(table)
4348
)
4449
)
4550
.addTable(new TableDefBuilder()
@@ -52,4 +57,14 @@ public ViewServerModule create(final TableDefContainer tableDefContainer, Clock
5257
.asModule();
5358
}
5459

60+
private RpcHandler buildRpcHandler(DataTable table) {
61+
PersonRpcHandler personRpcHandler = new PersonRpcHandler(table);
62+
DeleteRecordRpcHandlerIF deleteRecordRpcHandler = new DeleteRecordRpcHandler();
63+
64+
return new RpcHandlerBuilder()
65+
.addRpc("UpdateName", personRpcHandler::processUpdateNameRpcRequest)
66+
.addRpc("GetAccountId", personRpcHandler::processGetAccountIdRpcRequest)
67+
.addRpc("DeleteRecprd", deleteRecordRpcHandler::deleteRecord)
68+
.build();
69+
}
5570
}

0 commit comments

Comments
 (0)