Skip to content

Commit 35afcae

Browse files
committed
upgrade to persistence api v0.6.2
1 parent 6b06d75 commit 35afcae

27 files changed

+433
-207
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package app.softnetwork.resource.api
2+
3+
import akka.actor.typed.ActorSystem
4+
import app.softnetwork.persistence.jdbc.schema.{JdbcSchemaProvider, JdbcSchemaTypes}
5+
import app.softnetwork.persistence.schema.SchemaType
6+
import app.softnetwork.session.CsrfCheckHeader
7+
import app.softnetwork.session.handlers.JwtClaimsRefreshTokenDao
8+
import app.softnetwork.session.model.{SessionDataCompanion, SessionManagers}
9+
import com.softwaremill.session.{RefreshTokenStorage, SessionManager}
10+
import org.slf4j.{Logger, LoggerFactory}
11+
import org.softnetwork.session.model.JwtClaims
12+
13+
object JwtResourceToLocalFileSystemEndpointsPostgresLauncher
14+
extends ResourceToLocalFileSystemEndpointsApi[JwtClaims]
15+
with CsrfCheckHeader
16+
with JdbcSchemaProvider {
17+
lazy val log: Logger = LoggerFactory getLogger getClass.getName
18+
19+
def schemaType: SchemaType = JdbcSchemaTypes.Postgres
20+
21+
override protected def manager: SessionManager[JwtClaims] = SessionManagers.jwt
22+
23+
override implicit def companion: SessionDataCompanion[JwtClaims] = JwtClaims
24+
25+
override protected def refreshTokenStorage: ActorSystem[_] => RefreshTokenStorage[JwtClaims] =
26+
system => JwtClaimsRefreshTokenDao(system)
27+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package app.softnetwork.resource.api
2+
3+
import akka.actor.typed.ActorSystem
4+
import app.softnetwork.persistence.jdbc.schema.{JdbcSchemaProvider, JdbcSchemaTypes}
5+
import app.softnetwork.persistence.schema.SchemaType
6+
import app.softnetwork.session.handlers.JwtClaimsRefreshTokenDao
7+
import app.softnetwork.session.model.{SessionDataCompanion, SessionManagers}
8+
import com.softwaremill.session.{RefreshTokenStorage, SessionManager}
9+
import org.slf4j.{Logger, LoggerFactory}
10+
import org.softnetwork.session.model.JwtClaims
11+
12+
object JwtResourceToLocalFileSystemRoutesPostgresLauncher
13+
extends ResourceToLocalFileSystemRoutesApi[JwtClaims]
14+
with JdbcSchemaProvider {
15+
lazy val log: Logger = LoggerFactory getLogger getClass.getName
16+
17+
def schemaType: SchemaType = JdbcSchemaTypes.Postgres
18+
19+
override protected def manager: SessionManager[JwtClaims] = SessionManagers.jwt
20+
21+
override implicit def companion: SessionDataCompanion[JwtClaims] = JwtClaims
22+
23+
override protected def refreshTokenStorage: ActorSystem[_] => RefreshTokenStorage[JwtClaims] =
24+
system => JwtClaimsRefreshTokenDao(system)
25+
}

api/src/main/scala/app/softnetwork/resource/api/ResourceApi.scala

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,57 @@ import app.softnetwork.resource.message.ResourceEvents.ResourceEvent
1010
import app.softnetwork.resource.message.ResourceMessages.{ResourceCommand, ResourceResult}
1111
import app.softnetwork.resource.model.Resource
1212
import app.softnetwork.resource.persistence.typed.ResourceBehavior
13+
import app.softnetwork.resource.service.LocalFileSystemResourceServiceEndpoints
1314
import app.softnetwork.session.CsrfCheck
1415
import app.softnetwork.session.config.Settings
15-
import app.softnetwork.session.model.SessionManagers
16-
import com.softwaremill.session.{SessionConfig, SessionManager}
16+
import app.softnetwork.session.model.{
17+
SessionData,
18+
SessionDataCompanion,
19+
SessionDataDecorator,
20+
SessionManagers
21+
}
22+
import app.softnetwork.session.service.SessionMaterials
23+
import com.softwaremill.session.{RefreshTokenStorage, SessionConfig, SessionManager}
24+
import org.slf4j.{Logger, LoggerFactory}
1725
import org.softnetwork.session.model.Session
1826

19-
trait ResourceApi extends ResourceApplication[Resource] { _: SchemaProvider with CsrfCheck =>
27+
import scala.concurrent.ExecutionContext
28+
29+
trait ResourceApi[SD <: SessionData with SessionDataDecorator[SD]]
30+
extends ResourceApplication[Resource] { self: SchemaProvider with CsrfCheck =>
2031

2132
override def resourceEntity
2233
: ActorSystem[_] => PersistentEntity[ResourceCommand, Resource, ResourceEvent, ResourceResult] =
2334
_ => ResourceBehavior
2435

25-
def resourceSwagger: ActorSystem[_] => SwaggerEndpoint
36+
implicit def sessionConfig: SessionConfig = Settings.Session.DefaultSessionConfig
37+
38+
implicit def companion: SessionDataCompanion[SD]
39+
40+
protected def manager: SessionManager[SD]
2641

27-
def sessionConfig: SessionConfig = Settings.Session.DefaultSessionConfig
42+
protected def refreshTokenStorage: ActorSystem[_] => RefreshTokenStorage[SD]
2843

2944
override protected def sessionType: Session.SessionType =
3045
Settings.Session.SessionContinuityAndTransport
3146

32-
override protected def manager(implicit sessionConfig: SessionConfig): SessionManager[Session] =
33-
SessionManagers.basic
47+
def resourceSwagger: ActorSystem[_] => SwaggerEndpoint =
48+
sys =>
49+
new LocalFileSystemResourceServiceEndpoints[SD]
50+
with SwaggerEndpoint
51+
with SessionMaterials[SD] {
52+
override implicit def system: ActorSystem[_] = sys
53+
override lazy val ec: ExecutionContext = sys.executionContext
54+
lazy val log: Logger = LoggerFactory getLogger getClass.getName
55+
override protected def sessionType: Session.SessionType = self.sessionType
56+
override implicit def manager(implicit
57+
sessionConfig: SessionConfig,
58+
companion: SessionDataCompanion[SD]
59+
): SessionManager[SD] = self.manager
60+
override implicit def refreshTokenStorage: RefreshTokenStorage[SD] =
61+
self.refreshTokenStorage(sys)
62+
override implicit def companion: SessionDataCompanion[SD] = self.companion
63+
override val applicationVersion: String = systemVersion()
64+
}
3465

3566
}
Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,22 @@
11
package app.softnetwork.resource.api
22

33
import akka.actor.typed.ActorSystem
4-
import app.softnetwork.api.server.SwaggerEndpoint
54
import app.softnetwork.persistence.jdbc.query.{JdbcJournalProvider, JdbcOffsetProvider}
65
import app.softnetwork.persistence.schema.SchemaProvider
76
import app.softnetwork.resource.model.Resource
87
import app.softnetwork.resource.persistence.query.{
98
GenericResourceToExternalProcessorStream,
109
ResourceToLocalFileSystemProcessorStream
1110
}
12-
import app.softnetwork.resource.service.LocalFileSystemResourceServiceEndpoints
1311
import app.softnetwork.session.CsrfCheck
14-
import app.softnetwork.session.config.Settings
15-
import app.softnetwork.session.service.SessionMaterials
16-
import com.softwaremill.session.{SessionConfig, SessionManager}
12+
import app.softnetwork.session.model.{SessionData, SessionDataCompanion, SessionDataDecorator}
1713
import com.typesafe.config.Config
18-
import org.slf4j.{Logger, LoggerFactory}
19-
import org.softnetwork.session.model.Session
2014

21-
import scala.concurrent.ExecutionContext
15+
trait ResourceToLocalFileSystemApi[SD <: SessionData with SessionDataDecorator[SD]]
16+
extends ResourceApi[SD] { self: SchemaProvider with CsrfCheck =>
17+
18+
implicit def companion: SessionDataCompanion[SD]
2219

23-
trait ResourceToLocalFileSystemApi extends ResourceApi { self: SchemaProvider with CsrfCheck =>
2420
override def resourceToExternalProcessorStream
2521
: ActorSystem[_] => GenericResourceToExternalProcessorStream[Resource] =
2622
sys =>
@@ -30,19 +26,4 @@ trait ResourceToLocalFileSystemApi extends ResourceApi { self: SchemaProvider wi
3026
override implicit def system: ActorSystem[_] = sys
3127
override def config: Config = ResourceToLocalFileSystemApi.this.config
3228
}
33-
34-
def resourceSwagger: ActorSystem[_] => SwaggerEndpoint =
35-
sys =>
36-
new LocalFileSystemResourceServiceEndpoints with SwaggerEndpoint with SessionMaterials {
37-
override implicit def system: ActorSystem[_] = sys
38-
override lazy val ec: ExecutionContext = sys.executionContext
39-
lazy val log: Logger = LoggerFactory getLogger getClass.getName
40-
override implicit def sessionConfig: SessionConfig = self.sessionConfig
41-
override protected def sessionType: Session.SessionType = self.sessionType
42-
override implicit def manager(implicit
43-
sessionConfig: SessionConfig
44-
): SessionManager[Session] = self.manager
45-
override val applicationVersion: String = systemVersion()
46-
}
47-
4829
}

api/src/main/scala/app/softnetwork/resource/api/ResourceToLocalFileSystemEndpointsApi.scala

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,33 @@ import app.softnetwork.resource.service.{
1010
ResourceServiceEndpoints
1111
}
1212
import app.softnetwork.session.CsrfCheck
13+
import app.softnetwork.session.model.{SessionData, SessionDataCompanion, SessionDataDecorator}
1314
import app.softnetwork.session.service.SessionMaterials
14-
import com.softwaremill.session.{SessionConfig, SessionManager}
15+
import com.softwaremill.session.{RefreshTokenStorage, SessionConfig, SessionManager}
1516
import org.slf4j.{Logger, LoggerFactory}
1617
import org.softnetwork.session.model.Session
1718

1819
import scala.concurrent.ExecutionContext
1920

20-
trait ResourceToLocalFileSystemEndpointsApi
21-
extends ResourceToLocalFileSystemApi
22-
with ResourceEndpoints[Resource] { self: SchemaProvider with CsrfCheck =>
21+
trait ResourceToLocalFileSystemEndpointsApi[SD <: SessionData with SessionDataDecorator[SD]]
22+
extends ResourceToLocalFileSystemApi[SD]
23+
with ResourceEndpoints[SD, Resource] {
24+
self: SchemaProvider with CsrfCheck =>
2325

24-
override def resourceEndpoints: ActorSystem[_] => ResourceServiceEndpoints =
26+
override def resourceEndpoints: ActorSystem[_] => ResourceServiceEndpoints[SD] =
2527
sys =>
26-
new LocalFileSystemResourceServiceEndpoints with SessionMaterials {
27-
override implicit def manager(implicit
28-
sessionConfig: SessionConfig
29-
): SessionManager[Session] = self.manager
30-
override protected def sessionType: Session.SessionType = self.sessionType
31-
override def log: Logger = LoggerFactory getLogger getClass.getName
28+
new LocalFileSystemResourceServiceEndpoints[SD] with SessionMaterials[SD] {
3229
override implicit def system: ActorSystem[_] = sys
33-
override implicit lazy val ec: ExecutionContext = sys.executionContext
34-
override implicit def sessionConfig: SessionConfig = self.sessionConfig
30+
override lazy val ec: ExecutionContext = sys.executionContext
31+
lazy val log: Logger = LoggerFactory getLogger getClass.getName
32+
override protected def sessionType: Session.SessionType = self.sessionType
33+
override implicit def manager(implicit
34+
sessionConfig: SessionConfig,
35+
companion: SessionDataCompanion[SD]
36+
): SessionManager[SD] = self.manager
37+
override implicit def refreshTokenStorage: RefreshTokenStorage[SD] =
38+
self.refreshTokenStorage(sys)
39+
override implicit def companion: SessionDataCompanion[SD] = self.companion
3540
}
3641

3742
override def endpoints: ActorSystem[_] => List[Endpoint] = system =>
Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,27 @@
11
package app.softnetwork.resource.api
22

3+
import akka.actor.typed.ActorSystem
34
import app.softnetwork.persistence.jdbc.schema.{JdbcSchemaProvider, JdbcSchemaTypes}
45
import app.softnetwork.persistence.schema.SchemaType
56
import app.softnetwork.session.CsrfCheckHeader
7+
import app.softnetwork.session.handlers.SessionRefreshTokenDao
8+
import app.softnetwork.session.model.{SessionDataCompanion, SessionManagers}
9+
import com.softwaremill.session.{RefreshTokenStorage, SessionManager}
610
import org.slf4j.{Logger, LoggerFactory}
11+
import org.softnetwork.session.model.Session
712

813
object ResourceToLocalFileSystemEndpointsPostgresLauncher
9-
extends ResourceToLocalFileSystemEndpointsApi
14+
extends ResourceToLocalFileSystemEndpointsApi[Session]
1015
with CsrfCheckHeader
1116
with JdbcSchemaProvider {
1217
lazy val log: Logger = LoggerFactory getLogger getClass.getName
1318

1419
def schemaType: SchemaType = JdbcSchemaTypes.Postgres
1520

21+
override protected def manager: SessionManager[Session] = SessionManagers.basic
22+
23+
override implicit def companion: SessionDataCompanion[Session] = Session
24+
25+
override protected def refreshTokenStorage: ActorSystem[_] => RefreshTokenStorage[Session] =
26+
system => SessionRefreshTokenDao(system)
1627
}

api/src/main/scala/app/softnetwork/resource/api/ResourceToLocalFileSystemRoutesApi.scala

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,34 @@ import app.softnetwork.resource.launch.ResourceRoutes
77
import app.softnetwork.resource.model.Resource
88
import app.softnetwork.resource.service.{LocalFileSystemResourceService, ResourceService}
99
import app.softnetwork.session.CsrfCheckHeader
10+
import app.softnetwork.session.model.{SessionData, SessionDataCompanion, SessionDataDecorator}
1011
import app.softnetwork.session.service.SessionMaterials
11-
import com.softwaremill.session.{SessionConfig, SessionManager}
12+
import com.softwaremill.session.{RefreshTokenStorage, SessionConfig, SessionManager}
1213
import org.slf4j.{Logger, LoggerFactory}
1314
import org.softnetwork.session.model.Session
1415

1516
import scala.concurrent.ExecutionContext
1617

17-
trait ResourceToLocalFileSystemRoutesApi
18-
extends ResourceToLocalFileSystemApi
19-
with ResourceRoutes[Resource]
18+
trait ResourceToLocalFileSystemRoutesApi[SD <: SessionData with SessionDataDecorator[SD]]
19+
extends ResourceToLocalFileSystemApi[SD]
20+
with ResourceRoutes[SD, Resource]
2021
with CsrfCheckHeader { self: SchemaProvider =>
2122

22-
override def resourceService: ActorSystem[_] => ResourceService =
23+
override def resourceService: ActorSystem[_] => ResourceService[SD] =
2324
sys =>
24-
new LocalFileSystemResourceService with SessionMaterials {
25+
new LocalFileSystemResourceService[SD] with SessionMaterials[SD] {
2526
override implicit def manager(implicit
26-
sessionConfig: SessionConfig
27-
): SessionManager[Session] = self.manager
27+
sessionConfig: SessionConfig,
28+
companion: SessionDataCompanion[SD]
29+
): SessionManager[SD] = self.manager
2830
override protected def sessionType: Session.SessionType = self.sessionType
2931
override def log: Logger = LoggerFactory getLogger getClass.getName
30-
override implicit def system: ActorSystem[_] = sys
31-
override implicit lazy val ec: ExecutionContext = sys.executionContext
3232
override implicit def sessionConfig: SessionConfig = self.sessionConfig
33+
override implicit def system: ActorSystem[_] = sys
34+
override lazy val ec: ExecutionContext = sys.executionContext
35+
override implicit def refreshTokenStorage: RefreshTokenStorage[SD] =
36+
self.refreshTokenStorage(sys)
37+
override implicit def companion: SessionDataCompanion[SD] = self.companion
3338
}
3439

3540
override def apiRoutes: ActorSystem[_] => List[ApiRoute] = system =>
Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
11
package app.softnetwork.resource.api
22

3+
import akka.actor.typed.ActorSystem
34
import app.softnetwork.persistence.jdbc.schema.{JdbcSchemaProvider, JdbcSchemaTypes}
45
import app.softnetwork.persistence.schema.SchemaType
6+
import app.softnetwork.session.handlers.SessionRefreshTokenDao
7+
import app.softnetwork.session.model.{SessionDataCompanion, SessionManagers}
8+
import com.softwaremill.session.{RefreshTokenStorage, SessionManager}
59
import org.slf4j.{Logger, LoggerFactory}
10+
import org.softnetwork.session.model.Session
611

712
object ResourceToLocalFileSystemRoutesPostgresLauncher
8-
extends ResourceToLocalFileSystemRoutesApi
13+
extends ResourceToLocalFileSystemRoutesApi[Session]
914
with JdbcSchemaProvider {
1015
lazy val log: Logger = LoggerFactory getLogger getClass.getName
1116

1217
def schemaType: SchemaType = JdbcSchemaTypes.Postgres
1318

19+
override protected def manager: SessionManager[Session] = SessionManagers.basic
20+
21+
override implicit def companion: SessionDataCompanion[Session] = Session
22+
23+
override protected def refreshTokenStorage: ActorSystem[_] => RefreshTokenStorage[Session] =
24+
system => SessionRefreshTokenDao(system)
1425
}

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ ThisBuild / organization := "app.softnetwork"
22

33
name := "resource"
44

5-
ThisBuild / version := "0.4.1"
5+
ThisBuild / version := "0.5.0"
66

77
ThisBuild / scalaVersion := "2.12.18"
88

core/src/main/scala/app/softnetwork/resource/launch/ResourceEndpoints.scala

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,15 @@ import app.softnetwork.persistence.schema.SchemaProvider
66
import app.softnetwork.resource.model.GenericResource
77
import app.softnetwork.resource.service.ResourceServiceEndpoints
88
import app.softnetwork.session.CsrfCheck
9+
import app.softnetwork.session.model.{SessionData, SessionDataDecorator}
910

10-
trait ResourceEndpoints[Resource <: GenericResource] extends ApiEndpoints {
11+
trait ResourceEndpoints[SD <: SessionData with SessionDataDecorator[
12+
SD
13+
], Resource <: GenericResource]
14+
extends ApiEndpoints {
1115
_: ResourceGuardian[Resource] with SchemaProvider with CsrfCheck =>
1216

13-
def resourceEndpoints: ActorSystem[_] => ResourceServiceEndpoints
17+
def resourceEndpoints: ActorSystem[_] => ResourceServiceEndpoints[SD]
1418

1519
override def endpoints: ActorSystem[_] => List[Endpoint] =
1620
system =>

0 commit comments

Comments
 (0)