play.api.Mode Scala Examples
The following examples show how to use play.api.Mode.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
Example 1
Source File: ServerInterpreterTest.scala From endpoints4s with MIT License | 5 votes |
package endpoints4s.play.server import java.net.ServerSocket import akka.stream.scaladsl.Source import endpoints4s.{Invalid, Valid} import endpoints4s.algebra.server.{ BasicAuthenticationTestSuite, DecodedUrl, EndpointsTestSuite, ChunkedJsonEntitiesTestSuite, SumTypedEntitiesTestSuite, TextEntitiesTestSuite } import play.api.Mode import play.api.routing.Router import play.api.test.FakeRequest import play.core.server.{DefaultNettyServerComponents, NettyServer, ServerConfig} import scala.concurrent.Future class ServerInterpreterTest extends EndpointsTestSuite[EndpointsTestApi] with BasicAuthenticationTestSuite[EndpointsTestApi] with ChunkedJsonEntitiesTestSuite[EndpointsTestApi] with SumTypedEntitiesTestSuite[EndpointsTestApi] with TextEntitiesTestSuite[EndpointsTestApi] { val serverApi: EndpointsTestApi = { object NettyServerComponents extends DefaultNettyServerComponents { override lazy val serverConfig = ServerConfig(mode = Mode.Test) lazy val router = Router.empty } new EndpointsTestApi( PlayComponents.fromBuiltInComponents(NettyServerComponents), Map.empty ) } def serveEndpoint[Resp]( endpoint: serverApi.Endpoint[_, Resp], response: => Resp )(runTests: Int => Unit): Unit = serveRoutes( serverApi.routesFromEndpoints(endpoint.implementedBy(_ => response)) )(runTests) def serveIdentityEndpoint[Resp]( endpoint: serverApi.Endpoint[Resp, Resp] )(runTests: Int => Unit): Unit = serveRoutes( serverApi.routesFromEndpoints(endpoint.implementedBy(request => request)) )(runTests) def serveStreamedEndpoint[Resp]( endpoint: serverApi.Endpoint[_, serverApi.Chunks[Resp]], response: Source[Resp, _] )(runTests: Int => Unit): Unit = serveRoutes( serverApi.routesFromEndpoints(endpoint.implementedBy(_ => response)) )(runTests) def serveStreamedEndpoint[Req, Resp]( endpoint: serverApi.Endpoint[serverApi.Chunks[Req], Resp], logic: Source[Req, _] => Future[Resp] )( runTests: Int => Unit ): Unit = serveRoutes( serverApi.routesFromEndpoints(endpoint.implementedByAsync(logic)) )(runTests) def serveRoutes(routes: Router.Routes)(runTests: Int => Unit): Unit = { val port = { val socket = new ServerSocket(0) try socket.getLocalPort finally if (socket != null) socket.close() } val config = ServerConfig(mode = Mode.Test, port = Some(port)) val server = NettyServer.fromRouterWithComponents(config)(_ => routes) try { runTests(port) } finally { server.stop() } } def decodeUrl[A](url: serverApi.Url[A])(rawValue: String): DecodedUrl[A] = { val request = FakeRequest("GET", rawValue) url.decodeUrl(request) match { case None => DecodedUrl.NotMatched case Some(Invalid(errors)) => DecodedUrl.Malformed(errors) case Some(Valid(a)) => DecodedUrl.Matched(a) } } }
Example 2
package env import akka.actor.ActorSystem import com.codahale.metrics.MetricRegistry import controllers.AssetsFinder import libs.logs.IzanamiLogger import play.api.libs.ws.WSClient import play.api.{Environment, Mode} import cats._ import cats.implicits._ import scala.util.Random object ModeEq { implicit val eqMode: Eq[Mode] = Eq.fromUniversalEquals } case class Env( izanamiConfig: IzanamiConfig, environment: Environment, // actorSystem: ActorSystem, assetsFinder: AssetsFinder ) { import ModeEq._ val env: Mode = IzanamiConfig.mode(izanamiConfig, environment.mode) def isPlayDevMode = environment.mode === Mode.Dev IzanamiLogger.info(s"Starting izanami with $env mode") // val sharedKey: String = izanamiConfig.claim.sharedKey def hash = Random.nextInt(100000) def getFile(path: String) = environment.getFile(path) val cookieName: String = Option(izanamiConfig.filter) .collect { case Default(config) => config.cookieClaim } .getOrElse("Izanami") val contextPath: String = if (izanamiConfig.contextPath.endsWith("/")) { izanamiConfig.contextPath.dropRight(1) } else { izanamiConfig.contextPath } val baseURL: String = if (izanamiConfig.baseURL.endsWith("/")) { izanamiConfig.baseURL.dropRight(1) } else { izanamiConfig.baseURL } }
Example 3
Source File: PlayServerTests.scala From tapir with Apache License 2.0 | 5 votes |
package sttp.tapir.server.play import akka.actor.ActorSystem import cats.data.NonEmptyList import cats.effect.{IO, Resource} import play.api.Mode import play.api.mvc.{Handler, RequestHeader} import play.api.routing.Router import play.api.routing.Router.Routes import play.core.server.{DefaultAkkaHttpServerComponents, ServerConfig} import sttp.tapir.Endpoint import sttp.tapir.server.tests.ServerTests import sttp.tapir.server.{DecodeFailureHandler, ServerDefaults, ServerEndpoint} import sttp.tapir.tests.{Port, PortCounter} import scala.concurrent.duration._ import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.{Await, Future} import scala.reflect.ClassTag class PlayServerTests extends ServerTests[Future, Nothing, Router.Routes] { override def multipleValueHeaderSupport: Boolean = false override def multipartInlineHeaderSupport: Boolean = false override def streamingSupport: Boolean = false private implicit val actorSystem: ActorSystem = ActorSystem() override protected def afterAll(): Unit = { Await.result(actorSystem.terminate(), 5.seconds) super.afterAll() } override def pureResult[T](t: T): Future[T] = Future.successful(t) override def suspendResult[T](t: => T): Future[T] = Future(t) override def route[I, E, O]( e: ServerEndpoint[I, E, O, Nothing, Future], decodeFailureHandler: Option[DecodeFailureHandler] ): Routes = { implicit val serverOptions: PlayServerOptions = PlayServerOptions.default.copy(decodeFailureHandler = decodeFailureHandler.getOrElse(ServerDefaults.decodeFailureHandler)) e.toRoute } override def routeRecoverErrors[I, E <: Throwable, O](e: Endpoint[I, E, O, Nothing], fn: I => Future[O])(implicit eClassTag: ClassTag[E] ): Routes = { e.toRouteRecoverErrors(fn) } override def server(routes: NonEmptyList[Routes], port: Port): Resource[IO, Unit] = { val components = new DefaultAkkaHttpServerComponents { override lazy val serverConfig: ServerConfig = ServerConfig(port = Some(port), address = "127.0.0.1", mode = Mode.Test) override def router: Router = Router.from( routes.reduce((a: Routes, b: Routes) => { val handler: PartialFunction[RequestHeader, Handler] = { case request => a.applyOrElse(request, b) } handler }) ) } val bind = IO { components.server } Resource.make(bind)(s => IO(s.stop())).map(_ => ()) } override val portCounter: PortCounter = new PortCounter(38000) }
Example 4
Source File: ExampleApp.scala From caliban with Apache License 2.0 | 5 votes |
package caliban.play import caliban.{ ExampleApi, ExampleService, PlayRouter } import caliban.ExampleData.sampleCharacters import caliban.ExampleService.ExampleService import play.api.Mode import play.api.mvc.DefaultControllerComponents import play.core.server.{ AkkaHttpServer, ServerConfig } import zio.clock.Clock import zio.console.Console import zio.internal.Platform import zio.Runtime import scala.io.StdIn.readLine object ExampleApp extends App { implicit val runtime: Runtime[ExampleService with Console with Clock] = Runtime.unsafeFromLayer(ExampleService.make(sampleCharacters) ++ Console.live ++ Clock.live, Platform.default) val interpreter = runtime.unsafeRun(ExampleApi.api.interpreter) val server = AkkaHttpServer.fromRouterWithComponents( ServerConfig( mode = Mode.Dev, port = Some(8088), address = "127.0.0.1" ) ) { components => PlayRouter( interpreter, DefaultControllerComponents( components.defaultActionBuilder, components.playBodyParsers, components.messagesApi, components.langs, components.fileMimeTypes, components.executionContext ) )(runtime, components.materializer).routes } println("Server online at http://localhost:8088/\nPress RETURN to stop...") readLine() server.stop() }
Example 5
Source File: Filters.scala From theGardener with Apache License 2.0 | 5 votes |
package filters import akka.stream.Materializer import javax.inject.Inject import play.api.http.HttpFilters import play.api.mvc.{EssentialFilter, RequestHeader, Result} import play.api.{Environment, Mode} import play.filters.cors.CORSFilter import play.filters.gzip.GzipFilter class Filters @Inject()(environment: Environment, corsFilter: CORSFilter)(implicit mat: Materializer) extends HttpFilters { private def shouldGzip = (requestHeader: RequestHeader, response: Result) => { val responseIsJavascript = response.body.contentType.exists(_.startsWith("application/javascript")) val requestPathShouldBeGzipped = requestHeader.path.contains("/api/") responseIsJavascript || requestPathShouldBeGzipped } private val gzipFilter = new GzipFilter(shouldGzip = shouldGzip) override val filters: Seq[EssentialFilter] = environment.mode match { case Mode.Dev => // CORSFilter only for DEV mode: allow Angular app to call API on different port Seq(gzipFilter, corsFilter) case _ => Seq(gzipFilter) } }
Example 6
Source File: FrontEndLoader.scala From lagom-scala-chirper with Apache License 2.0 | 5 votes |
import com.lightbend.lagom.scaladsl.api.{ServiceAcl, ServiceInfo} import com.lightbend.lagom.scaladsl.client.LagomServiceClientComponents import com.lightbend.lagom.scaladsl.devmode.LagomDevModeComponents import com.lightbend.lagom.scaladsl.dns.DnsServiceLocatorComponents import com.softwaremill.macwire._ import play.api.ApplicationLoader._ import play.api.i18n.I18nComponents import play.api.libs.ws.ahc.AhcWSComponents import play.api.{Application, ApplicationLoader, BuiltInComponentsFromContext, Mode} import router.Routes import scala.concurrent.ExecutionContext class FrontEndLoader extends ApplicationLoader { override def load(context: Context): Application = context.environment.mode match { case Mode.Dev => (new FrontEndModule(context) with LagomDevModeComponents).application case _ => (new FrontEndModule(context) with DnsServiceLocatorComponents).application } } abstract class FrontEndModule(context: Context) extends BuiltInComponentsFromContext(context) with I18nComponents with AhcWSComponents with LagomServiceClientComponents { override lazy val serviceInfo = ServiceInfo( "front-end", Map("front-end" -> List(ServiceAcl.forPathRegex("(?!/api/).*"))) ) override implicit lazy val executionContext: ExecutionContext = actorSystem.dispatcher override lazy val router = { wire[Routes] } }
Example 7
Source File: PlayJavaModuleSpec.scala From play-grpc with Apache License 2.0 | 5 votes |
package play.grpc import java.io.File import example.myapp.helloworld.grpc.GreeterServiceClient import example.myapp.helloworld.grpc.GreeterServiceClientProvider import play.api.inject.ProviderConstructionTarget import play.api.Configuration import play.api.Environment import play.api.Mode import org.scalatest.matchers.should.Matchers import org.scalatest.wordspec.AnyWordSpec class PlayJavaModuleSpec extends AnyWordSpec with Matchers { "The generated module" should { "provide all clients" in { // module in longest common package for the two services val module = new example.myapp.helloworld.grpc.AkkaGrpcClientModule() val bindings = module.bindings(Environment(new File("./"), getClass.getClassLoader, Mode.Prod), Configuration.empty) // both clients should be in there bindings should have size (1) bindings.map(_.key.clazz).toSet should ===(Set(classOf[GreeterServiceClient])) // not super useful assertions but let's keep for good measure bindings.map(_.target.get.asInstanceOf[ProviderConstructionTarget[_]].provider).toSet should ===( Set(classOf[GreeterServiceClientProvider]), ) } } }
Example 8
Source File: PlayScalaModuleSpec.scala From play-grpc with Apache License 2.0 | 5 votes |
package play.grpc import java.io.File import example.myapp.helloworld.grpc.helloworld.GreeterServiceClient import example.myapp.helloworld.grpc.helloworld.GreeterServiceClientProvider import play.api.inject.ProviderConstructionTarget import play.api.Configuration import play.api.Environment import play.api.Mode import org.scalatest.matchers.should.Matchers import org.scalatest.wordspec.AnyWordSpec class PlayScalaModuleSpec extends AnyWordSpec with Matchers { "The generated module" should { "provide all clients" in { // module in longest common package for the two services val module = new example.myapp.helloworld.grpc.helloworld.AkkaGrpcClientModule() val bindings = module.bindings(Environment(new File("./"), getClass.getClassLoader, Mode.Prod), Configuration.empty) // both clients should be in there bindings should have size (1) bindings.map(_.key.clazz).toSet should ===(Set(classOf[GreeterServiceClient])) // not super useful assertions but let's keep for good measure bindings.map(_.target.get.asInstanceOf[ProviderConstructionTarget[_]].provider).toSet should ===( Set(classOf[GreeterServiceClientProvider]), ) } } }
Example 9
Source File: OnlyHttpsFilter.scala From get-you-a-license with BSD 3-Clause "New" or "Revised" License | 5 votes |
package filters import akka.stream.Materializer import play.api.{Environment, Mode} import play.api.http.HeaderNames import play.api.mvc.{Filter, RequestHeader, Result, Results} import scala.concurrent.{ExecutionContext, Future} class OnlyHttpsFilter(environment: Environment)(implicit val mat: Materializer, ec: ExecutionContext) extends Filter { def apply(nextFilter: (RequestHeader) => Future[Result])(requestHeader: RequestHeader): Future[Result] = { nextFilter(requestHeader).map { result => if (requestHeader.secure || environment.mode == Mode.Dev) { result } else { Results.MovedPermanently("https://" + requestHeader.host + requestHeader.uri) } } } }
Example 10
Source File: KubeServiceLocatorServer.scala From lagom-on-kube with Apache License 2.0 | 5 votes |
package me.alexray.lagom.kube.discovery import java.io.Closeable import java.net.URI import java.util.{Map => JMap} import com.lightbend.lagom.gateway.{ServiceGateway, ServiceGatewayConfig, ServiceGatewayFactory} import me.alexray.lagom.kube.discovery.impl.KubeServiceRegistryModule import me.alexray.lagom.kube.gateway.{KubeServiceGateway, KubeServiceGatewayConfig, KubeServiceGatewayFactory} import play.api.Application import play.api.Logger import play.api.Mode import play.api.Play import play.api.inject.guice.GuiceApplicationBuilder import play.api.inject.guice.GuiceableModule.fromGuiceModule import play.core.server.ServerConfig import play.core.server.ServerProvider import play.core.server.ServerWithStop import scala.util.control.NonFatal class KubeServiceLocatorServer extends Closeable { private val logger: Logger = Logger(this.getClass) @volatile private var server: ServerWithStop = _ @volatile private var gateway: KubeServiceGateway = _ def start(serviceLocatorPort: Int, serviceGatewayPort: Int, unmanagedServices: JMap[String, String]): Unit = synchronized { require(server == null, "Service locator is already running on " + server.mainAddress) val application = createApplication(KubeServiceGatewayConfig(serviceGatewayPort), unmanagedServices) Play.start(application) try { server = createServer(application, serviceLocatorPort) } catch { case NonFatal(e) => throw new RuntimeException(s"Unable to start service locator on port $serviceLocatorPort", e) } try { gateway = application.injector.instanceOf[KubeServiceGatewayFactory].start() } catch { case NonFatal(e) => throw new RuntimeException(s"Unable to start service gateway on port $serviceGatewayPort", e) } logger.info("Service locator can be reached at " + serviceLocatorAddress) logger.info("Service gateway can be reached at " + serviceGatewayAddress) } private def createApplication(serviceGatewayConfig: KubeServiceGatewayConfig, unmanagedServices: JMap[String, String]): Application = { new GuiceApplicationBuilder() .overrides(KubeServiceRegistryModule(serviceGatewayConfig, unmanagedServices)) .build() } private def createServer(application: Application, port: Int): ServerWithStop = { val config = ServerConfig(port = Some(port), mode = Mode.Test) val provider = implicitly[ServerProvider] provider.createServer(config, application) } override def close(): Unit = synchronized { if (server == null) Logger.logger.debug("Service locator was already stopped") else { logger.debug("Stopping service locator...") server.stop() server = null logger.info("Service locator stopped") } } def serviceLocatorAddress: URI = { // Converting InetSocketAddress into URL is not that simple. // Because we know the service locator is running locally, I'm hardcoding the hostname and protocol. new URI(s"http://localhost:${server.mainAddress.getPort}") } def serviceGatewayAddress: URI = { new URI(s"http://localhost:${gateway.address.getPort}") } }
Example 11
Source File: AuthConfigImpl.scala From cluster-broccoli with Apache License 2.0 | 5 votes |
package de.frosner.broccoli.controllers import com.mohiva.play.silhouette.api.LoginInfo import com.mohiva.play.silhouette.impl.providers.CredentialsProvider import de.frosner.broccoli.auth.{Account, Role} import de.frosner.broccoli.services.SecurityService import jp.t2v.lab.play2.auth._ import play.api.{Environment, Mode} import play.api.cache.CacheApi import play.api.libs.json.JsString import play.api.mvc.{RequestHeader, Result, Results} import scala.concurrent.{ExecutionContext, Future} import scala.reflect.ClassTag trait AuthConfigImpl extends AuthConfig { val securityService: SecurityService val playEnv: Environment val cacheApi: CacheApi type Id = String type User = Account type Authority = Role val idTag: ClassTag[Id] = scala.reflect.classTag[Id] val sessionTimeoutInSeconds = securityService.sessionTimeoutInSeconds val cookieSecure = securityService.cookieSecure override lazy val idContainer: AsyncIdContainer[Id] = securityService.allowMultiLogin match { case true => AsyncIdContainer(new MultiLoginCacheIdContainer[Id](cacheApi)) case false => AsyncIdContainer(new CacheIdContainer[Id]) } def resolveUser(id: Id)(implicit ctx: ExecutionContext): Future[Option[User]] = securityService.identityService.retrieve(LoginInfo(CredentialsProvider.ID, id)) def loginSucceeded(request: RequestHeader)(implicit ctx: ExecutionContext): Future[Result] = Future.successful(Results.Ok(JsString("Login successful!"))) // the content is not used anyway as the controller replaces it def logoutSucceeded(request: RequestHeader)(implicit ctx: ExecutionContext): Future[Result] = Future.successful(Results.Ok(JsString("Logout successful!"))) def authenticationFailed(request: RequestHeader)(implicit ctx: ExecutionContext): Future[Result] = Future.successful(Results.Forbidden("Authentication failed.")) override def authorizationFailed(request: RequestHeader, user: User, authority: Option[Authority])( implicit context: ExecutionContext): Future[Result] = Future.successful(Results.Forbidden( s"Authorization failed: Your privileges (${user.role}) are not matching the required (${authority.getOrElse("None")}).")) def authorize(user: User, authority: Authority)(implicit ctx: ExecutionContext): Future[Boolean] = Future.successful { user.role match { case Role.Administrator => true case Role.Operator => authority == Role.Operator || authority == Role.User case Role.User => authority == Role.User } } override lazy val tokenAccessor = new CookieTokenAccessor( cookieName = AuthConfigImpl.CookieName, cookieSecureOption = playEnv.mode == Mode.Prod && cookieSecure, cookieHttpOnlyOption = true, cookieDomainOption = None, cookiePathOption = "/", cookieMaxAge = Some(sessionTimeoutInSeconds) ) } object AuthConfigImpl { val CookieName = "BROCCOLI_SESS_ID" }
Example 12
Source File: CouchbaseClusteredPersistentEntitySpec.scala From akka-persistence-couchbase with Apache License 2.0 | 5 votes |
package com.lightbend.lagom.scaladsl.persistence.couchbase import java.io.File import akka.actor.{ActorSystem, CoordinatedShutdown} import akka.persistence.couchbase.CouchbaseClusterConnection import akka.stream.{ActorMaterializer, Materializer} import com.lightbend.lagom.internal.persistence.couchbase.TestConfig import com.lightbend.lagom.internal.persistence.testkit.AwaitPersistenceInit.awaitPersistenceInit import com.lightbend.lagom.scaladsl.api.ServiceLocator import com.lightbend.lagom.scaladsl.api.ServiceLocator.NoServiceLocator import com.lightbend.lagom.scaladsl.persistence.multinode.{ AbstractClusteredPersistentEntityConfig, AbstractClusteredPersistentEntitySpec } import com.lightbend.lagom.scaladsl.persistence.{ReadSideProcessor, TestEntity} import com.lightbend.lagom.scaladsl.playjson.JsonSerializerRegistry import com.typesafe.config.Config import play.api.{Configuration, Environment, Mode} import play.api.inject.DefaultApplicationLifecycle import scala.concurrent.{ExecutionContext, Future} object CouchbaseClusteredPersistentEntityConfig extends AbstractClusteredPersistentEntityConfig { override def additionalCommonConfig(databasePort: Int): Config = TestConfig.persistenceConfig } class CouchbaseClusteredPersistentEntitySpecMultiJvmNode1 extends CouchbaseClusteredPersistentEntitySpec class CouchbaseClusteredPersistentEntitySpecMultiJvmNode2 extends CouchbaseClusteredPersistentEntitySpec class CouchbaseClusteredPersistentEntitySpecMultiJvmNode3 extends CouchbaseClusteredPersistentEntitySpec class CouchbaseClusteredPersistentEntitySpec extends AbstractClusteredPersistentEntitySpec(CouchbaseClusteredPersistentEntityConfig) { import com.lightbend.lagom.scaladsl.persistence.couchbase.CouchbaseClusteredPersistentEntityConfig._ override protected def atStartup(): Unit = { runOn(node1) { CouchbaseClusterConnection.connect().cleanUp().close() awaitPersistenceInit(system) } enterBarrier("couchbase-started") super.atStartup() } lazy val defaultApplicationLifecycle = new DefaultApplicationLifecycle override lazy val components: CouchbasePersistenceComponents = new CouchbasePersistenceComponents { override def actorSystem: ActorSystem = system override def executionContext: ExecutionContext = system.dispatcher override def materializer: Materializer = ActorMaterializer()(system) override def configuration: Configuration = Configuration(system.settings.config) override def serviceLocator: ServiceLocator = NoServiceLocator override def environment: Environment = Environment(new File("."), getClass.getClassLoader, Mode.Test) override def jsonSerializerRegistry: JsonSerializerRegistry = ??? override def coordinatedShutdown: CoordinatedShutdown = CoordinatedShutdown(system) } def testEntityReadSide = new TestEntityReadSide(components.actorSystem, components.couchbase) override protected def readSideProcessor: () => ReadSideProcessor[TestEntity.Evt] = () => new TestEntityReadSide.TestEntityReadSideProcessor(system, components.couchbaseReadSide) override protected def getAppendCount(id: String): Future[Long] = testEntityReadSide.getAppendCount(id) }
Example 13
Source File: AkkaManagementComponents.scala From lagom with Apache License 2.0 | 5 votes |
package com.lightbend.lagom.scaladsl.server import akka.actor.ActorSystem import akka.actor.CoordinatedShutdown import com.lightbend.lagom.internal.akka.management.AkkaManagementTrigger import play.api.Environment import play.api.Mode import scala.concurrent.ExecutionContext trait AkkaManagementComponents { def configuration: play.api.Configuration def actorSystem: ActorSystem def coordinatedShutdown: CoordinatedShutdown def environment: Environment def executionContext: ExecutionContext // eager initialization private[lagom] val akkaManagementTrigger: AkkaManagementTrigger = { val instance = new AkkaManagementTrigger(configuration.underlying, actorSystem, coordinatedShutdown)(executionContext) if (environment.mode == Mode.Prod) { instance.start() } instance } }
Example 14
Source File: AkkaManagementModule.scala From lagom with Apache License 2.0 | 5 votes |
package com.lightbend.lagom.internal.javadsl.server import akka.actor.ActorSystem import akka.actor.CoordinatedShutdown import com.lightbend.lagom.internal.akka.management.AkkaManagementTrigger import com.typesafe.config.Config import javax.inject.Inject import javax.inject.Provider import javax.inject.Singleton import play.api.inject.Binding import play.api.inject.Module import play.api.Configuration import play.api.Environment import play.api.Mode import scala.concurrent.ExecutionContext private[lagom] class AkkaManagementModule extends Module { override def bindings(environment: Environment, configuration: Configuration): Seq[Binding[_]] = { // The trigger must be eager because it's often not required by anyone as a dependency to // be injected and yet it must be started anyway Seq(bind[AkkaManagementTrigger].toProvider[AkkaManagementProvider].eagerly()) } } @Singleton private[lagom] class AkkaManagementProvider @Inject() ( config: Config, actorSystem: ActorSystem, coordinatedShutdown: CoordinatedShutdown, environment: Environment, executionContext: ExecutionContext ) extends Provider[AkkaManagementTrigger] { override def get(): AkkaManagementTrigger = { val instance = new AkkaManagementTrigger(config, actorSystem, coordinatedShutdown)(executionContext) if (environment.mode == Mode.Prod) { instance.start() } instance } }
Example 15
Source File: MockServices.scala From lagom with Apache License 2.0 | 5 votes |
package com.lightbend.lagom.scaladsl.server.mocks import java.util.concurrent.atomic.AtomicInteger import akka.NotUsed import akka.stream.scaladsl.Source import com.lightbend.lagom.scaladsl.api.Service.pathCall import com.lightbend.lagom.scaladsl.api.Service.named import com.lightbend.lagom.scaladsl.api.Service.restCall import com.lightbend.lagom.scaladsl.api.Descriptor import com.lightbend.lagom.scaladsl.api.Service import com.lightbend.lagom.scaladsl.api.ServiceCall import com.lightbend.lagom.scaladsl.api.deser.DefaultExceptionSerializer import com.lightbend.lagom.scaladsl.api.transport.Method import play.api.Environment import play.api.Mode object PathProvider { val PATH = "/some-path" } trait SimpleStreamedService extends Service { override def descriptor: Descriptor = named("simple-streamed") .withCalls(pathCall(PathProvider.PATH, streamed _)) .withExceptionSerializer(new DefaultExceptionSerializer(Environment.simple(mode = Mode.Dev))) def streamed(): ServiceCall[Source[String, NotUsed], Source[String, NotUsed]] }
Example 16
Source File: PdfGeneratorConnector.scala From pertax-frontend with Apache License 2.0 | 5 votes |
package connectors import com.google.inject.{ImplementedBy, Inject, Singleton} import play.api.Mode import play.api.libs.ws.{WSClient, WSResponse} import play.api.{Configuration, Environment} import uk.gov.hmrc.play.bootstrap.config.ServicesConfig import scala.concurrent.Future @ImplementedBy(classOf[FrontendPdfGeneratorConnector]) trait PdfGeneratorConnector { val serviceURL: String def getWsClient: WSClient def generatePdf(html: String): Future[WSResponse] = getWsClient.url(serviceURL).post(Map("html" -> Seq(html))) } @Singleton class FrontendPdfGeneratorConnector @Inject()( environment: Environment, runModeConfiguration: Configuration, wsClient: WSClient, servicesConfig: ServicesConfig) extends PdfGeneratorConnector { val mode: Mode = environment.mode val pdfServiceUrl: String = servicesConfig.baseUrl("pdf-generator-service") val serviceURL = pdfServiceUrl + "/pdf-generator-service/generate" override def getWsClient: WSClient = wsClient }
Example 17
Source File: Main.scala From endpoints4s with MIT License | 5 votes |
package cqrs.infra import cqrs.commands.Commands import cqrs.publicserver.{BootstrapEndpoints, PublicServer} import cqrs.queries.{Queries, QueriesService} import endpoints4s.play.server.PlayComponents import play.api.Mode import play.api.libs.ws.ahc.{AhcWSClient, AhcWSClientConfig} import play.api.routing.Router import play.core.server.{DefaultNettyServerComponents, ServerConfig} object Main extends App { object commandsService extends PlayService(port = 9001, Mode.Prod) { lazy val commands = new Commands(playComponents) lazy val router = Router.from(commands.routes) } object queriesService extends PlayService(port = 9002, Mode.Prod) { lazy val wsClient = AhcWSClient(AhcWSClientConfig()) lazy val service = new QueriesService( baseUrl(commandsService.port), wsClient, actorSystem.scheduler ) lazy val queries = new Queries(service, playComponents) lazy val router = Router.from(queries.routes) } object publicService extends PlayService(port = 9000, Mode.Prod) { lazy val routes = new cqrs.publicserver.Router( new PublicServer( baseUrl(commandsService.port), baseUrl(queriesService.port), queriesService.wsClient, playComponents ), new BootstrapEndpoints(playComponents) ).routes lazy val router = Router.from(routes) } def baseUrl(port: Int): String = s"http://localhost:$port" // Start the commands service commandsService.server // Start the queries service queriesService.server // Start the public server publicService.server // … Runtime.getRuntime.addShutdownHook(new Thread { override def run(): Unit = { queriesService.wsClient.close() commandsService.server.stop() queriesService.server.stop() publicService.server.stop() } }) } abstract class PlayService(val port: Int, mode: Mode) extends DefaultNettyServerComponents { override lazy val serverConfig = ServerConfig(port = Some(port), mode = mode) lazy val playComponents = PlayComponents.fromBuiltInComponents(this) }
Example 18
Source File: CommandsTest.scala From endpoints4s with MIT License | 5 votes |
package cqrs.commands import java.time.{LocalDateTime, OffsetDateTime, ZoneOffset} import java.util.UUID import org.scalatest.BeforeAndAfterAll import endpoints4s.play.client.{Endpoints, JsonEntitiesFromCodecs} import endpoints4s.play.server.PlayComponents import play.api.Mode import play.api.libs.ws.ahc.{AhcWSClient, AhcWSClientConfig} import play.core.server.{NettyServer, ServerConfig} import scala.concurrent.Future import scala.math.BigDecimal import org.scalatest.freespec.AsyncFreeSpec class CommandsTest extends AsyncFreeSpec with BeforeAndAfterAll { private val server = NettyServer.fromRouterWithComponents(ServerConfig(mode = Mode.Test)) { components => new Commands(PlayComponents.fromBuiltInComponents(components)).routes } val app = server.applicationProvider.get.get import app.materializer private val wsClient = AhcWSClient(AhcWSClientConfig()) object client extends Endpoints("http://localhost:9000", wsClient) with JsonEntitiesFromCodecs with CommandsEndpoints override def afterAll(): Unit = { server.stop() wsClient.close() } "Commands" - { val arbitraryDate = OffsetDateTime .of(LocalDateTime.of(2017, 1, 8, 12, 34, 56), ZoneOffset.UTC) .toInstant val arbitraryValue = BigDecimal(10) "create a new meter" in { client.command(CreateMeter("electricity")).map { maybeEvent => assert(maybeEvent.collect { case StoredEvent(_, MeterCreated(_, "electricity")) => () }.nonEmpty) } } "create a meter and add readings to it" in { for { maybeCreatedEvent <- client.command(CreateMeter("water")) id <- maybeCreatedEvent .collect { case StoredEvent(_, MeterCreated(id, _)) => id } .fold[Future[UUID]](Future.failed(new NoSuchElementException))( Future.successful ) maybeAddedEvent <- client.command( AddRecord(id, arbitraryDate, arbitraryValue) ) _ <- maybeAddedEvent .collect { case StoredEvent( _, RecordAdded(`id`, `arbitraryDate`, `arbitraryValue`) ) => () } .fold[Future[Unit]](Future.failed(new NoSuchElementException))( Future.successful ) } yield assert(true) } } }
Example 19
Source File: SecurityFilterSpec.scala From play-zhewbacca with MIT License | 5 votes |
package org.zalando.zhewbacca import javax.inject.{Inject, Provider} import play.api.inject._ import play.api.inject.guice.GuiceApplicationBuilder import play.api.mvc.Results._ import play.api.mvc._ import play.api.routing.Router import play.api.test.{FakeRequest, PlaySpecification} import play.api.{Application, Mode} class SecurityFilterSpec extends PlaySpecification with BodyParsers { val testTokenInfo = TokenInfo("", Scope.Empty, "token type", "user uid", realm = "/employees") def appWithRoutes: Application = new GuiceApplicationBuilder() .in(Mode.Test) .bindings(bind[AuthProvider] to new AlwaysPassAuthProvider(testTokenInfo)) .overrides( bind[Router].toProvider[SecurityFilterTestRouterProvider]) .configure( "play.http.filters" -> "org.zalando.zhewbacca.TestingFilters", "authorisation.rules.file" -> "security_filter.conf") .build "SecurityFilter" should { "allow protected inner action to access token info" in { val response = route(appWithRoutes, FakeRequest(GET, "/")).get status(response) must beEqualTo(OK) contentAsString(response) must beEqualTo(testTokenInfo.tokenType) } "deny an access when there is no security rule for the reguest is given" in { val response = route(appWithRoutes, FakeRequest(GET, "/unprotected-by-mistake")).get status(response) must beEqualTo(FORBIDDEN) } } } class SecurityFilterTestRouterProvider @Inject() (components: ControllerComponents) extends Provider[Router] { import components.{actionBuilder => Action} import play.api.routing.sird._ override def get(): Router = Router.from { // test action returning action type. Shows the usage and makes it possible to test basic behaviour // security rules described in 'security_filter.conf' file case GET(p"/") => Action { request => import TokenInfoConverter._ Ok(request.tokenInfo.tokenType) } case GET(p"/unprotected") => Action { Ok } } }
Example 20
Source File: PlayAPISpec.scala From playsonify with MIT License | 5 votes |
package com.alexitc.playsonify.test import java.net.URLEncoder import org.scalatest.concurrent.ScalaFutures import org.scalatestplus.play.PlaySpec import play.api.inject.guice.GuiceApplicationBuilder import play.api.mvc.Result import play.api.test.FakeRequest import play.api.test.Helpers._ import play.api.{Application, Mode} import scala.concurrent.Future def GET(url: String, extraHeaders: (String, String)*): Future[Result] = { val headers = JsonHeader :: extraHeaders.toList val request = FakeRequest("GET", url) .withHeaders(headers: _*) val response = route(application, request).get log(request, response) response } def POST(url: String, extraHeaders: (String, String)*): Future[Result] = { POST(url, None, extraHeaders: _*) } def POST(url: String, jsonBody: Option[String], extraHeaders: (String, String)*): Future[Result] = { val headers = JsonHeader :: extraHeaders.toList val json = jsonBody.getOrElse(EmptyJson) val request = FakeRequest("POST", url) .withHeaders(headers: _*) .withBody(json) val response = route(application, request).get log(request, response) response } def PUT(url: String, extraHeaders: (String, String)*): Future[Result] = { PUT(url, None, extraHeaders: _*) } def PUT(url: String, jsonBody: Option[String], extraHeaders: (String, String)*): Future[Result] = { val headers = JsonHeader :: extraHeaders.toList val json = jsonBody.getOrElse(EmptyJson) val request = FakeRequest("PUT", url) .withHeaders(headers: _*) .withBody(json) val response = route(application, request).get log(request, response) response } def DELETE(url: String, extraHeaders: (String, String)*): Future[Result] = { val headers = JsonHeader :: extraHeaders.toList val request = FakeRequest("DELETE", url) .withHeaders(headers: _*) val response = route(application, request).get log(request, response) response } } object PlayAPISpec { object Implicits { implicit class HttpExt(val params: List[(String, String)]) extends AnyVal { def toQueryString: String = { params .map { case (key, value) => val encodedKey = URLEncoder.encode(key, "UTF-8") val encodedValue = URLEncoder.encode(value, "UTF-8") List(encodedKey, encodedValue).mkString("=") } .mkString("&") } } implicit class StringUrlExt(val url: String) extends AnyVal { def withQueryParams(params: (String, String)*): String = { List(url, params.toList.toQueryString).mkString("?") } } } }
Example 21
Source File: Bindings.scala From dependency with MIT License | 5 votes |
package io.flow.dependency.api.lib import play.api.inject.Module import play.api.{Configuration, Environment, Mode} class GithubModule extends Module { def bindings(env: Environment, conf: Configuration) = { env.mode match { case Mode.Prod | Mode.Dev => Seq( bind[Github].to[DefaultGithub] ) case Mode.Test => Seq( bind[Github].to[MockGithub] ) } } }
Example 22
Source File: Bindings.scala From dependency with MIT License | 5 votes |
package io.flow.dependency.www.lib import play.api.{Configuration, Environment, Mode} import play.api.inject.Module class DependencyClientProviderModule extends Module { def bindings(env: Environment, conf: Configuration) = { env.mode match { case Mode.Prod | Mode.Dev => Seq( bind[DependencyClientProvider].to[DefaultDependencyClientProvider] ) case Mode.Test => Seq( // TODO: Add mock bind[DependencyClientProvider].to[DependencyClientProvider] ) } } }
Example 23
Source File: Module.scala From Cortex with GNU Affero General Public License v3.0 | 5 votes |
package org.thp.cortex import java.lang.reflect.Modifier import com.google.inject.AbstractModule import net.codingwell.scalaguice.{ScalaModule, ScalaMultibinder} import play.api.libs.concurrent.AkkaGuiceSupport import play.api.{Configuration, Environment, Logger, Mode} import scala.collection.JavaConverters._ import com.google.inject.name.Names import org.reflections.Reflections import org.reflections.scanners.SubTypesScanner import org.reflections.util.ConfigurationBuilder import org.thp.cortex.models.{AuditedModel, Migration} import org.thp.cortex.services._ import org.elastic4play.models.BaseModelDef import org.elastic4play.services.auth.MultiAuthSrv import org.elastic4play.services.{UserSrv ⇒ EUserSrv, AuthSrv, MigrationOperations} import org.thp.cortex.controllers.{AssetCtrl, AssetCtrlDev, AssetCtrlProd} import services.mappers.{MultiUserMapperSrv, UserMapper} class Module(environment: Environment, configuration: Configuration) extends AbstractModule with ScalaModule with AkkaGuiceSupport { private lazy val logger = Logger(s"module") override def configure(): Unit = { val modelBindings = ScalaMultibinder.newSetBinder[BaseModelDef](binder) val auditedModelBindings = ScalaMultibinder.newSetBinder[AuditedModel](binder) val reflectionClasses = new Reflections( new ConfigurationBuilder() .forPackages("org.elastic4play") .addClassLoader(getClass.getClassLoader) .addClassLoader(environment.getClass.getClassLoader) .forPackages("org.thp.cortex") .setExpandSuperTypes(false) .setScanners(new SubTypesScanner(false)) ) reflectionClasses .getSubTypesOf(classOf[BaseModelDef]) .asScala .filterNot(c ⇒ Modifier.isAbstract(c.getModifiers)) .foreach { modelClass ⇒ logger.info(s"Loading model $modelClass") modelBindings.addBinding.to(modelClass) if (classOf[AuditedModel].isAssignableFrom(modelClass)) { auditedModelBindings.addBinding.to(modelClass.asInstanceOf[Class[AuditedModel]]) } } val authBindings = ScalaMultibinder.newSetBinder[AuthSrv](binder) reflectionClasses .getSubTypesOf(classOf[AuthSrv]) .asScala .filterNot(c ⇒ Modifier.isAbstract(c.getModifiers) || c.isMemberClass) .filterNot(c ⇒ c == classOf[MultiAuthSrv] || c == classOf[CortexAuthSrv]) .foreach { authSrvClass ⇒ logger.info(s"Loading authentication module $authSrvClass") authBindings.addBinding.to(authSrvClass) } val ssoMapperBindings = ScalaMultibinder.newSetBinder[UserMapper](binder) reflectionClasses .getSubTypesOf(classOf[UserMapper]) .asScala .filterNot(c ⇒ Modifier.isAbstract(c.getModifiers) || c.isMemberClass) .filterNot(c ⇒ c == classOf[MultiUserMapperSrv]) .foreach(mapperCls ⇒ ssoMapperBindings.addBinding.to(mapperCls)) if (environment.mode == Mode.Prod) bind[AssetCtrl].to[AssetCtrlProd] else bind[AssetCtrl].to[AssetCtrlDev] bind[EUserSrv].to[UserSrv] bind[Int].annotatedWith(Names.named("databaseVersion")).toInstance(models.modelVersion) bind[UserMapper].to[MultiUserMapperSrv] bind[AuthSrv].to[CortexAuthSrv] bind[MigrationOperations].to[Migration] bindActor[AuditActor]("audit") } }
Example 24
Source File: ApplicationSpec.scala From dr-cla with BSD 3-Clause "New" or "Revised" License | 5 votes |
package controllers import modules.{Database, DatabaseMock} import org.scalatestplus.play.PlaySpec import org.scalatestplus.play.guice.GuiceOneAppPerTest import play.api.Mode import play.api.inject._ import play.api.inject.guice.GuiceApplicationBuilder import scala.xml.Comment class ApplicationSpec extends PlaySpec with GuiceOneAppPerTest { override implicit def fakeApplication() = new GuiceApplicationBuilder() .overrides(bind[Database].to[DatabaseMock]) .configure( Map( "play.modules.disabled" -> Seq("org.flywaydb.play.PlayModule", "modules.DatabaseModule") ) ) .in(Mode.Test) .build() lazy val applicationController = app.injector.instanceOf[Application] "svgNode" must { "work" in { val svg = applicationController.svgSymbol("custom-sprite/svg/symbols.svg", "custom16") svg.attribute("d") mustBe 'defined } "produce a comment when the file can't be found" in { val svg = applicationController.svgSymbol("asdfasdf", "custom16") svg mustBe a [Comment] } "produce a comment when the symbol can't be found" in { val svg = applicationController.svgSymbol("custom-sprite/svg/symbols.svg", "asdf") svg mustBe a [Comment] } } }
Example 25
Source File: CryptoSpec.scala From dr-cla with BSD 3-Clause "New" or "Revised" License | 5 votes |
package utils import modules.{Database, DatabaseMock} import org.scalatestplus.play.PlaySpec import org.scalatestplus.play.guice.GuiceOneAppPerTest import play.api.Mode import play.api.inject._ import play.api.inject.guice.GuiceApplicationBuilder class CryptoSpec extends PlaySpec with GuiceOneAppPerTest { override implicit def fakeApplication() = new GuiceApplicationBuilder() .overrides(bind[Database].to[DatabaseMock]) .configure( Map( "play.modules.disabled" -> Seq("org.flywaydb.play.PlayModule", "modules.DatabaseModule") ) ) .in(Mode.Test) .build() lazy val crypto = new Crypto(app.configuration) "encryptAES and decryptAES" must { "work" in { val encrypted = crypto.encryptAES("hello, world") encrypted.length must equal (24) crypto.decryptAES(encrypted) must equal ("hello, world") } } }
Example 26
Source File: FiltersSpec.scala From dr-cla with BSD 3-Clause "New" or "Revised" License | 5 votes |
package utils import modules.{Database, DatabaseMock} import org.scalatestplus.play.PlaySpec import org.scalatestplus.play.guice.GuiceOneAppPerTest import play.api.Mode import play.api.http.HeaderNames import play.api.inject._ import play.api.inject.guice.GuiceApplicationBuilder import play.api.mvc._ import play.api.test.Helpers._ import play.api.test._ class FiltersSpec extends PlaySpec with GuiceOneAppPerTest { lazy val appBuilder = new GuiceApplicationBuilder() .overrides(bind[Database].to[DatabaseMock]) .configure("play.modules.disabled" -> Seq("org.flywaydb.play.PlayModule", "modules.DatabaseModule")) .in(Mode.Test) override def fakeApplication() = appBuilder.build() "Filters" must { "redirect to https if the request was forwarded and not https" in { val Some(result) = route(app, FakeRequest(GET, controllers.routes.Application.signedCla(None).url, Headers(HeaderNames.X_FORWARDED_PROTO -> "http"), AnyContentAsEmpty)) status(result) mustEqual MOVED_PERMANENTLY } "not force https for well-known requests" in { val Some(result) = route(app, FakeRequest(GET, controllers.routes.Application.wellKnown("test").url)) status(result) mustEqual NOT_FOUND } "not force https for non-forwarded requests" in { val Some(result) = route(app, FakeRequest(GET, controllers.routes.Application.signedCla(None).url)) status(result) mustEqual OK } "keep https for non-well-known requests" in { val Some(result) = route(app, FakeRequest(GET, controllers.routes.Application.signedCla(None).url, Headers(HeaderNames.X_FORWARDED_PROTO -> "https"), AnyContentAsEmpty)) status(result) mustEqual OK } "return the well known value when the WELL_KNOWN env var is set" in { implicit val app = appBuilder.configure("wellknown" -> "foo=bar").build() val Some(result) = route(app, FakeRequest(GET, controllers.routes.Application.wellKnown("foo").url)) status(result) mustEqual OK contentAsString(result) mustEqual "bar" } "not leak well known values" in { implicit val app = appBuilder.configure("wellknown" -> "foo=bar").build() val Some(result) = route(app, FakeRequest(GET, controllers.routes.Application.wellKnown("").url)) status(result) mustEqual NOT_FOUND } } }
Example 27
Source File: ViewHelpersSpec.scala From dr-cla with BSD 3-Clause "New" or "Revised" License | 5 votes |
package helpers import org.scalatest.Matchers._ import org.scalatestplus.play.PlaySpec import org.scalatestplus.play.guice.GuiceOneAppPerTest import play.api.Mode import play.api.inject.guice.GuiceApplicationBuilder class ViewHelpersSpec extends PlaySpec with GuiceOneAppPerTest { val testOrgName = "Test Org Name" val testOrgUrl = "http://orgurl.org" val testOrgLogoUrl = "image.jpg" override implicit def fakeApplication() = new GuiceApplicationBuilder() .configure( Map( "app.organization.name" -> testOrgName, "app.organization.url" -> testOrgUrl, "app.organization.logo-url"-> testOrgLogoUrl ) ) .in(Mode.Test) .build() def viewHelper = app.injector.instanceOf[ViewHelpers] "ViewHelper" must { "give a valid organization name" in { val orgName = viewHelper.organizationName orgName mustBe a [String] orgName mustEqual testOrgName } "give a valid organization URL" in { val orgUrl = viewHelper.maybeOrganizationUrl orgUrl shouldBe defined orgUrl should contain (testOrgUrl) } "give a valid organization logo URL" in { val orgLogoUrl = viewHelper.maybeOrganizationLogoUrl orgLogoUrl shouldBe defined orgLogoUrl should contain (testOrgLogoUrl) } // todo: test loading the sample CLA in dev mode } }
Example 28
Source File: IntegrationBaseSpec.scala From vat-api with Apache License 2.0 | 5 votes |
package support import org.scalatest.{BeforeAndAfterAll, BeforeAndAfterEach} import org.scalatestplus.play.guice.GuiceOneServerPerSuite import play.api.inject.guice.GuiceApplicationBuilder import play.api.libs.json.{JsValue, Json} import play.api.libs.ws.{WSClient, WSRequest, WSResponse} import play.api.{Application, Environment, Mode} trait IntegrationBaseSpec extends UnitSpec with WireMockHelper with GuiceOneServerPerSuite with BeforeAndAfterEach with BeforeAndAfterAll { val mockHost: String = WireMockHelper.host val mockPort: String = WireMockHelper.wireMockPort.toString lazy val client: WSClient = app.injector.instanceOf[WSClient] def servicesConfig: Map[String, Any] = Map( "microservice.services.des.host" -> mockHost, "microservice.services.des.port" -> mockPort, "microservice.services.auth.host" -> mockHost, "microservice.services.auth.port" -> mockPort, "auditing.consumer.baseUri.port" -> mockPort, "microservice.services.non-repudiation.host" -> mockHost, "microservice.services.non-repudiation.port" -> mockPort, "feature-switch.refactor.enabled" -> true, "feature-switch.refactor.prod.enabled" -> false, "microservice.services.non-repudiation.maxTimeout" -> 5000 ) override implicit lazy val app: Application = new GuiceApplicationBuilder() .in(Environment.simple(mode = Mode.Dev)) .configure(servicesConfig) .build() override def beforeAll(): Unit = { super.beforeAll() startWireMock() } override def afterAll(): Unit = { stopWireMock() super.afterAll() } def buildRequest(path: String): WSRequest = client.url(s"http://localhost:$port$path").withFollowRedirects(false) def document(response: WSResponse): JsValue = Json.parse(response.body) }
Example 29
Source File: ApplicationTestBase.scala From smui with Apache License 2.0 | 5 votes |
package models import models.rules._ import org.scalatest.{BeforeAndAfterAll, Suite} import play.api.{Application, Mode} import play.api.db.{Database, Databases} import play.api.inject.Injector import play.api.inject.guice.GuiceApplicationBuilder trait ApplicationTestBase extends BeforeAndAfterAll { self: Suite => protected lazy val db: Database = Databases.inMemory() // Use logging settings from logback-test.xml for test application System.setProperty("logger.resource", "logback-test.xml") protected lazy val application: Application = new GuiceApplicationBuilder(). in(Mode.Test). configure("db.default.url" -> db.url, "db.default.driver" -> "org.h2.Driver", "db.default.username" -> "", "db.default.password" -> "", "toggle.rule-deployment.log-rule-id" -> true). build() protected lazy val injector: Injector = application.injector protected lazy val repo: SearchManagementRepository = injector.instanceOf[SearchManagementRepository] protected val (core1Id, core2Id) = (SolrIndexId(), SolrIndexId()) protected def createTestCores(): Unit = { repo.addNewSolrIndex(SolrIndex(core1Id, "core1", "First core")) repo.addNewSolrIndex(SolrIndex(core2Id, "core2", "Second core")) } protected def createTestRule(): Seq[SearchInputId] = { val synonymRules = List (SynonymRule(SynonymRuleId(), 0, "mercury", isActive = true)) val upDownRules = List( UpDownRule(UpDownRuleId(), UpDownRule.TYPE_UP, 10, "notebook", isActive = true), UpDownRule(UpDownRuleId(), UpDownRule.TYPE_UP, 10, "lenovo", isActive = false), UpDownRule(UpDownRuleId(), UpDownRule.TYPE_DOWN, 10, "battery", isActive = true) ) val deleteRules = List(DeleteRule(DeleteRuleId(), "freddy", isActive = true)) val filterRules = List(FilterRule(FilterRuleId(), "zz top", isActive = true)) val id = repo.addNewSearchInput(core1Id, "aerosmith", Seq.empty) val searchInput = SearchInputWithRules(id, "aerosmith", synonymRules, upDownRules, filterRules, isActive = true, comment = "") repo.updateSearchInput(searchInput) val shippingId = repo.addNewSearchInput(core1Id, "shipping", Seq.empty) val redirectRule = RedirectRule(RedirectRuleId(), "http://xyz.com/shipping", isActive = true) val searchInputForRedirect = SearchInputWithRules(shippingId, "shipping", redirectRules = List(redirectRule), isActive = true, comment = "") repo.updateSearchInput(searchInputForRedirect) Seq(id, shippingId) } override protected def afterAll(): Unit = { application.stop() db.shutdown() } }
Example 30
Source File: KBModule.scala From daf-semantics with Apache License 2.0 | 5 votes |
package modules import javax.inject._ import play.api.inject.ApplicationLifecycle import play.api.mvc._ import scala.concurrent.Future import com.google.inject.ImplementedBy import play.api.Play import play.api.Application import play.api.Environment import play.api.Configuration import scala.concurrent.ExecutionContext import play.api.Logger import it.almawave.linkeddata.kb.utils.ConfigHelper import it.almawave.linkeddata.kb.repo._ import scala.concurrent.ExecutionContext.Implicits.global import java.nio.file.Paths import play.api.Mode import java.io.File import it.almawave.linkeddata.kb.repo.RDFRepository import com.typesafe.config.ConfigFactory @ImplementedBy(classOf[KBModuleBase]) trait KBModule @Singleton class KBModuleBase @Inject() (lifecycle: ApplicationLifecycle) extends KBModule { // TODO: SPI per dev / prod val kbrepo = RDFRepository.memory() val logger = Logger.underlyingLogger // when application starts... @Inject def onStart( env: Environment, configuration: Configuration)(implicit ec: ExecutionContext) { // get configs val app_type = configuration.underlying.getString("app.type") val data_dir = app_type match { case "dev" => "./dist/data" case "prod" => "./data" } logger.debug(s"app_type: ${app_type}") logger.debug(s"data_dir: ${data_dir}") // starting VocabularyAPI service var conf_voc = ConfigFactory.parseFile(new File("./conf/semantic_repository.conf").getAbsoluteFile) conf_voc = ConfigHelper.injectParameters(conf_voc, ("data_dir", data_dir)) kbrepo.configuration(conf_voc) logger.info("KBModule.START....") logger.debug("KBModule using configuration:\n" + ConfigHelper.pretty(conf_voc)) println("KBModule using configuration:\n" + ConfigHelper.pretty(conf_voc)) // this is needed for ensure proper connection(s) etc kbrepo.start() // CHECK the initial (total) triples count var triples = kbrepo.store.size() logger.info(s"KBModule> ${triples} triples loaded") } // when application stops... lifecycle.addStopHook({ () => Future.successful { // this is useful for saving files, closing connections, release indexes, etc kbrepo.stop() logger.info("KBModule.STOP....") } }) }