├── .gitattributes ├── .gitignore ├── .java-version ├── .jvmopts ├── .scalafmt.conf ├── .travis.yml ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── build.sbt ├── cache ├── play-cache │ └── src │ │ ├── main │ │ ├── java │ │ │ └── play │ │ │ │ └── cache │ │ │ │ ├── AsyncCacheApi.java │ │ │ │ ├── CacheApi.java │ │ │ │ ├── Cached.java │ │ │ │ ├── CachedAction.java │ │ │ │ ├── DefaultAsyncCacheApi.java │ │ │ │ ├── DefaultSyncCacheApi.java │ │ │ │ ├── NamedCache.java │ │ │ │ ├── NamedCacheImpl.java │ │ │ │ ├── SyncCacheApi.java │ │ │ │ ├── SyncCacheApiAdapter.java │ │ │ │ └── package-info.java │ │ └── scala │ │ │ └── play │ │ │ └── api │ │ │ └── cache │ │ │ ├── AsyncCacheApi.scala │ │ │ ├── Cached.scala │ │ │ ├── SerializableResult.scala │ │ │ ├── SyncCacheApi.scala │ │ │ └── package.scala │ │ └── test │ │ └── resources │ │ └── logback-test.xml ├── play-ehcache │ └── src │ │ ├── main │ │ ├── java │ │ │ └── play │ │ │ │ └── cache │ │ │ │ └── ehcache │ │ │ │ └── EhCacheComponents.java │ │ ├── resources │ │ │ ├── ehcache-default.xml │ │ │ └── reference.conf │ │ └── scala │ │ │ └── play │ │ │ └── api │ │ │ └── cache │ │ │ └── ehcache │ │ │ └── EhCacheApi.scala │ │ └── test │ │ ├── resources │ │ ├── ehcache-alternate.xml │ │ └── logback-test.xml │ │ └── scala │ │ └── play │ │ └── api │ │ └── cache │ │ ├── CachedSpec.scala │ │ ├── JavaCacheApiSpec.scala │ │ ├── SerializableResultSpec.scala │ │ └── ehcache │ │ └── EhCacheApiSpec.scala └── play-jcache │ └── src │ ├── main │ ├── java │ │ └── play │ │ │ └── libs │ │ │ └── jcache │ │ │ └── JCacheComponents.java │ ├── resources │ │ └── reference.conf │ └── scala │ │ └── play │ │ └── api │ │ └── libs │ │ └── jcache │ │ ├── JCacheComponents.scala │ │ └── JCacheModule.scala │ └── test │ └── scala │ └── play │ └── api │ └── libs │ └── jcache │ └── JCacheSpec.scala ├── core ├── play-exceptions │ └── src │ │ └── main │ │ └── java │ │ └── play │ │ └── api │ │ ├── PlayException.java │ │ └── UsefulException.java ├── play-guice │ └── src │ │ ├── main │ │ ├── java │ │ │ └── play │ │ │ │ ├── inject │ │ │ │ └── guice │ │ │ │ │ ├── GuiceApplicationBuilder.java │ │ │ │ │ ├── GuiceApplicationLoader.java │ │ │ │ │ ├── GuiceBuilder.java │ │ │ │ │ ├── GuiceInjectorBuilder.java │ │ │ │ │ └── Guiceable.java │ │ │ │ └── libs │ │ │ │ └── akka │ │ │ │ ├── AkkaGuiceSupport.java │ │ │ │ ├── BinderAccessor.java │ │ │ │ └── package-info.java │ │ ├── resources │ │ │ └── reference.conf │ │ └── scala │ │ │ └── play │ │ │ └── api │ │ │ ├── inject │ │ │ └── guice │ │ │ │ ├── GuiceApplicationBuilder.scala │ │ │ │ ├── GuiceApplicationLoader.scala │ │ │ │ └── GuiceInjectorBuilder.scala │ │ │ └── libs │ │ │ └── concurrent │ │ │ └── AkkaGuiceSupport.scala │ │ └── test │ │ ├── java │ │ └── play │ │ │ └── inject │ │ │ └── guice │ │ │ ├── GuiceApplicationBuilderTest.java │ │ │ ├── GuiceApplicationLoaderTest.java │ │ │ └── GuiceInjectorBuilderTest.java │ │ ├── resources │ │ └── messages │ │ └── scala │ │ └── play │ │ ├── api │ │ ├── http │ │ │ └── HttpErrorHandlerSpec.scala │ │ └── inject │ │ │ ├── ModulesSpec.scala │ │ │ └── guice │ │ │ ├── GuiceApplicationBuilderSpec.scala │ │ │ ├── GuiceApplicationLoaderSpec.scala │ │ │ └── GuiceInjectorBuilderSpec.scala │ │ ├── core │ │ └── test │ │ │ └── Fakes.scala │ │ └── utils │ │ └── ReflectSpec.scala ├── play-integration-test │ └── src │ │ ├── it │ │ └── resources │ │ │ └── testassets │ │ │ └── empty.txt │ │ └── test │ │ ├── java │ │ └── play │ │ │ ├── BuiltInComponentsFromContextTest.java │ │ │ ├── it │ │ │ ├── JavaServerIntegrationTest.java │ │ │ └── http │ │ │ │ ├── ActionCompositionActionCreator.java │ │ │ │ ├── ActionCompositionOrderTest.java │ │ │ │ ├── MultipleRepeatableOnActionController.java │ │ │ │ ├── MultipleRepeatableOnTypeAndActionController.java │ │ │ │ ├── MultipleRepeatableOnTypeController.java │ │ │ │ ├── RepeatableBackwardCompatibilityController.java │ │ │ │ ├── SingleRepeatableOnActionController.java │ │ │ │ ├── SingleRepeatableOnTypeAndActionController.java │ │ │ │ ├── SingleRepeatableOnTypeController.java │ │ │ │ ├── WithOnActionController.java │ │ │ │ ├── WithOnTypeAndActionController.java │ │ │ │ ├── WithOnTypeController.java │ │ │ │ └── websocket │ │ │ │ └── WebSocketSpecJavaActions.java │ │ │ └── routing │ │ │ ├── AbstractRoutingDslTest.java │ │ │ ├── CompileTimeInjectionRoutingDslTest.java │ │ │ ├── DependencyInjectedRoutingDslTest.java │ │ │ └── GlobalStateRoutingDslTest.java │ │ ├── resources │ │ ├── application.conf │ │ ├── logback.xml │ │ ├── messages │ │ └── testassets │ │ │ ├── bar.txt │ │ │ ├── empty.txt │ │ │ ├── encoding.js │ │ │ ├── encoding.js.br │ │ │ ├── encoding.js.bz2 │ │ │ ├── encoding.js.gz │ │ │ ├── encoding.js.xz │ │ │ ├── foo bar.txt │ │ │ ├── foo.txt │ │ │ ├── foo.txt.gz │ │ │ ├── range.txt │ │ │ ├── subdir │ │ │ └── baz.txt │ │ │ ├── test.json │ │ │ └── versioned │ │ │ └── sub │ │ │ ├── 12345678901234567890123456789012-foo.txt │ │ │ ├── foo.txt │ │ │ └── foo.txt.md5 │ │ └── scala │ │ └── play │ │ └── it │ │ ├── LogTester.scala │ │ ├── ServerIntegrationSpecification.scala │ │ ├── ServerIntegrationSpecificationSpec.scala │ │ ├── action │ │ ├── ContentNegotiationSpec.scala │ │ ├── EssentialActionSpec.scala │ │ ├── FormActionSpec.scala │ │ └── HeadActionSpec.scala │ │ ├── auth │ │ └── SecuritySpec.scala │ │ ├── http │ │ ├── AkkaHttpCustomServerProviderSpec.scala │ │ ├── AkkaRequestTimeoutSpec.scala │ │ ├── AkkaResponseHeaderHandlingSpec.scala │ │ ├── BadClientHandlingSpec.scala │ │ ├── BasicHttpClient.scala │ │ ├── Expect100ContinueSpec.scala │ │ ├── FlashCookieSpec.scala │ │ ├── FormFieldOrderSpec.scala │ │ ├── HttpErrorHandlingSpec.scala │ │ ├── HttpFiltersSpec.scala │ │ ├── HttpHeaderSpec.scala │ │ ├── HttpHeadersCommonSpec.scala │ │ ├── HttpPipeliningSpec.scala │ │ ├── IdleTimeoutSpec.scala │ │ ├── JAction.scala │ │ ├── JavaActionCompositionSpec.scala │ │ ├── JavaCachedActionSpec.scala │ │ ├── JavaHttpHandlerSpec.scala │ │ ├── JavaRequestsSpec.scala │ │ ├── JavaResultsHandlingSpec.scala │ │ ├── RequestBodyHandlingSpec.scala │ │ ├── RequestHeadersSpec.scala │ │ ├── ScalaResultsHandlingSpec.scala │ │ ├── ScalaResultsSpec.scala │ │ ├── SecureFlagSpec.scala │ │ ├── SessionCookieSpec.scala │ │ ├── UriHandlingSpec.scala │ │ ├── assets │ │ │ └── AssetsSpec.scala │ │ ├── parsing │ │ │ ├── AnyContentBodyParserSpec.scala │ │ │ ├── BodyParserSpec.scala │ │ │ ├── ByteStringBodyParserSpec.scala │ │ │ ├── DefaultBodyParserSpec.scala │ │ │ ├── EmptyBodyParserSpec.scala │ │ │ ├── FormBodyParserSpec.scala │ │ │ ├── IgnoreBodyParserSpec.scala │ │ │ ├── JsonBodyParserSpec.scala │ │ │ ├── MultipartFormDataParserSpec.scala │ │ │ ├── TextBodyParserSpec.scala │ │ │ └── XmlBodyParserSpec.scala │ │ └── websocket │ │ │ ├── WebSocketClient.scala │ │ │ └── WebSocketSpec.scala │ │ ├── i18n │ │ ├── LangSpec.scala │ │ └── MessagesSpec.scala │ │ ├── libs │ │ ├── JavaFormSpec.scala │ │ ├── JavaWSSpec.scala │ │ └── ScalaWSSpec.scala │ │ ├── mvc │ │ ├── FiltersSpec.scala │ │ └── HttpSpec.scala │ │ ├── routing │ │ └── ServerSpec.scala │ │ ├── server │ │ └── ServerReloadingSpec.scala │ │ ├── test │ │ ├── ApplicationFactory.scala │ │ ├── EndpointIntegrationSpecification.scala │ │ ├── EndpointIntegrationSpecificationSpec.scala │ │ ├── OkHttpEndpointSpec.scala │ │ ├── OkHttpEndpointSupport.scala │ │ ├── ServerEndpoint.scala │ │ ├── ServerEndpointRecipe.scala │ │ ├── WSEndpointSpec.scala │ │ └── WSEndpointSupport.scala │ │ ├── tools │ │ └── HttpBin.scala │ │ └── views │ │ └── DevErrorPageSpec.scala ├── play-java │ └── src │ │ ├── main │ │ ├── java │ │ │ └── play │ │ │ │ ├── inject │ │ │ │ ├── BuiltInModule.java │ │ │ │ └── ConfigurationProvider.java │ │ │ │ ├── libs │ │ │ │ ├── Classpath.java │ │ │ │ ├── Comet.java │ │ │ │ ├── EventSource.java │ │ │ │ ├── Jsonp.java │ │ │ │ ├── Resources.java │ │ │ │ ├── Time.java │ │ │ │ ├── XPath.java │ │ │ │ └── package-info.java │ │ │ │ └── routing │ │ │ │ ├── RoutingDsl.java │ │ │ │ ├── RoutingDslComponents.java │ │ │ │ └── RoutingDslComponentsFromContext.java │ │ ├── resources │ │ │ ├── ebean.properties │ │ │ └── reference.conf │ │ ├── scala-2.11 │ │ │ └── play │ │ │ │ └── core │ │ │ │ └── j │ │ │ │ └── JavaImplicitConversions.scala │ │ ├── scala-2.12 │ │ │ └── play │ │ │ │ └── core │ │ │ │ └── j │ │ │ │ └── JavaImplicitConversions.scala │ │ └── scala │ │ │ └── play │ │ │ ├── core │ │ │ ├── ObjectMapperModule.scala │ │ │ └── TemplateMagicForJava.scala │ │ │ ├── libs │ │ │ └── ReflectionsCache.scala │ │ │ └── routing │ │ │ ├── RouterBuilderHelper.scala │ │ │ └── RoutingDslModule.scala │ │ └── test │ │ ├── java │ │ └── play │ │ │ ├── libs │ │ │ ├── ClasspathTest.java │ │ │ ├── ResourcesTest.java │ │ │ ├── TimeTest.java │ │ │ └── testmodel │ │ │ │ ├── AC1.java │ │ │ │ └── C1.java │ │ │ └── mvc │ │ │ ├── AttributesTest.java │ │ │ ├── HttpTest.java │ │ │ └── RequestBuilderTest.java │ │ ├── resources │ │ ├── logback-test.xml │ │ ├── messages │ │ ├── messages.en-US │ │ └── messages.fr │ │ └── scala │ │ └── play │ │ └── libs │ │ └── XPathSpec.scala ├── play-logback │ └── src │ │ ├── main │ │ ├── resources │ │ │ ├── logback-play-default.xml │ │ │ ├── logback-play-dev.xml │ │ │ ├── logback-play-logSql.xml │ │ │ └── logger-configurator.properties │ │ └── scala │ │ │ └── play │ │ │ └── api │ │ │ └── libs │ │ │ └── logback │ │ │ ├── ColoredLevel.scala │ │ │ └── LogbackLoggerConfigurator.scala │ │ └── test │ │ └── scala │ │ └── play │ │ └── api │ │ ├── ModeSpecificLoggerSpec.scala │ │ └── libs │ │ └── logback │ │ └── LogbackCapturingAppender.scala ├── play-microbenchmark │ └── src │ │ └── test │ │ └── scala │ │ └── play │ │ ├── api │ │ └── mvc │ │ │ ├── Cookies_01_ReadCookieFromHeader.scala │ │ │ ├── MvcHelpers.scala │ │ │ └── RequestHeader_01_ReadHeaderValue.scala │ │ ├── core │ │ └── server │ │ │ └── netty │ │ │ ├── NettyHelpers.scala │ │ │ ├── NettyModelConversion_01_ConvertMinimalRequest.scala │ │ │ └── NettyModelConversion_02_ConvertNormalRequest.scala │ │ └── microbenchmark │ │ ├── PlayJmhRunner.scala │ │ └── it │ │ └── HelloWorldBenchmark.scala ├── play-streams │ └── src │ │ ├── main │ │ ├── java │ │ │ └── play │ │ │ │ └── libs │ │ │ │ └── streams │ │ │ │ ├── Accumulator.java │ │ │ │ └── ActorFlow.java │ │ └── scala │ │ │ └── play │ │ │ └── api │ │ │ └── libs │ │ │ └── streams │ │ │ ├── Accumulator.scala │ │ │ ├── ActorFlow.scala │ │ │ ├── AkkaStreams.scala │ │ │ ├── Execution.scala │ │ │ ├── GzipFlow.scala │ │ │ └── Probes.scala │ │ └── test │ │ ├── java │ │ └── play │ │ │ └── libs │ │ │ └── streams │ │ │ └── AccumulatorTest.java │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── play │ │ ├── api │ │ └── libs │ │ │ └── streams │ │ │ ├── AccumulatorSpec.scala │ │ │ └── ExecutionSpec.scala │ │ └── libs │ │ └── streams │ │ └── AccumulatorSpec.scala └── play │ └── src │ ├── main │ ├── java │ │ └── play │ │ │ ├── Application.java │ │ │ ├── ApplicationLoader.java │ │ │ ├── BuiltInComponents.java │ │ │ ├── BuiltInComponentsFromContext.java │ │ │ ├── Configuration.java │ │ │ ├── DefaultApplication.java │ │ │ ├── DelegateLoggerConfigurator.java │ │ │ ├── Environment.java │ │ │ ├── Logger.java │ │ │ ├── LoggerConfigurator.java │ │ │ ├── Mode.java │ │ │ ├── Play.java │ │ │ ├── components │ │ │ ├── AkkaComponents.java │ │ │ ├── ApplicationComponents.java │ │ │ ├── BaseComponents.java │ │ │ ├── BodyParserComponents.java │ │ │ ├── ConfigurationComponents.java │ │ │ ├── CryptoComponents.java │ │ │ ├── FileMimeTypesComponents.java │ │ │ ├── HttpComponents.java │ │ │ ├── HttpConfigurationComponents.java │ │ │ ├── HttpErrorHandlerComponents.java │ │ │ └── TemporaryFileComponents.java │ │ │ ├── controllers │ │ │ └── AssetsComponents.java │ │ │ ├── core │ │ │ ├── Paths.java │ │ │ └── j │ │ │ │ └── MappedJavaHandlerComponents.java │ │ │ ├── http │ │ │ ├── ActionCreator.java │ │ │ ├── DefaultActionCreator.java │ │ │ ├── DefaultHttpErrorHandler.java │ │ │ ├── DefaultHttpFilters.java │ │ │ ├── DefaultHttpRequestHandler.java │ │ │ ├── HandlerForRequest.java │ │ │ ├── HttpEntity.java │ │ │ ├── HttpErrorHandler.java │ │ │ ├── HttpFilters.java │ │ │ ├── HttpRequestHandler.java │ │ │ ├── package-info.java │ │ │ └── websocket │ │ │ │ └── Message.java │ │ │ ├── i18n │ │ │ ├── I18nComponents.java │ │ │ ├── Lang.java │ │ │ ├── Langs.java │ │ │ ├── Messages.java │ │ │ ├── MessagesApi.java │ │ │ ├── MessagesImpl.java │ │ │ └── package-info.java │ │ │ ├── inject │ │ │ ├── ApplicationLifecycle.java │ │ │ ├── Binding.java │ │ │ ├── BindingKey.java │ │ │ ├── BindingKeyTarget.java │ │ │ ├── BindingTarget.java │ │ │ ├── Bindings.java │ │ │ ├── ConstructionTarget.java │ │ │ ├── DelegateApplicationLifecycle.java │ │ │ ├── DelegateInjector.java │ │ │ ├── Injector.java │ │ │ ├── Module.java │ │ │ ├── NamedImpl.java │ │ │ ├── ProviderConstructionTarget.java │ │ │ ├── ProviderTarget.java │ │ │ ├── QualifierAnnotation.java │ │ │ ├── QualifierClass.java │ │ │ ├── QualifierInstance.java │ │ │ ├── SourceProvider.java │ │ │ └── package-info.java │ │ │ ├── libs │ │ │ ├── Akka.java │ │ │ ├── AnnotationUtils.java │ │ │ ├── F.java │ │ │ ├── Files.java │ │ │ ├── Json.java │ │ │ ├── Scala.java │ │ │ ├── XML.java │ │ │ ├── akka │ │ │ │ └── InjectedActorSupport.java │ │ │ ├── concurrent │ │ │ │ ├── CustomExecutionContext.java │ │ │ │ ├── DefaultFutures.java │ │ │ │ ├── Futures.java │ │ │ │ ├── HttpExecution.java │ │ │ │ ├── HttpExecutionContext.java │ │ │ │ ├── Timeout.java │ │ │ │ └── package-info.java │ │ │ ├── crypto │ │ │ │ ├── CSRFTokenSigner.java │ │ │ │ ├── CookieSigner.java │ │ │ │ ├── DefaultCSRFTokenSigner.java │ │ │ │ └── DefaultCookieSigner.java │ │ │ ├── streams │ │ │ │ ├── AkkaStreams.java │ │ │ │ └── package-info.java │ │ │ └── typedmap │ │ │ │ ├── TypedEntry.java │ │ │ │ ├── TypedKey.java │ │ │ │ └── TypedMap.java │ │ │ ├── mvc │ │ │ ├── Action.java │ │ │ ├── BodyParser.java │ │ │ ├── BodyParsers.java │ │ │ ├── Call.java │ │ │ ├── Controller.java │ │ │ ├── EssentialAction.java │ │ │ ├── EssentialFilter.java │ │ │ ├── FileMimeTypes.java │ │ │ ├── Filter.java │ │ │ ├── Http.java │ │ │ ├── MultipartFormatter.java │ │ │ ├── PathBindable.java │ │ │ ├── QueryStringBindable.java │ │ │ ├── RangeResults.java │ │ │ ├── ResponseHeader.java │ │ │ ├── Result.java │ │ │ ├── Results.java │ │ │ ├── Security.java │ │ │ ├── StatusHeader.java │ │ │ ├── WebSocket.java │ │ │ ├── With.java │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ ├── routing │ │ │ ├── HandlerDef.java │ │ │ ├── JavaScriptReverseRouter.java │ │ │ └── Router.java │ │ │ └── server │ │ │ ├── ApplicationProvider.java │ │ │ └── SSLEngineProvider.java │ ├── resources │ │ ├── messages.default │ │ ├── play │ │ │ └── reference-overrides.conf │ │ └── reference.conf │ └── scala │ │ ├── models │ │ └── DummyPlaceHolder.scala │ │ ├── play │ │ ├── api │ │ │ ├── Application.scala │ │ │ ├── ApplicationLoader.scala │ │ │ ├── Configuration.scala │ │ │ ├── Environment.scala │ │ │ ├── Exceptions.scala │ │ │ ├── Logger.scala │ │ │ ├── LoggerConfigurator.scala │ │ │ ├── Play.scala │ │ │ ├── controllers │ │ │ │ ├── Assets.scala │ │ │ │ ├── Default.scala │ │ │ │ └── ExternalAssets.scala │ │ │ ├── data │ │ │ │ ├── Form.scala │ │ │ │ ├── Forms.scala │ │ │ │ ├── format │ │ │ │ │ ├── Format.scala │ │ │ │ │ ├── PlayDate.scala │ │ │ │ │ └── package.scala │ │ │ │ ├── package.scala │ │ │ │ └── validation │ │ │ │ │ ├── Validation.scala │ │ │ │ │ └── package.scala │ │ │ ├── http │ │ │ │ ├── AcceptEncoding.scala │ │ │ │ ├── ContentTypeOf.scala │ │ │ │ ├── FileMimeTypes.scala │ │ │ │ ├── HttpConfiguration.scala │ │ │ │ ├── HttpEntity.scala │ │ │ │ ├── HttpErrorHandler.scala │ │ │ │ ├── HttpFilters.scala │ │ │ │ ├── HttpRequestHandler.scala │ │ │ │ ├── MediaRange.scala │ │ │ │ ├── Port.scala │ │ │ │ ├── StandardValues.scala │ │ │ │ ├── Writeable.scala │ │ │ │ ├── package.scala │ │ │ │ └── websocket │ │ │ │ │ ├── CloseCodes.scala │ │ │ │ │ └── Message.scala │ │ │ ├── i18n │ │ │ │ ├── I18nModule.scala │ │ │ │ ├── I18nSupport.scala │ │ │ │ ├── Langs.scala │ │ │ │ ├── Messages.scala │ │ │ │ └── package.scala │ │ │ ├── inject │ │ │ │ ├── ApplicationLifecycle.scala │ │ │ │ ├── Binding.scala │ │ │ │ ├── BuiltinModule.scala │ │ │ │ ├── Injector.scala │ │ │ │ ├── Module.scala │ │ │ │ └── package.scala │ │ │ ├── libs │ │ │ │ ├── Codecs.scala │ │ │ │ ├── Collections.scala │ │ │ │ ├── Comet.scala │ │ │ │ ├── Crypto.scala │ │ │ │ ├── EventSource.scala │ │ │ │ ├── Files.scala │ │ │ │ ├── JNDI.scala │ │ │ │ ├── Jsonp.scala │ │ │ │ ├── concurrent │ │ │ │ │ ├── Akka.scala │ │ │ │ │ ├── CustomExecutionContext.scala │ │ │ │ │ ├── Execution.scala │ │ │ │ │ ├── Futures.scala │ │ │ │ │ └── Timeout.scala │ │ │ │ ├── crypto │ │ │ │ │ ├── CSRFTokenSigner.scala │ │ │ │ │ └── CookieSigner.scala │ │ │ │ ├── package.scala │ │ │ │ └── typedmap │ │ │ │ │ ├── TypedEntry.scala │ │ │ │ │ ├── TypedKey.scala │ │ │ │ │ └── TypedMap.scala │ │ │ ├── mvc │ │ │ │ ├── Action.scala │ │ │ │ ├── Binders.scala │ │ │ │ ├── BodyParsers.scala │ │ │ │ ├── Call.scala │ │ │ │ ├── Controller.scala │ │ │ │ ├── Cookie.scala │ │ │ │ ├── Filters.scala │ │ │ │ ├── Flash.scala │ │ │ │ ├── Handler.scala │ │ │ │ ├── Headers.scala │ │ │ │ ├── MessagesRequest.scala │ │ │ │ ├── RangeResult.scala │ │ │ │ ├── Render.scala │ │ │ │ ├── Request.scala │ │ │ │ ├── RequestExtractors.scala │ │ │ │ ├── RequestHeader.scala │ │ │ │ ├── Results.scala │ │ │ │ ├── Security.scala │ │ │ │ ├── Session.scala │ │ │ │ ├── WebSocket.scala │ │ │ │ ├── WrappedRequest.scala │ │ │ │ ├── package.scala │ │ │ │ └── request │ │ │ │ │ ├── Cell.scala │ │ │ │ │ ├── RemoteConnection.scala │ │ │ │ │ ├── RequestAttrKey.scala │ │ │ │ │ ├── RequestFactory.scala │ │ │ │ │ └── RequestTarget.scala │ │ │ ├── package.scala │ │ │ ├── routing │ │ │ │ ├── HandlerDef.scala │ │ │ │ ├── JavascriptReverseRouter.scala │ │ │ │ ├── Router.scala │ │ │ │ └── sird │ │ │ │ │ ├── PathBindableExtractor.scala │ │ │ │ │ ├── PathExtractor.scala │ │ │ │ │ ├── QueryStringExtractors.scala │ │ │ │ │ ├── RequestMethodExtractor.scala │ │ │ │ │ ├── macroimpl │ │ │ │ │ └── QueryStringParameterMacros.scala │ │ │ │ │ └── package.scala │ │ │ └── templates │ │ │ │ └── Templates.scala │ │ ├── core │ │ │ ├── ApplicationProvider.scala │ │ │ ├── Execution.scala │ │ │ ├── formatters │ │ │ │ └── Multipart.scala │ │ │ ├── hidden │ │ │ │ └── ObjectMappings.scala │ │ │ ├── j │ │ │ │ ├── AbstractFilter.scala │ │ │ │ ├── HttpExecutionContext.scala │ │ │ │ ├── JavaAction.scala │ │ │ │ ├── JavaHelpers.scala │ │ │ │ ├── JavaHttpErrorHandlerAdapter.scala │ │ │ │ ├── JavaHttpRequestHandlerAdapter.scala │ │ │ │ ├── JavaModeConverter.scala │ │ │ │ ├── JavaParsers.scala │ │ │ │ ├── JavaRangeResult.scala │ │ │ │ ├── JavaResults.scala │ │ │ │ └── JavaRouterAdapter.scala │ │ │ ├── parsers │ │ │ │ ├── FormUrlEncodedParser.scala │ │ │ │ └── Multipart.scala │ │ │ ├── routing │ │ │ │ ├── GeneratedRouter.scala │ │ │ │ ├── HandlerInvoker.scala │ │ │ │ ├── PathPattern.scala │ │ │ │ ├── ReverseRouteContext.scala │ │ │ │ └── package.scala │ │ │ ├── system │ │ │ │ ├── ClosableLazy.scala │ │ │ │ ├── NamedThreadFactory.scala │ │ │ │ ├── RequestIdProvider.scala │ │ │ │ └── WebCommands.scala │ │ │ └── utils │ │ │ │ ├── AsciiSet.scala │ │ │ │ ├── CaseInsensitiveOrdered.scala │ │ │ │ └── HttpHeaderEncoding.scala │ │ ├── server │ │ │ └── api │ │ │ │ └── SSLEngineProvider.scala │ │ └── utils │ │ │ ├── Colors.scala │ │ │ ├── Conversions.scala │ │ │ ├── InlineCache.scala │ │ │ ├── OrderPreserving.scala │ │ │ ├── PlayIO.scala │ │ │ ├── ProxyDriver.scala │ │ │ ├── Reflect.scala │ │ │ ├── Resources.scala │ │ │ ├── Threads.scala │ │ │ └── UriEncoding.scala │ │ └── views │ │ ├── defaultpages │ │ ├── badRequest.scala.html │ │ ├── devError.scala.html │ │ ├── devNotFound.scala.html │ │ ├── error.scala.html │ │ ├── notFound.scala.html │ │ ├── package.scala │ │ ├── todo.scala.html │ │ └── unauthorized.scala.html │ │ ├── helper │ │ ├── Helpers.scala │ │ ├── checkbox.scala.html │ │ ├── defaultFieldConstructor.scala.html │ │ ├── form.scala.html │ │ ├── input.scala.html │ │ ├── inputCheckboxGroup.scala.html │ │ ├── inputDate.scala.html │ │ ├── inputFile.scala.html │ │ ├── inputPassword.scala.html │ │ ├── inputRadioGroup.scala.html │ │ ├── inputText.scala.html │ │ ├── javascriptRouter.scala.html │ │ ├── jsloader.scala.html │ │ ├── requireJs.scala.html │ │ ├── select.scala.html │ │ └── textarea.scala.html │ │ ├── html │ │ └── helper │ │ │ └── package.scala │ │ ├── js │ │ └── helper │ │ │ └── package.scala │ │ ├── package.scala │ │ └── play20 │ │ └── manual.scala.html │ └── test │ ├── conf │ └── application.conf │ ├── java │ └── play │ │ ├── ConfigurationTest.java │ │ ├── core │ │ └── PathsTest.java │ │ ├── i18n │ │ └── MessagesTest.java │ │ ├── libs │ │ └── concurrent │ │ │ └── FuturesTest.java │ │ └── mvc │ │ ├── CallTest.java │ │ ├── CookieBuilderTest.java │ │ ├── RangeResultsTest.java │ │ ├── ResultsTest.java │ │ └── SecurityTest.java │ ├── resources │ ├── application-infinite-timeout.conf │ ├── file withspace.css │ ├── logback-test.xml │ ├── messages │ ├── multipart-form-data-file.txt │ └── reference.conf │ └── scala │ ├── play │ ├── api │ │ ├── BuiltInComponentsSpec.scala │ │ ├── ConfigurationSpec.scala │ │ ├── LoggerConfiguratorSpec.scala │ │ ├── LoggerSpec.scala │ │ ├── ModeSpec.scala │ │ ├── PlayCoreTestApplication.scala │ │ ├── PlayGlobalAppSpec.scala │ │ ├── controllers │ │ │ ├── AssetsDateParsingSpec.scala │ │ │ └── AssetsSpec.scala │ │ ├── data │ │ │ ├── FormSpec.scala │ │ │ ├── format │ │ │ │ ├── FormatSpec.scala │ │ │ │ └── PlayDateSpec.scala │ │ │ └── validation │ │ │ │ └── ValidationSpec.scala │ │ ├── http │ │ │ ├── AcceptEncodingSpec.scala │ │ │ ├── EnabledFiltersSpec.scala │ │ │ ├── HttpConfigurationSpec.scala │ │ │ ├── MediaRangeSpec.scala │ │ │ ├── SecretConfigurationParserSpec.scala │ │ │ └── WriteableSpec.scala │ │ ├── i18n │ │ │ ├── LangSpec.scala │ │ │ └── MessagesSpec.scala │ │ ├── inject │ │ │ └── DefaultApplicationLifecycleSpec.scala │ │ ├── libs │ │ │ ├── CometSpec.scala │ │ │ ├── EventSourceSpec.scala │ │ │ ├── FileMimeTypesSpec.scala │ │ │ ├── TemporaryFileCreatorSpec.scala │ │ │ ├── TemporaryFileReaperSpec.scala │ │ │ ├── concurrent │ │ │ │ ├── ActorSystemProviderSpec.scala │ │ │ │ └── FuturesSpec.scala │ │ │ └── crypto │ │ │ │ ├── CSRFTokenSignerSpec.scala │ │ │ │ └── CookieSignerSpec.scala │ │ ├── mvc │ │ │ ├── BindersSpec.scala │ │ │ ├── CookiesSpec.scala │ │ │ ├── FlashCookieSpec.scala │ │ │ ├── InMemoryTemporaryFileCreator.scala │ │ │ ├── MaxLengthBodyParserSpec.scala │ │ │ ├── MultipartBodyParserSpec.scala │ │ │ ├── RangeResultSpec.scala │ │ │ ├── RawBodyParserSpec.scala │ │ │ ├── RawBufferSpec.scala │ │ │ ├── RequestHeaderSpec.scala │ │ │ ├── RequestSpec.scala │ │ │ └── ResultsSpec.scala │ │ ├── routing │ │ │ ├── JavaScriptReverseRouterSpec.scala │ │ │ └── sird │ │ │ │ ├── DslSpec.scala │ │ │ │ └── UrlContextSpec.scala │ │ └── templates │ │ │ └── TemplatesSpec.scala │ ├── core │ │ ├── ClosableLazySpec.scala │ │ ├── parsers │ │ │ └── FormUrlEncodedParserSpec.scala │ │ ├── routing │ │ │ ├── GeneratedRouterSpec.scala │ │ │ └── RouterSpec.scala │ │ ├── test │ │ │ ├── Fakes.scala │ │ │ └── package.scala │ │ └── utils │ │ │ ├── HttpHeaderParameterEncodingSpec.scala │ │ │ └── ThreadsSpec.scala │ ├── data │ │ ├── AnotherUser.java │ │ └── MyUser.java │ ├── libs │ │ ├── FTupleSpec.scala │ │ ├── XMLSpec.scala │ │ └── json │ │ │ ├── JavaJsonSpec.scala │ │ │ └── JavaPOJO.java │ ├── mvc │ │ ├── RawBodyParserSpec.scala │ │ ├── RequestHeaderSpec.scala │ │ ├── ResponseHeaderSpec.scala │ │ ├── ResultSpec.scala │ │ └── StatusHeaderSpec.scala │ └── utils │ │ ├── PlayIOSpec.scala │ │ ├── ResourcesSpec.scala │ │ └── UriEncodingSpec.scala │ └── views │ ├── html │ └── helper │ │ └── HelpersSpec.scala │ └── js │ └── helper │ └── HelpersSpec.scala ├── dev-mode ├── build-link │ └── src │ │ └── main │ │ └── java │ │ └── play │ │ ├── TemplateImports.java │ │ └── core │ │ ├── Build.java │ │ ├── BuildDocHandler.java │ │ ├── BuildLink.java │ │ └── server │ │ └── ReloadableServer.java ├── play-docs-sbt-plugin │ └── src │ │ └── main │ │ ├── scala-sbt-0.13 │ │ └── com │ │ │ └── typesafe │ │ │ └── play │ │ │ └── docs │ │ │ └── sbtplugin │ │ │ ├── PlayDocsPluginCompat.scala │ │ │ └── PlayDocsValidationCompat.scala │ │ ├── scala-sbt-1.0 │ │ └── com │ │ │ └── typesafe │ │ │ └── play │ │ │ └── docs │ │ │ └── sbtplugin │ │ │ ├── Compat.scala │ │ │ ├── PlayDocsPluginCompat.scala │ │ │ └── PlayDocsValidationCompat.scala │ │ ├── scala │ │ └── com │ │ │ └── typesafe │ │ │ └── play │ │ │ └── docs │ │ │ └── sbtplugin │ │ │ ├── PlayDocsPlugin.scala │ │ │ ├── PlayDocsValidation.scala │ │ │ └── Version.scala │ │ └── twirl │ │ └── com │ │ └── typesafe │ │ └── play │ │ └── docs │ │ └── sbtplugin │ │ └── translationReport.scala.html ├── play-docs │ └── src │ │ └── main │ │ ├── java │ │ └── play │ │ │ └── docs │ │ │ └── BuildDocHandlerFactory.java │ │ └── scala │ │ └── play │ │ └── docs │ │ ├── AggregateFileRepository.scala │ │ ├── DocServerStart.scala │ │ └── DocumentationHandler.scala ├── routes-compiler │ └── src │ │ ├── main │ │ ├── scala │ │ │ └── play │ │ │ │ └── routes │ │ │ │ └── compiler │ │ │ │ ├── RoutesCompiler.scala │ │ │ │ ├── RoutesFileParser.scala │ │ │ │ ├── RoutesGenerator.scala │ │ │ │ ├── RoutesModels.scala │ │ │ │ ├── ScalaFormat.scala │ │ │ │ └── templates │ │ │ │ └── package.scala │ │ └── twirl │ │ │ └── play │ │ │ └── routes │ │ │ └── compiler │ │ │ ├── inject │ │ │ └── forwardsRouter.scala.twirl │ │ │ └── static │ │ │ ├── forwardsRouter.scala.twirl │ │ │ ├── javaWrappers.scala.twirl │ │ │ ├── javascriptReverseRouter.scala.twirl │ │ │ ├── reverseRouter.scala.twirl │ │ │ └── routesPrefix.scala.twirl │ │ └── test │ │ ├── resources │ │ ├── complexNames.routes │ │ ├── complexTypes.routes │ │ ├── duplicateHandlers.routes │ │ ├── generating.routes │ │ └── logback-test.xml │ │ └── scala │ │ └── play │ │ └── routes │ │ └── compiler │ │ ├── RoutesCompilerSpec.scala │ │ ├── RoutesFileParserSpec.scala │ │ └── templates │ │ └── TemplatesSpec.scala ├── run-support │ └── src │ │ ├── main │ │ ├── java │ │ │ └── play │ │ │ │ └── runsupport │ │ │ │ └── classloader │ │ │ │ ├── ApplicationClassLoaderProvider.java │ │ │ │ └── DelegatingClassLoader.java │ │ └── scala │ │ │ └── play │ │ │ └── runsupport │ │ │ ├── AssetsClassLoader.scala │ │ │ ├── Colors.scala │ │ │ ├── DelegatedResourcesClassLoader.scala │ │ │ ├── NamedURLClassLoader.scala │ │ │ ├── Reloader.scala │ │ │ ├── RunHook.scala │ │ │ └── ServerStartException.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── play │ │ └── runsupport │ │ └── FilterArgsSpec.scala └── sbt-plugin │ └── src │ ├── main │ ├── scala-sbt-0.13 │ │ └── play │ │ │ └── sbt │ │ │ ├── PlayExceptions.scala │ │ │ ├── PlayImportCompat.scala │ │ │ ├── PlayInternalKeysCompat.scala │ │ │ ├── PlaySettingsCompat.scala │ │ │ ├── routes │ │ │ └── RoutesCompilerCompat.scala │ │ │ ├── run │ │ │ ├── PlayReload.scala │ │ │ └── PlayRunCompat.scala │ │ │ └── test │ │ │ └── MediatorWorkaroundPluginCompat.scala │ ├── scala-sbt-1.0 │ │ └── play │ │ │ └── sbt │ │ │ ├── PlayExceptions.scala │ │ │ ├── PlayImportCompat.scala │ │ │ ├── PlayInternalKeysCompat.scala │ │ │ ├── PlaySettingsCompat.scala │ │ │ ├── routes │ │ │ └── RoutesCompilerCompat.scala │ │ │ ├── run │ │ │ ├── PlayReload.scala │ │ │ ├── PlayRunCompat.scala │ │ │ └── PlaySource.scala │ │ │ └── test │ │ │ └── MediatorWorkaroundPluginCompat.scala │ └── scala │ │ └── play │ │ └── sbt │ │ ├── ApplicationSecretGenerator.scala │ │ ├── Colors.scala │ │ ├── Play.scala │ │ ├── PlayCommands.scala │ │ ├── PlayFilters.scala │ │ ├── PlayImport.scala │ │ ├── PlayInteractionMode.scala │ │ ├── PlayInternalKeys.scala │ │ ├── PlayLayoutPlugin.scala │ │ ├── PlayLogback.scala │ │ ├── PlayRunHook.scala │ │ ├── PlaySettings.scala │ │ ├── routes │ │ └── RoutesCompiler.scala │ │ ├── run │ │ ├── PlayRun.scala │ │ └── package.scala │ │ └── test │ │ └── MediatorWorkaroundPlugin.scala │ ├── sbt-test │ ├── play-sbt-plugin │ │ ├── basic-service-with-routes-file │ │ │ ├── README │ │ │ ├── build.sbt │ │ │ ├── project │ │ │ │ ├── Build.scala │ │ │ │ └── plugins.sbt │ │ │ ├── src │ │ │ │ └── main │ │ │ │ │ ├── resources │ │ │ │ │ ├── application.conf │ │ │ │ │ └── routes │ │ │ │ │ └── scala │ │ │ │ │ └── controllers │ │ │ │ │ └── HomeController.scala │ │ │ └── test │ │ ├── basic-service │ │ │ ├── README │ │ │ ├── build.sbt │ │ │ ├── project │ │ │ │ ├── Build.scala │ │ │ │ └── plugins.sbt │ │ │ ├── src │ │ │ │ └── main │ │ │ │ │ ├── resources │ │ │ │ │ └── application.conf │ │ │ │ │ └── scala │ │ │ │ │ ├── controllers │ │ │ │ │ └── HomeController.scala │ │ │ │ │ └── router │ │ │ │ │ └── Routes.scala │ │ │ └── test │ │ ├── dev-mode │ │ │ ├── app │ │ │ │ ├── Module.scala │ │ │ │ ├── assets │ │ │ │ │ └── main.less │ │ │ │ └── controllers │ │ │ │ │ └── Application.scala │ │ │ ├── build.sbt │ │ │ ├── changes │ │ │ │ ├── Application.scala.1 │ │ │ │ ├── Application.scala.2 │ │ │ │ ├── Application.scala.3 │ │ │ │ ├── application.conf.1 │ │ │ │ ├── main.less.1 │ │ │ │ ├── new.css │ │ │ │ ├── new.css.1 │ │ │ │ ├── some.css.0 │ │ │ │ ├── some.css.1 │ │ │ │ ├── some.txt.0 │ │ │ │ └── some.txt.1 │ │ │ ├── conf │ │ │ │ ├── application.conf │ │ │ │ └── routes │ │ │ ├── project │ │ │ │ ├── Build.scala │ │ │ │ ├── plugins.sbt │ │ │ │ ├── scala-sbt-0.13 │ │ │ │ │ └── Compat.scala │ │ │ │ └── scala-sbt-1.0 │ │ │ │ │ └── Compat.scala │ │ │ ├── public │ │ │ │ ├── a │ │ │ │ │ └── some.txt │ │ │ │ ├── b │ │ │ │ │ └── some.txt │ │ │ │ └── css │ │ │ │ │ └── some.css │ │ │ └── test │ │ ├── distribution-without-documentation │ │ │ ├── README │ │ │ ├── app │ │ │ │ └── controllers │ │ │ │ │ └── Application.scala │ │ │ ├── build.sbt │ │ │ ├── conf │ │ │ │ ├── application.conf │ │ │ │ └── routes │ │ │ ├── project │ │ │ │ └── plugins.sbt │ │ │ └── test │ │ ├── distribution │ │ │ ├── README │ │ │ ├── app │ │ │ │ ├── assets │ │ │ │ │ └── main.less │ │ │ │ ├── controllers │ │ │ │ │ └── Application.scala │ │ │ │ └── views │ │ │ │ │ ├── index.scala.html │ │ │ │ │ └── main.scala.html │ │ │ ├── build.sbt │ │ │ ├── conf │ │ │ │ ├── META-INF │ │ │ │ │ └── persistence.xml │ │ │ │ ├── alternate.conf │ │ │ │ ├── application.conf │ │ │ │ └── routes │ │ │ ├── dist │ │ │ │ ├── SomeFile.txt │ │ │ │ └── SomeFolder │ │ │ │ │ └── SomeOtherFile.txt │ │ │ ├── project │ │ │ │ └── plugins.sbt │ │ │ ├── public │ │ │ │ ├── images │ │ │ │ │ └── favicon.png │ │ │ │ ├── javascripts │ │ │ │ │ └── jquery-2.2.0.min.js │ │ │ │ └── stylesheets │ │ │ │ │ └── main.css │ │ │ └── test │ │ ├── generated-keystore │ │ │ ├── app │ │ │ │ ├── controllers │ │ │ │ │ └── HomeController.scala │ │ │ │ └── router │ │ │ │ │ └── Routes.scala │ │ │ ├── build.sbt │ │ │ ├── conf │ │ │ │ └── application.conf │ │ │ ├── project │ │ │ │ ├── Build.scala │ │ │ │ └── plugins.sbt │ │ │ └── test │ │ ├── multiproject-assets │ │ │ ├── app │ │ │ │ └── assets │ │ │ │ │ └── main.less │ │ │ ├── build.sbt │ │ │ ├── module │ │ │ │ ├── app │ │ │ │ │ └── assets │ │ │ │ │ │ └── module.less │ │ │ │ ├── build.sbt │ │ │ │ └── public │ │ │ │ │ └── empty.txt │ │ │ ├── project │ │ │ │ └── plugins.sbt │ │ │ ├── public │ │ │ │ └── empty.txt │ │ │ └── test │ │ ├── multiproject │ │ │ ├── app │ │ │ │ ├── Root.scala │ │ │ │ └── assets │ │ │ │ │ └── main.less │ │ │ ├── build.sbt │ │ │ ├── nonplaymodule │ │ │ │ └── src │ │ │ │ │ └── main │ │ │ │ │ ├── resources │ │ │ │ │ └── empty.txt │ │ │ │ │ └── scala │ │ │ │ │ └── NonPlayModule.scala │ │ │ ├── playmodule │ │ │ │ └── app │ │ │ │ │ ├── PlayModule.scala │ │ │ │ │ └── assets │ │ │ │ │ └── module.less │ │ │ ├── project │ │ │ │ └── plugins.sbt │ │ │ ├── public │ │ │ │ └── empty.txt │ │ │ ├── test │ │ │ └── transitive │ │ │ │ └── app │ │ │ │ └── Transitive.scala │ │ ├── nested-secret │ │ │ ├── README │ │ │ ├── build.sbt │ │ │ ├── conf │ │ │ │ └── application.conf │ │ │ ├── project │ │ │ │ └── plugins.sbt │ │ │ └── test │ │ ├── play-position-mapper │ │ │ ├── app │ │ │ │ └── views │ │ │ │ │ └── index.scala.html │ │ │ ├── build.sbt │ │ │ ├── conf │ │ │ │ └── routes │ │ │ ├── project │ │ │ │ ├── plugins.sbt │ │ │ │ ├── scala-sbt-0.13 │ │ │ │ │ └── Common.scala │ │ │ │ └── scala-sbt-1.0 │ │ │ │ │ └── Common.scala │ │ │ └── test │ │ └── secret │ │ │ ├── README │ │ │ ├── build.sbt │ │ │ ├── conf │ │ │ └── application.conf │ │ │ ├── project │ │ │ └── plugins.sbt │ │ │ └── test │ └── routes-compiler-plugin │ │ ├── aggregate-reverse-routes │ │ ├── a │ │ │ ├── app │ │ │ │ └── controllers │ │ │ │ │ └── a │ │ │ │ │ └── A.scala │ │ │ └── conf │ │ │ │ └── a.routes │ │ ├── b │ │ │ ├── app │ │ │ │ └── controllers │ │ │ │ │ └── b │ │ │ │ │ └── B.scala │ │ │ └── conf │ │ │ │ └── b.routes │ │ ├── build.sbt │ │ ├── c │ │ │ ├── app │ │ │ │ └── controllers │ │ │ │ │ └── c │ │ │ │ │ └── C.scala │ │ │ └── conf │ │ │ │ └── c.routes │ │ ├── conf │ │ │ └── routes │ │ ├── nonplay │ │ │ └── src │ │ │ │ └── main │ │ │ │ └── scala │ │ │ │ └── nonplay.NonPlay.scala │ │ ├── project │ │ │ └── plugins.sbt │ │ └── test │ │ ├── incremental-compilation │ │ ├── a.routes │ │ ├── a.routes.1 │ │ ├── b.routes │ │ ├── b.routes.1 │ │ ├── build.sbt │ │ ├── project │ │ │ └── plugins.sbt │ │ └── test │ │ ├── injected-routes-compilation │ │ ├── app │ │ │ ├── controllers │ │ │ │ ├── Application.scala │ │ │ │ ├── InstanceController.scala │ │ │ │ ├── module │ │ │ │ │ └── ModuleController.scala │ │ │ │ └── πø$7ß.scala │ │ │ ├── models │ │ │ │ └── UserId.scala │ │ │ └── utils │ │ │ │ └── JavaScriptRouterGenerator.scala │ │ ├── build.sbt │ │ ├── conf │ │ │ ├── module.routes │ │ │ └── routes │ │ ├── project │ │ │ ├── plugins.sbt │ │ │ ├── scala-sbt-0.13 │ │ │ │ └── Common.scala │ │ │ └── scala-sbt-1.0 │ │ │ │ └── Common.scala │ │ ├── public │ │ │ └── css │ │ │ │ ├── abcd1234-main.css │ │ │ │ ├── abcd1234-minmain-min.css │ │ │ │ ├── main.css │ │ │ │ ├── main.css.md5 │ │ │ │ ├── minmain-min.css │ │ │ │ ├── minmain-min.css.md5 │ │ │ │ ├── minmain.css │ │ │ │ ├── nonfingerprinted-minmain-min.css │ │ │ │ ├── nonfingerprinted-minmain.css │ │ │ │ └── nonfingerprinted.css │ │ ├── test │ │ └── tests │ │ │ ├── RouterSpec.scala │ │ │ └── assets │ │ │ └── JavaScriptRouterSpec.js │ │ ├── routes-compilation │ │ ├── app │ │ │ ├── controllers │ │ │ │ ├── Application.scala │ │ │ │ ├── InstanceController.scala │ │ │ │ ├── module │ │ │ │ │ └── ModuleController.scala │ │ │ │ └── πø$7ß.scala │ │ │ ├── models │ │ │ │ └── UserId.scala │ │ │ └── utils │ │ │ │ └── JavaScriptRouterGenerator.scala │ │ ├── build.sbt │ │ ├── conf │ │ │ ├── module.routes │ │ │ └── routes │ │ ├── project │ │ │ ├── plugins.sbt │ │ │ ├── scala-sbt-0.13 │ │ │ │ └── Common.scala │ │ │ └── scala-sbt-1.0 │ │ │ │ └── Common.scala │ │ ├── public │ │ │ └── css │ │ │ │ ├── abcd1234-main.css │ │ │ │ ├── abcd1234-minmain-min.css │ │ │ │ ├── main.css │ │ │ │ ├── main.css.md5 │ │ │ │ ├── minmain-min.css │ │ │ │ ├── minmain-min.css.md5 │ │ │ │ ├── minmain.css │ │ │ │ ├── nonfingerprinted-minmain-min.css │ │ │ │ ├── nonfingerprinted-minmain.css │ │ │ │ └── nonfingerprinted.css │ │ ├── test │ │ └── tests │ │ │ ├── RouterSpec.scala │ │ │ └── assets │ │ │ └── JavaScriptRouterSpec.js │ │ └── source-mapping │ │ ├── Application.scala │ │ ├── build.sbt │ │ ├── project │ │ ├── plugins.sbt │ │ ├── scala-sbt-0.13 │ │ │ └── Common.scala │ │ └── scala-sbt-1.0 │ │ │ └── Common.scala │ │ ├── routes │ │ └── test │ └── test │ ├── resources │ └── logback-test.xml │ └── scala │ └── play │ └── sbt │ ├── ApplicationSecretGeneratorSpec.scala │ └── PlayRunHookSpec.scala ├── documentation ├── .scalafmt.conf ├── README.md ├── addMarkdownCopyright ├── build.sbt ├── manual │ ├── Home.md │ ├── LatestRelease.md │ ├── ModuleDirectory.md │ ├── about │ │ ├── Philosophy.md │ │ ├── PlayUserGroups.md │ │ └── index.toc │ ├── gettingStarted │ │ ├── Anatomy.md │ │ ├── IDE.md │ │ ├── Installing.md │ │ ├── Introduction.md │ │ ├── LearningExamples.md │ │ ├── NewApplication.md │ │ ├── PlayConsole.md │ │ ├── Requirements.md │ │ ├── code │ │ │ └── PlayConsole.scala │ │ ├── images │ │ │ ├── eclipse.png │ │ │ ├── errorPage.png │ │ │ └── idea.png │ │ └── index.toc │ ├── hacking │ │ ├── BuildingFromSource.md │ │ ├── Documentation.md │ │ ├── Issues.md │ │ ├── Repositories.md │ │ ├── ThirdPartyTools.md │ │ ├── Translations.md │ │ ├── WorkingWithGit.md │ │ ├── images │ │ │ ├── TravisCI-Full-Color.png │ │ │ └── yourkit.png │ │ └── index.toc │ ├── index.toc │ ├── releases │ │ ├── Releases.md │ │ ├── index.toc │ │ ├── release21 │ │ │ ├── Highlights21.md │ │ │ ├── Migration21.md │ │ │ └── index.toc │ │ ├── release22 │ │ │ ├── Highlights22.md │ │ │ ├── Migration22.md │ │ │ └── index.toc │ │ ├── release23 │ │ │ ├── Highlights23.md │ │ │ ├── Migration23.md │ │ │ └── index.toc │ │ ├── release24 │ │ │ ├── Highlights24.md │ │ │ ├── ReactiveStreamsIntegration.md │ │ │ ├── index.toc │ │ │ └── migration24 │ │ │ │ ├── Anorm.md │ │ │ │ ├── GlobalSettings.md │ │ │ │ ├── Migration24.md │ │ │ │ ├── PluginsToModules.md │ │ │ │ ├── code24 │ │ │ │ ├── MyComponent.java │ │ │ │ ├── MyComponent.scala │ │ │ │ ├── MyModule.java │ │ │ │ └── MyModule.scala │ │ │ │ └── index.toc │ │ ├── release25 │ │ │ ├── Highlights25.md │ │ │ ├── index.toc │ │ │ └── migration25 │ │ │ │ ├── CryptoMigration25.md │ │ │ │ ├── JavaMigration25.md │ │ │ │ ├── Migration25.md │ │ │ │ ├── StreamsMigration25.md │ │ │ │ └── index.toc │ │ └── release26 │ │ │ ├── Highlights26.md │ │ │ ├── index.toc │ │ │ └── migration26 │ │ │ ├── CacheMigration26.md │ │ │ ├── JPAMigration26.md │ │ │ ├── JavaConfigMigration26.md │ │ │ ├── MessagesMigration26.md │ │ │ ├── Migration26.md │ │ │ ├── WSMigration26.md │ │ │ └── index.toc │ ├── tutorial │ │ ├── HelloWorldTutorial.md │ │ ├── ImplementingHelloWorld.md │ │ ├── PlayApplicationOverview.md │ │ ├── Tutorials.md │ │ ├── code │ │ │ ├── javaguide │ │ │ │ └── hello │ │ │ │ │ ├── HelloController.java │ │ │ │ │ ├── hello.scala.html │ │ │ │ │ ├── helloName.scala.html │ │ │ │ │ ├── index.scala.html │ │ │ │ │ └── main.scala.html │ │ │ ├── routes │ │ │ └── scalaguide │ │ │ │ └── hello │ │ │ │ └── HelloController.scala │ │ ├── images │ │ │ ├── hello-error.png │ │ │ ├── hello-name.png │ │ │ ├── hello-page.png │ │ │ ├── play-request-response.png │ │ │ └── play-stack.png │ │ └── index.toc │ └── working │ │ ├── commonGuide │ │ ├── Modules.md │ │ ├── assets │ │ │ ├── Assets.md │ │ │ ├── AssetsCoffeeScript.md │ │ │ ├── AssetsJSHint.md │ │ │ ├── AssetsLess.md │ │ │ ├── AssetsOverview.md │ │ │ ├── AssetsSass.md │ │ │ ├── RequireJS-support.md │ │ │ ├── code │ │ │ │ ├── CommonAssets.scala │ │ │ │ ├── ConfiguredAssets.scala │ │ │ │ ├── assets │ │ │ │ │ └── controllers │ │ │ │ │ │ ├── JavaRangeRequestController.java │ │ │ │ │ │ └── RangeRequestController.scala │ │ │ │ ├── common.assets.routes │ │ │ │ └── configured.assets.routes │ │ │ ├── images │ │ │ │ ├── ClosureError.png │ │ │ │ ├── coffeeError.png │ │ │ │ ├── lessError.png │ │ │ │ └── sassError.png │ │ │ └── index.toc │ │ ├── build │ │ │ ├── AggregatingReverseRouters.md │ │ │ ├── Build.md │ │ │ ├── BuildOverview.md │ │ │ ├── CompilationSpeed.md │ │ │ ├── PlayEnhancer.md │ │ │ ├── code │ │ │ │ ├── aggregate.sbt │ │ │ │ ├── build.sbt │ │ │ │ ├── common.build.routes │ │ │ │ ├── cookbook.sbt │ │ │ │ ├── dependencies.sbt │ │ │ │ ├── enhancer.sbt │ │ │ │ ├── javaguide │ │ │ │ │ └── common │ │ │ │ │ │ └── build │ │ │ │ │ │ └── controllers │ │ │ │ │ │ ├── AssetsBuilder.java │ │ │ │ │ │ └── HomeController.java │ │ │ │ ├── runhook.sbt │ │ │ │ └── scalaguide │ │ │ │ │ └── common │ │ │ │ │ └── build │ │ │ │ │ └── controllers │ │ │ │ │ ├── SubProjectAssets.scala │ │ │ │ │ └── SubProjectsAssetsBuilder.scala │ │ │ ├── images │ │ │ │ └── ivy-report.png │ │ │ ├── index.toc │ │ │ ├── sbtCookbook.md │ │ │ ├── sbtDebugging.md │ │ │ ├── sbtDependencies.md │ │ │ ├── sbtSettings.md │ │ │ ├── sbtSubProjects.md │ │ │ └── subprojectError.png │ │ ├── configuration │ │ │ ├── ApplicationSecret.md │ │ │ ├── ConfigFile.md │ │ │ ├── Configuration.md │ │ │ ├── SettingsAkkaHttp.md │ │ │ ├── SettingsJDBC.md │ │ │ ├── SettingsLogger.md │ │ │ ├── SettingsNetty.md │ │ │ ├── SettingsSession.md │ │ │ ├── ThreadPools.md │ │ │ ├── WsCache.md │ │ │ ├── WsSSL.md │ │ │ ├── code │ │ │ │ ├── Configuration.scala │ │ │ │ ├── CustomAkkaHttpServer.scala │ │ │ │ ├── JavaLog4JLoggerConfigurator.java │ │ │ │ ├── Log4j2LoggerConfigurator.scala │ │ │ │ ├── ThreadPools.scala │ │ │ │ ├── application.conf │ │ │ │ ├── build.sbt │ │ │ │ ├── detailedtopics │ │ │ │ │ ├── ThreadPoolsJava.java │ │ │ │ │ └── httpec │ │ │ │ │ │ └── MyController.java │ │ │ │ └── javaguide │ │ │ │ │ └── configuration │ │ │ │ │ └── MyController.java │ │ │ └── index.toc │ │ ├── database │ │ │ ├── Databases.md │ │ │ ├── Developing-with-the-H2-Database.md │ │ │ ├── Evolutions.md │ │ │ ├── code │ │ │ │ └── CompileTimeDIEvolutions.scala │ │ │ ├── images │ │ │ │ ├── evolutions.png │ │ │ │ └── evolutionsError.png │ │ │ └── index.toc │ │ ├── filters │ │ │ ├── AllowedHostsFilter.md │ │ │ ├── CorsFilter.md │ │ │ ├── Filters.md │ │ │ ├── GzipEncoding.md │ │ │ ├── RedirectHttpsFilter.md │ │ │ ├── SecurityHeaders.md │ │ │ ├── code │ │ │ │ ├── GzipEncoding.scala │ │ │ │ ├── SecurityHeaders.scala │ │ │ │ ├── detailedtopics │ │ │ │ │ └── configuration │ │ │ │ │ │ └── gzipencoding │ │ │ │ │ │ └── CustomFilters.java │ │ │ │ ├── filters.sbt │ │ │ │ ├── javaguide │ │ │ │ │ └── detailed │ │ │ │ │ │ └── filters │ │ │ │ │ │ ├── Filters.java │ │ │ │ │ │ ├── FiltersTest.java │ │ │ │ │ │ ├── add │ │ │ │ │ │ └── MyAppComponents.java │ │ │ │ │ │ ├── remove │ │ │ │ │ │ └── MyAppComponents.java │ │ │ │ │ │ └── removeAll │ │ │ │ │ │ └── MyAppComponents.java │ │ │ │ └── scalaguide │ │ │ │ │ └── detailed │ │ │ │ │ └── filters │ │ │ │ │ ├── FiltersComponents.scala │ │ │ │ │ ├── ScalaFilters.scala │ │ │ │ │ └── UserControllerSpec.scala │ │ │ └── index.toc │ │ ├── index.toc │ │ ├── production │ │ │ ├── ConfiguringHttps.md │ │ │ ├── Deploying.md │ │ │ ├── HTTPServer.md │ │ │ ├── Production.md │ │ │ ├── ProductionConfiguration.md │ │ │ ├── cloud │ │ │ │ ├── Deploying-Boxfuse.md │ │ │ │ ├── Deploying-CleverCloud.md │ │ │ │ ├── Deploying-CloudFoundry.md │ │ │ │ ├── DeployingCloud.md │ │ │ │ ├── ProductionHeroku.md │ │ │ │ └── index.toc │ │ │ ├── code │ │ │ │ ├── assembly.sbt │ │ │ │ ├── debian.sbt │ │ │ │ ├── javaguide │ │ │ │ │ └── CustomSSLEngineProvider.java │ │ │ │ ├── production.sbt │ │ │ │ ├── rpm.sbt │ │ │ │ └── scalaguide │ │ │ │ │ └── CustomSSLEngineProvider.scala │ │ │ └── index.toc │ │ ├── schedule │ │ │ ├── ScheduledTasks.md │ │ │ ├── code │ │ │ │ ├── javaguide │ │ │ │ │ └── scheduling │ │ │ │ │ │ ├── CodeBlockOnceTask.java │ │ │ │ │ │ ├── CodeBlockTask.java │ │ │ │ │ │ ├── MyActorTask.java │ │ │ │ │ │ ├── MyBuiltInComponentsFromContext.java │ │ │ │ │ │ ├── TasksCustomExecutionContext.java │ │ │ │ │ │ └── TasksModule.java │ │ │ │ └── scalaguide │ │ │ │ │ └── scheduling │ │ │ │ │ ├── CodeBlockTask.scala │ │ │ │ │ ├── MyActorTask.scala │ │ │ │ │ ├── MyBuiltInComponentsFromContext.scala │ │ │ │ │ ├── TasksCustomExecutionContext.scala │ │ │ │ │ └── TasksModule.scala │ │ │ └── index.toc │ │ └── server │ │ │ ├── AkkaHttpServer.md │ │ │ ├── NettyServer.md │ │ │ ├── Server.md │ │ │ ├── code │ │ │ ├── SomeJavaController.java │ │ │ └── SomeScalaController.scala │ │ │ └── index.toc │ │ ├── index.toc │ │ ├── javaGuide │ │ ├── advanced │ │ │ ├── JavaAdvanced.md │ │ │ ├── embedding │ │ │ │ ├── JavaEmbeddingPlay.md │ │ │ │ ├── code │ │ │ │ │ └── javaguide │ │ │ │ │ │ └── advanced │ │ │ │ │ │ └── embedding │ │ │ │ │ │ └── JavaEmbeddingPlay.java │ │ │ │ └── index.toc │ │ │ ├── extending │ │ │ │ ├── JavaPlayModules.md │ │ │ │ ├── JavaPlugins.md │ │ │ │ ├── code │ │ │ │ │ └── javaguide │ │ │ │ │ │ └── advanced │ │ │ │ │ │ └── extending │ │ │ │ │ │ ├── JavaExtendingPlay.java │ │ │ │ │ │ ├── MyApi.java │ │ │ │ │ │ └── MyModule.java │ │ │ │ └── index.toc │ │ │ ├── index.toc │ │ │ └── routing │ │ │ │ ├── JavaJavascriptRouter.md │ │ │ │ ├── JavaRoutingDsl.md │ │ │ │ ├── RequestBinders.md │ │ │ │ ├── code │ │ │ │ ├── AppLoader.java │ │ │ │ ├── GuiceAppLoader.java │ │ │ │ ├── GuiceRouterProvider.java │ │ │ │ ├── javaEmbeddedRouter.scala.html │ │ │ │ ├── javaguide.binder.routes │ │ │ │ └── javaguide │ │ │ │ │ ├── advanced │ │ │ │ │ └── routing │ │ │ │ │ │ └── JavaRoutingDsl.java │ │ │ │ │ └── binder │ │ │ │ │ ├── controllers │ │ │ │ │ ├── Application.java │ │ │ │ │ ├── BinderApplication.java │ │ │ │ │ └── Users.java │ │ │ │ │ └── models │ │ │ │ │ ├── AgeRange.java │ │ │ │ │ └── User.java │ │ │ │ └── index.toc │ │ ├── code │ │ │ └── MockJavaAction.scala │ │ ├── index.toc │ │ └── main │ │ │ ├── JavaHome.md │ │ │ ├── akka │ │ │ ├── JavaAkka.md │ │ │ ├── code │ │ │ │ ├── javaguide.akkaupdate.sbt │ │ │ │ └── javaguide │ │ │ │ │ └── akka │ │ │ │ │ ├── ConfiguredActor.java │ │ │ │ │ ├── ConfiguredActorProtocol.java │ │ │ │ │ ├── ConfiguredChildActor.java │ │ │ │ │ ├── ConfiguredChildActorProtocol.java │ │ │ │ │ ├── HelloActor.java │ │ │ │ │ ├── HelloActorProtocol.java │ │ │ │ │ ├── JavaAkka.java │ │ │ │ │ ├── ParentActor.java │ │ │ │ │ ├── ParentActorProtocol.java │ │ │ │ │ ├── akka.conf │ │ │ │ │ ├── ask │ │ │ │ │ └── Application.java │ │ │ │ │ ├── async │ │ │ │ │ └── Application.java │ │ │ │ │ ├── factorymodules │ │ │ │ │ └── MyModule.java │ │ │ │ │ ├── inject │ │ │ │ │ └── Application.java │ │ │ │ │ └── modules │ │ │ │ │ └── MyModule.java │ │ │ └── index.toc │ │ │ ├── application │ │ │ ├── JavaApplication.md │ │ │ ├── JavaErrorHandling.md │ │ │ ├── JavaEssentialAction.md │ │ │ ├── JavaHttpFilters.md │ │ │ ├── code │ │ │ │ └── javaguide │ │ │ │ │ └── application │ │ │ │ │ ├── def │ │ │ │ │ └── ErrorHandler.java │ │ │ │ │ ├── httpfilters │ │ │ │ │ ├── EssentialLoggingFilter.java │ │ │ │ │ ├── Filters.java │ │ │ │ │ ├── LoggingFilter.java │ │ │ │ │ └── RoutedLoggingFilter.java │ │ │ │ │ └── root │ │ │ │ │ └── ErrorHandler.java │ │ │ └── index.toc │ │ │ ├── async │ │ │ ├── JavaAsync.md │ │ │ ├── JavaComet.md │ │ │ ├── JavaStream.md │ │ │ ├── JavaWebSockets.md │ │ │ ├── code │ │ │ │ ├── javaguide.async.routes │ │ │ │ └── javaguide │ │ │ │ │ └── async │ │ │ │ │ ├── JavaAsync.java │ │ │ │ │ ├── JavaComet.java │ │ │ │ │ ├── JavaStream.java │ │ │ │ │ ├── JavaWebSockets.java │ │ │ │ │ ├── MyWebSocketActor.java │ │ │ │ │ ├── controllers │ │ │ │ │ ├── Application.java │ │ │ │ │ └── MyExecutionContext.java │ │ │ │ │ └── websocket │ │ │ │ │ └── HomeController.java │ │ │ └── index.toc │ │ │ ├── cache │ │ │ ├── JavaCache.md │ │ │ ├── code │ │ │ │ ├── cache.sbt │ │ │ │ └── javaguide │ │ │ │ │ └── cache │ │ │ │ │ ├── JavaCache.java │ │ │ │ │ ├── inject │ │ │ │ │ └── Application.java │ │ │ │ │ └── qualified │ │ │ │ │ └── Application.java │ │ │ └── index.toc │ │ │ ├── config │ │ │ ├── JavaConfig.md │ │ │ ├── code │ │ │ │ └── javaguide │ │ │ │ │ └── config │ │ │ │ │ └── MyController.java │ │ │ └── index.toc │ │ │ ├── dependencyinjection │ │ │ ├── JavaCompileTimeDependencyInjection.md │ │ │ ├── JavaDependencyInjection.md │ │ │ ├── code │ │ │ │ ├── injected.sbt │ │ │ │ ├── javaguide.dependencyinjection.routes │ │ │ │ ├── javaguide.di.routes │ │ │ │ ├── javaguide │ │ │ │ │ ├── dependencyinjection │ │ │ │ │ │ └── controllers │ │ │ │ │ │ │ ├── Assets.java │ │ │ │ │ │ │ └── HomeController.java │ │ │ │ │ └── di │ │ │ │ │ │ ├── CurrentSharePrice.java │ │ │ │ │ │ ├── EnglishHello.java │ │ │ │ │ │ ├── GermanHello.java │ │ │ │ │ │ ├── Hello.java │ │ │ │ │ │ ├── JavaDependencyInjection.java │ │ │ │ │ │ ├── MessageQueue.java │ │ │ │ │ │ ├── MessageQueueConnection.java │ │ │ │ │ │ ├── components │ │ │ │ │ │ └── CompileTimeDependencyInjection.java │ │ │ │ │ │ ├── constructor │ │ │ │ │ │ ├── controllers │ │ │ │ │ │ └── Application.java │ │ │ │ │ │ ├── field │ │ │ │ │ │ └── MyComponent.java │ │ │ │ │ │ ├── guice │ │ │ │ │ │ ├── CircularDependencies.java │ │ │ │ │ │ ├── CustomApplicationLoader.java │ │ │ │ │ │ ├── Module.java │ │ │ │ │ │ ├── dynamic │ │ │ │ │ │ │ └── Module.java │ │ │ │ │ │ └── eager │ │ │ │ │ │ │ ├── ApplicationStart.java │ │ │ │ │ │ │ ├── Module.java │ │ │ │ │ │ │ └── StartModule.java │ │ │ │ │ │ └── playlib │ │ │ │ │ │ └── HelloModule.java │ │ │ │ └── static.sbt │ │ │ └── index.toc │ │ │ ├── forms │ │ │ ├── JavaCsrf.md │ │ │ ├── JavaFormHelpers.md │ │ │ ├── JavaForms.md │ │ │ ├── code │ │ │ │ ├── javaguide.forms.routes │ │ │ │ └── javaguide │ │ │ │ │ └── forms │ │ │ │ │ ├── FormattersModule.java │ │ │ │ │ ├── FormattersProvider.java │ │ │ │ │ ├── JavaCsrf.java │ │ │ │ │ ├── JavaFormHelpers.scala │ │ │ │ │ ├── JavaForms.java │ │ │ │ │ ├── controllers │ │ │ │ │ └── Application.scala │ │ │ │ │ ├── csrf.scala.html │ │ │ │ │ ├── csrf │ │ │ │ │ └── Filters.java │ │ │ │ │ ├── customconstraint │ │ │ │ │ ├── DBAccessForm.java │ │ │ │ │ ├── ValidatableWithDB.java │ │ │ │ │ ├── ValidateWithDB.java │ │ │ │ │ ├── ValidateWithDBComponents.java │ │ │ │ │ └── ValidateWithDBValidator.java │ │ │ │ │ ├── fullform.scala.html │ │ │ │ │ ├── groups │ │ │ │ │ ├── LoginCheck.java │ │ │ │ │ ├── PartialUserForm.java │ │ │ │ │ └── SignUpCheck.java │ │ │ │ │ ├── groupsequence │ │ │ │ │ └── OrderedChecks.java │ │ │ │ │ ├── helpers.scala.html │ │ │ │ │ ├── html │ │ │ │ │ ├── User.java │ │ │ │ │ ├── UserForm.java │ │ │ │ │ └── routes │ │ │ │ │ │ └── package.scala │ │ │ │ │ ├── myFieldConstructorTemplate.scala.html │ │ │ │ │ ├── u1 │ │ │ │ │ └── User.java │ │ │ │ │ ├── u2 │ │ │ │ │ └── User.java │ │ │ │ │ ├── u3 │ │ │ │ │ └── User.java │ │ │ │ │ ├── view.scala.html │ │ │ │ │ └── withFieldConstructor.scala.html │ │ │ └── index.toc │ │ │ ├── http │ │ │ ├── JavaActionCreator.md │ │ │ ├── JavaActions.md │ │ │ ├── JavaActionsComposition.md │ │ │ ├── JavaBodyParsers.md │ │ │ ├── JavaContentNegotiation.md │ │ │ ├── JavaResponse.md │ │ │ ├── JavaRouting.md │ │ │ ├── JavaSessionFlash.md │ │ │ ├── code │ │ │ │ ├── javaguide.http.routing.defaultcontroller.routes │ │ │ │ ├── javaguide.http.routing.defaultvalue.routes │ │ │ │ ├── javaguide.http.routing.fixed.routes │ │ │ │ ├── javaguide.http.routing.query.routes │ │ │ │ ├── javaguide.http.routing.relative.routes │ │ │ │ ├── javaguide.http.routing.reverse.routes │ │ │ │ ├── javaguide.http.routing.routes │ │ │ │ └── javaguide │ │ │ │ │ ├── ActionCreator.java │ │ │ │ │ └── http │ │ │ │ │ ├── JavaActionCreator.java │ │ │ │ │ ├── JavaActions.java │ │ │ │ │ ├── JavaActionsComposition.java │ │ │ │ │ ├── JavaBodyParsers.java │ │ │ │ │ ├── JavaContentNegotiation.java │ │ │ │ │ ├── JavaErrorHandling.scala │ │ │ │ │ ├── JavaResponse.java │ │ │ │ │ ├── JavaRouting.scala │ │ │ │ │ ├── JavaSessionFlash.java │ │ │ │ │ ├── SimpleHttpRequestHandler.java │ │ │ │ │ ├── full │ │ │ │ │ └── Application.java │ │ │ │ │ ├── routing │ │ │ │ │ ├── controllers │ │ │ │ │ │ ├── Api.java │ │ │ │ │ │ ├── Application.java │ │ │ │ │ │ ├── Clients.java │ │ │ │ │ │ └── Items.java │ │ │ │ │ ├── relative │ │ │ │ │ │ ├── controllers │ │ │ │ │ │ │ └── Relative.java │ │ │ │ │ │ └── views │ │ │ │ │ │ │ ├── hello.html │ │ │ │ │ │ │ └── hello.scala.html │ │ │ │ │ └── reverse │ │ │ │ │ │ └── controllers │ │ │ │ │ │ └── Application.java │ │ │ │ │ └── views │ │ │ │ │ └── index.scala.html │ │ │ ├── images │ │ │ │ └── routesError.png │ │ │ └── index.toc │ │ │ ├── i18n │ │ │ ├── JavaI18N.md │ │ │ ├── code │ │ │ │ └── javaguide │ │ │ │ │ └── i18n │ │ │ │ │ ├── JavaI18N.java │ │ │ │ │ ├── MyService.java │ │ │ │ │ ├── explicitjavatemplate.scala.html │ │ │ │ │ ├── helloscalatemplate.scala.html │ │ │ │ │ ├── hellotemplate.scala.html │ │ │ │ │ ├── messages │ │ │ │ │ ├── messages.en-US │ │ │ │ │ └── messages.fr │ │ │ └── index.toc │ │ │ ├── index.toc │ │ │ ├── json │ │ │ ├── JavaJsonActions.md │ │ │ ├── code │ │ │ │ └── javaguide │ │ │ │ │ └── json │ │ │ │ │ ├── JavaJsonActions.java │ │ │ │ │ ├── JavaJsonCustomObjectMapper.java │ │ │ │ │ └── JavaJsonCustomObjectMapperModule.java │ │ │ └── index.toc │ │ │ ├── logging │ │ │ ├── JavaLogging.md │ │ │ ├── code │ │ │ │ └── javaguide │ │ │ │ │ └── logging │ │ │ │ │ ├── Application.java │ │ │ │ │ ├── JavaLogging.java │ │ │ │ │ ├── JavaMarkerController.java │ │ │ │ │ └── JavaTracerController.java │ │ │ └── index.toc │ │ │ ├── sql │ │ │ ├── JavaDatabase.md │ │ │ ├── JavaJPA.md │ │ │ ├── code │ │ │ │ ├── DatabaseExecutionContext.java │ │ │ │ ├── JPARepository.java │ │ │ │ ├── JavaApplicationDatabase.java │ │ │ │ ├── JavaJdbcConnection.java │ │ │ │ ├── JavaNamedDatabase.java │ │ │ │ └── jpa.sbt │ │ │ ├── images │ │ │ │ └── dbError.png │ │ │ └── index.toc │ │ │ ├── tests │ │ │ ├── JavaFunctionalTest.md │ │ │ ├── JavaTest.md │ │ │ ├── JavaTestingWebServiceClients.md │ │ │ ├── JavaTestingWithDatabases.md │ │ │ ├── JavaTestingWithGuice.md │ │ │ ├── code │ │ │ │ ├── javaguide.tests.databases.sbt │ │ │ │ ├── javaguide.tests.guice.routes │ │ │ │ ├── javaguide.tests.routes │ │ │ │ ├── javaguide │ │ │ │ │ └── tests │ │ │ │ │ │ ├── BrowserFunctionalTest.java │ │ │ │ │ │ ├── ControllerTest.java │ │ │ │ │ │ ├── DatabaseTest.java │ │ │ │ │ │ ├── FakeApplicationTest.java │ │ │ │ │ │ ├── FunctionalTest.java │ │ │ │ │ │ ├── GitHubClient.java │ │ │ │ │ │ ├── GitHubClientTest.java │ │ │ │ │ │ ├── HamcrestTest.java │ │ │ │ │ │ ├── InjectionTest.java │ │ │ │ │ │ ├── JavaTestingWebServiceClients.java │ │ │ │ │ │ ├── JavaTestingWithDatabases.java │ │ │ │ │ │ ├── MessagesTest.java │ │ │ │ │ │ ├── MockitoTest.java │ │ │ │ │ │ ├── ModelTest.java │ │ │ │ │ │ ├── ServerFunctionalTest.java │ │ │ │ │ │ ├── SimpleTest.java │ │ │ │ │ │ ├── controllers │ │ │ │ │ │ └── HomeController.java │ │ │ │ │ │ └── index.scala.html │ │ │ │ └── tests │ │ │ │ │ └── guice │ │ │ │ │ ├── Component.java │ │ │ │ │ ├── ComponentModule.java │ │ │ │ │ ├── DefaultComponent.java │ │ │ │ │ ├── JavaGuiceApplicationBuilderTest.java │ │ │ │ │ ├── MockComponent.java │ │ │ │ │ └── controllers │ │ │ │ │ └── Application.java │ │ │ └── index.toc │ │ │ ├── upload │ │ │ ├── JavaFileUpload.md │ │ │ ├── code │ │ │ │ ├── JavaFileUpload.java │ │ │ │ └── JavaFileUploadTest.java │ │ │ └── index.toc │ │ │ ├── ws │ │ │ ├── JavaOAuth.md │ │ │ ├── JavaOpenID.md │ │ │ ├── JavaWS.md │ │ │ ├── code │ │ │ │ ├── javaguide.ws.routes │ │ │ │ ├── javaguide │ │ │ │ │ └── ws │ │ │ │ │ │ ├── JavaWS.java │ │ │ │ │ │ ├── JavaWSSpec.scala │ │ │ │ │ │ ├── MyClient.java │ │ │ │ │ │ ├── MyController.java │ │ │ │ │ │ ├── Standalone.java │ │ │ │ │ │ ├── StandaloneWithConfig.java │ │ │ │ │ │ ├── controllers │ │ │ │ │ │ ├── OpenIDController.java │ │ │ │ │ │ └── Twitter.java │ │ │ │ │ │ └── login.scala.html │ │ │ │ ├── javaopenid.sbt │ │ │ │ └── javaws.sbt │ │ │ └── index.toc │ │ │ └── xml │ │ │ ├── JavaXmlRequests.md │ │ │ ├── code │ │ │ └── javaguide │ │ │ │ └── xml │ │ │ │ └── JavaXmlRequests.java │ │ │ └── index.toc │ │ └── scalaGuide │ │ ├── advanced │ │ ├── ScalaAdvanced.md │ │ ├── embedding │ │ │ ├── ScalaEmbeddingPlayAkkaHttp.md │ │ │ ├── ScalaEmbeddingPlayNetty.md │ │ │ ├── code │ │ │ │ ├── ScalaAkkaEmbeddingPlay.scala │ │ │ │ └── ScalaNettyEmbeddingPlay.scala │ │ │ └── index.toc │ │ ├── extending │ │ │ ├── ScalaPlayModules.md │ │ │ ├── ScalaPlugins.md │ │ │ ├── code │ │ │ │ └── ScalaExtendingPlay.scala │ │ │ └── index.toc │ │ ├── index.toc │ │ ├── iteratees │ │ │ ├── Enumeratees.md │ │ │ ├── Enumerators.md │ │ │ ├── Iteratees.md │ │ │ └── index.toc │ │ └── routing │ │ │ ├── ScalaJavascriptRouting.md │ │ │ ├── ScalaRequestBinders.md │ │ │ ├── ScalaSirdRouter.md │ │ │ ├── code │ │ │ ├── ApiRouter.scala │ │ │ ├── ScalaSimpleRouter.scala │ │ │ ├── ScalaSirdRouter.scala │ │ │ ├── SirdAppLoader.scala │ │ │ ├── scalaEmbeddedRouter.scala.html │ │ │ ├── scalaguide.binder.routes │ │ │ └── scalaguide │ │ │ │ └── binder │ │ │ │ ├── controllers │ │ │ │ ├── BinderApplication.scala │ │ │ │ └── Users.scala │ │ │ │ └── models │ │ │ │ ├── AgeRange.scala │ │ │ │ └── User.scala │ │ │ └── index.toc │ │ ├── index.toc │ │ └── main │ │ ├── ScalaHome.md │ │ ├── akka │ │ ├── ScalaAkka.md │ │ ├── code │ │ │ ├── ScalaAkka.scala │ │ │ └── scalaguide.akkaupdate.sbt │ │ └── index.toc │ │ ├── application │ │ ├── ScalaApplication.md │ │ ├── ScalaEssentialAction.md │ │ ├── ScalaHttpFilters.md │ │ ├── ScalaHttpRequestHandlers.md │ │ ├── code │ │ │ ├── AccumulatorFlowFilter.scala │ │ │ ├── EssentialFilter.scala │ │ │ ├── FiltersRouting.scala │ │ │ ├── ScalaHttpFilters.scala │ │ │ └── ScalaHttpRequestHandlers.scala │ │ └── index.toc │ │ ├── async │ │ ├── ScalaAsync.md │ │ ├── ScalaComet.md │ │ ├── ScalaStream.md │ │ ├── ScalaWebSockets.md │ │ ├── code │ │ │ ├── ScalaAsync.scala │ │ │ ├── ScalaComet.scala │ │ │ ├── ScalaWebSockets.scala │ │ │ └── scalaguide │ │ │ │ └── async │ │ │ │ └── scalastream │ │ │ │ └── ScalaStream.scala │ │ └── index.toc │ │ ├── cache │ │ ├── ScalaCache.md │ │ ├── code │ │ │ ├── ScalaCache.scala │ │ │ └── cache.sbt │ │ └── index.toc │ │ ├── config │ │ ├── ScalaConfig.md │ │ ├── code │ │ │ └── ScalaConfig.scala │ │ └── index.toc │ │ ├── dependencyinjection │ │ ├── ScalaCompileTimeDependencyInjection.md │ │ ├── ScalaDependencyInjection.md │ │ ├── code │ │ │ ├── CompileTimeDependencyInjection.scala │ │ │ ├── RuntimeDependencyInjection.scala │ │ │ ├── injected.sbt │ │ │ ├── scalaguide.dependencyinjection.bar.routes │ │ │ ├── scalaguide.dependencyinjection.injected.routes │ │ │ ├── scalaguide.dependencyinjection.routes │ │ │ └── static.sbt │ │ └── index.toc │ │ ├── forms │ │ ├── ScalaCsrf.md │ │ ├── ScalaCustomFieldConstructors.md │ │ ├── ScalaCustomValidations.md │ │ ├── ScalaForms.md │ │ ├── code │ │ │ ├── CustomValidations.scala │ │ │ ├── ScalaCsrf.scala │ │ │ ├── ScalaCsrfController.scala │ │ │ ├── ScalaFieldConstructor.scala │ │ │ ├── ScalaForms.scala │ │ │ ├── scalaguide.forms.scalaforms.routes │ │ │ └── scalaguide │ │ │ │ └── forms │ │ │ │ ├── csrf.scala.html │ │ │ │ ├── csrf │ │ │ │ └── UserControllerSpec.scala │ │ │ │ ├── scalafieldconstructor │ │ │ │ ├── myFieldConstructorTemplate.scala.html │ │ │ │ ├── userDeclare.scala.html │ │ │ │ └── userImport.scala.html │ │ │ │ └── scalaforms │ │ │ │ └── views │ │ │ │ ├── contact │ │ │ │ └── form.scala.html │ │ │ │ ├── implicitMessages.scala.html │ │ │ │ ├── messages.scala.html │ │ │ │ ├── nested.scala.html │ │ │ │ ├── repeat.scala.html │ │ │ │ ├── select.scala.html │ │ │ │ └── user.scala.html │ │ ├── images │ │ │ ├── lifecycle.png │ │ │ └── lifecycle.xml │ │ └── index.toc │ │ ├── http │ │ ├── ScalaActions.md │ │ ├── ScalaActionsComposition.md │ │ ├── ScalaBodyParsers.md │ │ ├── ScalaContentNegotiation.md │ │ ├── ScalaErrorHandling.md │ │ ├── ScalaResults.md │ │ ├── ScalaRouting.md │ │ ├── ScalaSessionFlash.md │ │ ├── code │ │ │ ├── ScalaActions.scala │ │ │ ├── ScalaActionsComposition.scala │ │ │ ├── ScalaBodyParsers.scala │ │ │ ├── ScalaContentNegotiation.scala │ │ │ ├── ScalaErrorHandling.scala │ │ │ ├── ScalaResults.scala │ │ │ ├── ScalaRouting.scala │ │ │ ├── ScalaSessionFlash.scala │ │ │ ├── scalaguide.http.routing.defaultcontroller.routes │ │ │ ├── scalaguide.http.routing.defaultvalue.routes │ │ │ ├── scalaguide.http.routing.fixed.routes │ │ │ ├── scalaguide.http.routing.query.routes │ │ │ ├── scalaguide.http.routing.relative.routes │ │ │ ├── scalaguide.http.routing.reverse.routes │ │ │ ├── scalaguide.http.routing.routes │ │ │ └── scalaguide │ │ │ │ └── http │ │ │ │ ├── routing │ │ │ │ ├── relative │ │ │ │ │ ├── controllers │ │ │ │ │ │ └── Relative.scala │ │ │ │ │ └── views │ │ │ │ │ │ ├── hello.html │ │ │ │ │ │ └── hello.scala.html │ │ │ │ └── views │ │ │ │ │ └── Clients │ │ │ │ │ └── display.scala.html │ │ │ │ └── scalasessionflash │ │ │ │ └── views │ │ │ │ └── index.scala.html │ │ ├── images │ │ │ └── routesError.png │ │ └── index.toc │ │ ├── i18n │ │ ├── ScalaI18N.md │ │ ├── code │ │ │ ├── ScalaI18N.scala │ │ │ └── scalaguide │ │ │ │ └── i18n │ │ │ │ ├── ScalaI18nService.scala │ │ │ │ └── messages │ │ └── index.toc │ │ ├── index.toc │ │ ├── json │ │ ├── ScalaJsonHttp.md │ │ ├── code │ │ │ └── ScalaJsonHttpSpec.scala │ │ └── index.toc │ │ ├── logging │ │ ├── ScalaLogging.md │ │ ├── code │ │ │ └── ScalaLoggingSpec.scala │ │ └── index.toc │ │ ├── sql │ │ ├── ScalaDatabase.md │ │ ├── code │ │ │ ├── ScalaControllerInject.scala │ │ │ └── ScalaInjectNamed.scala │ │ ├── images │ │ │ └── dbError.png │ │ └── index.toc │ │ ├── tests │ │ ├── ScalaFunctionalTestingWithSpecs2.md │ │ ├── ScalaTestingWebServiceClients.md │ │ ├── ScalaTestingWithDatabases.md │ │ ├── ScalaTestingWithGuice.md │ │ ├── ScalaTestingWithSpecs2.md │ │ ├── ScalaTestingYourApplication.md │ │ ├── code │ │ │ ├── controllers │ │ │ │ └── HomeController.scala │ │ │ ├── database │ │ │ │ ├── ScalaTestingWithDatabases.scala │ │ │ │ └── databases.sbt │ │ │ ├── models │ │ │ │ ├── User.scala │ │ │ │ └── UserSpec.scala │ │ │ ├── scalaguide.tests.guice.routes │ │ │ ├── services │ │ │ │ ├── UserRepository.scala │ │ │ │ └── UserService.scala │ │ │ ├── specs2 │ │ │ │ ├── ExampleControllerSpec.scala │ │ │ │ ├── ExampleEssentialActionSpec.scala │ │ │ │ ├── ExampleHelpersSpec.scala │ │ │ │ ├── ExampleMessagesSpec.scala │ │ │ │ ├── ExampleMockitoSpec.scala │ │ │ │ ├── ExamplePlaySpecificationSpec.scala │ │ │ │ ├── FunctionalExampleControllerSpec.scala │ │ │ │ ├── FunctionalTemplateSpec.scala │ │ │ │ ├── HelloWorldSpec.scala │ │ │ │ ├── ScalaFunctionalTestSpec.scala │ │ │ │ ├── UserServiceSpec.scala │ │ │ │ └── WithDbDataSpec.scala │ │ │ ├── tests │ │ │ │ └── guice │ │ │ │ │ ├── Component.scala │ │ │ │ │ ├── ScalaGuiceApplicationBuilderSpec.scala │ │ │ │ │ └── controllers │ │ │ │ │ └── Application.scala │ │ │ ├── views │ │ │ │ └── html │ │ │ │ │ ├── formTemplate.scala │ │ │ │ │ ├── formTemplateWithCSRF.scala │ │ │ │ │ └── index.scala │ │ │ └── webservice │ │ │ │ └── ScalaTestingWebServiceClients.scala │ │ └── index.toc │ │ ├── upload │ │ ├── ScalaFileUpload.md │ │ ├── code │ │ │ ├── ScalaFileUpload.scala │ │ │ ├── scalaguide.upload.fileupload.routes │ │ │ └── scalaguide │ │ │ │ └── templates │ │ │ │ └── views │ │ │ │ └── uploadForm.scala.html │ │ └── index.toc │ │ ├── ws │ │ ├── ScalaOAuth.md │ │ ├── ScalaOpenID.md │ │ ├── ScalaWS.md │ │ ├── code │ │ │ ├── ScalaOAuthSpec.scala │ │ │ ├── ScalaOpenIdSpec.scala │ │ │ ├── ScalaWSSpec.scala │ │ │ └── ScalaWSStandalone.scala │ │ └── index.toc │ │ └── xml │ │ ├── ScalaXmlRequests.md │ │ ├── code │ │ └── ScalaXmlRequests.scala │ │ └── index.toc ├── project │ ├── build.properties │ └── plugins.sbt ├── src │ ├── main │ │ └── resources │ │ │ └── application.conf │ └── test │ │ └── resources │ │ ├── github │ │ └── repositories.json │ │ └── logback.xml └── style │ ├── external.png │ ├── header-pattern.png │ ├── main.css │ └── main.js ├── persistence ├── play-java-jdbc │ └── src │ │ ├── main │ │ ├── java │ │ │ └── play │ │ │ │ └── db │ │ │ │ ├── BoneCPComponents.java │ │ │ │ ├── ConnectionPool.java │ │ │ │ ├── ConnectionPoolComponents.java │ │ │ │ ├── DBComponents.java │ │ │ │ ├── DBModule.java │ │ │ │ ├── Databases.java │ │ │ │ ├── DefaultConnectionPool.java │ │ │ │ ├── DefaultDBApi.java │ │ │ │ ├── DefaultDatabase.java │ │ │ │ ├── HikariCPComponents.java │ │ │ │ └── package-info.java │ │ └── resources │ │ │ └── reference.conf │ │ └── test │ │ ├── java │ │ └── play │ │ │ └── db │ │ │ ├── DatabaseTest.java │ │ │ └── NamedDatabaseTest.java │ │ └── resources │ │ └── logback-test.xml ├── play-java-jpa │ └── src │ │ ├── main │ │ ├── java │ │ │ └── play │ │ │ │ └── db │ │ │ │ └── jpa │ │ │ │ ├── DefaultJPAApi.java │ │ │ │ ├── DefaultJPAConfig.java │ │ │ │ ├── JPA.java │ │ │ │ ├── JPAApi.java │ │ │ │ ├── JPAComponents.java │ │ │ │ ├── JPAConfig.java │ │ │ │ ├── JPAEntityManagerContext.java │ │ │ │ ├── JPAModule.java │ │ │ │ ├── Transactional.java │ │ │ │ ├── TransactionalAction.java │ │ │ │ └── package-info.java │ │ └── resources │ │ │ └── reference.conf │ │ └── test │ │ ├── java │ │ └── play │ │ │ └── db │ │ │ └── jpa │ │ │ ├── JPAApiTest.java │ │ │ └── TestEntity.java │ │ └── resources │ │ ├── META-INF │ │ └── persistence.xml │ │ ├── evolutions │ │ └── default │ │ │ ├── 1.sql │ │ │ └── 2.sql │ │ └── logback-test.xml ├── play-jdbc-api │ └── src │ │ └── main │ │ ├── java │ │ └── play │ │ │ └── db │ │ │ ├── ConnectionCallable.java │ │ │ ├── ConnectionRunnable.java │ │ │ ├── DBApi.java │ │ │ ├── Database.java │ │ │ ├── NamedDatabase.java │ │ │ └── NamedDatabaseImpl.java │ │ └── scala │ │ └── play │ │ └── api │ │ └── db │ │ ├── DBApi.scala │ │ └── Database.scala ├── play-jdbc-evolutions │ └── src │ │ ├── main │ │ ├── java │ │ │ └── play │ │ │ │ └── db │ │ │ │ └── evolutions │ │ │ │ ├── Evolution.java │ │ │ │ ├── Evolutions.java │ │ │ │ ├── EvolutionsReader.java │ │ │ │ └── SimpleEvolutionsReader.java │ │ ├── resources │ │ │ └── reference.conf │ │ └── scala │ │ │ └── play │ │ │ └── api │ │ │ └── db │ │ │ └── evolutions │ │ │ ├── ApplicationEvolutions.scala │ │ │ ├── Evolutions.scala │ │ │ ├── EvolutionsApi.scala │ │ │ └── EvolutionsModule.scala │ │ └── test │ │ ├── java │ │ └── play │ │ │ └── db │ │ │ └── evolutions │ │ │ └── EvolutionsTest.java │ │ ├── resources │ │ ├── evolutions │ │ │ └── test │ │ │ │ ├── 001.sql │ │ │ │ ├── 0010.sql │ │ │ │ ├── 002.sql │ │ │ │ ├── 005.sql │ │ │ │ ├── 01.sql │ │ │ │ ├── 010.sql │ │ │ │ ├── 0100.sql │ │ │ │ ├── 02.sql │ │ │ │ ├── 05.sql │ │ │ │ ├── 1.sql │ │ │ │ ├── 2.sql │ │ │ │ ├── 3.sql │ │ │ │ ├── 4.sql │ │ │ │ ├── 6.sql │ │ │ │ ├── 7.sql │ │ │ │ ├── 8.sql │ │ │ │ └── 9.sql │ │ ├── evolutionstest │ │ │ └── evolutions │ │ │ │ └── default │ │ │ │ └── 1.sql │ │ └── logback-test.xml │ │ └── scala │ │ └── play │ │ └── api │ │ └── db │ │ └── evolutions │ │ ├── DefaultEvolutionsConfigParserSpec.scala │ │ ├── EvolutionsReaderSpec.scala │ │ ├── EvolutionsSpec.scala │ │ ├── LogbackCapturingAppender.scala │ │ └── ScriptSpec.scala └── play-jdbc │ └── src │ ├── main │ ├── resources │ │ └── reference.conf │ └── scala │ │ ├── org │ │ └── jdbcdslog │ │ │ └── LogSqlDataSource.scala │ │ └── play │ │ └── api │ │ └── db │ │ ├── BoneCPModule.scala │ │ ├── ConnectionPool.scala │ │ ├── DBModule.scala │ │ ├── DatabaseConfig.scala │ │ ├── Databases.scala │ │ ├── DefaultDBApi.scala │ │ ├── HikariCPModule.scala │ │ └── package.scala │ └── test │ ├── resources │ ├── application.conf │ └── logback-test.xml │ └── scala │ └── play │ └── api │ └── db │ ├── ConnectionPoolConfigSpec.scala │ ├── DBApiSpec.scala │ ├── DatabasesSpec.scala │ ├── DriverRegistrationSpec.scala │ ├── HikariCPConfigSpec.scala │ └── NamedDatabaseSpec.scala ├── project ├── AkkaSnapshotRepositories.scala ├── BuildSettings.scala ├── Dependencies.scala ├── Docs.scala ├── Release.scala ├── Tasks.scala ├── build.properties ├── plugins.sbt └── project │ └── buildinfo.sbt ├── scripts ├── scriptLib ├── test-docs ├── test-sbt-plugins-0_13 ├── test-sbt-plugins-1_0 ├── test-scala-212 ├── validate-code └── validate-microbenchmarks ├── testkit ├── play-specs2 │ └── src │ │ ├── main │ │ └── scala │ │ │ └── play │ │ │ └── api │ │ │ └── test │ │ │ ├── PlaySpecification.scala │ │ │ └── Specs.scala │ │ └── test │ │ ├── resources │ │ └── logback-test.xml │ │ └── scala │ │ └── play │ │ └── api │ │ └── test │ │ ├── FakesSpec.scala │ │ └── SpecsSpec.scala └── play-test │ └── src │ ├── main │ ├── java │ │ └── play │ │ │ └── test │ │ │ ├── Helpers.java │ │ │ ├── TestBrowser.java │ │ │ ├── TestServer.java │ │ │ ├── WithApplication.java │ │ │ ├── WithBrowser.java │ │ │ ├── WithServer.java │ │ │ └── package-info.java │ └── scala │ │ └── play │ │ └── api │ │ └── test │ │ ├── Fakes.scala │ │ ├── Helpers.scala │ │ ├── NoMaterializer.scala │ │ ├── Selenium.scala │ │ ├── TestServer.scala │ │ └── package.scala │ └── test │ ├── java │ └── play │ │ └── test │ │ ├── HelpersTest.java │ │ ├── TestServerTest.java │ │ ├── WithApplicationOverrideTest.java │ │ ├── WithApplicationTest.java │ │ └── WithBrowserTest.java │ └── scala │ └── play │ └── api │ └── test │ ├── HelpersSpec.scala │ └── InjectingSpec.scala ├── transport ├── client │ ├── play-ahc-ws │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── play │ │ │ │ │ ├── libs │ │ │ │ │ └── ws │ │ │ │ │ │ ├── WS.java │ │ │ │ │ │ └── ahc │ │ │ │ │ │ ├── AhcWSClient.java │ │ │ │ │ │ ├── AhcWSComponents.java │ │ │ │ │ │ ├── AhcWSModule.java │ │ │ │ │ │ ├── AhcWSRequest.java │ │ │ │ │ │ ├── AhcWSResponse.java │ │ │ │ │ │ └── WSClientComponents.java │ │ │ │ │ └── test │ │ │ │ │ └── WSTestClient.java │ │ │ ├── resources │ │ │ │ └── reference.conf │ │ │ └── scala │ │ │ │ └── play │ │ │ │ └── api │ │ │ │ ├── libs │ │ │ │ └── ws │ │ │ │ │ └── ahc │ │ │ │ │ ├── AhcWSClient.scala │ │ │ │ │ ├── AhcWSComponents.scala │ │ │ │ │ ├── AhcWSModule.scala │ │ │ │ │ ├── AhcWSRequest.scala │ │ │ │ │ └── AhcWSResponse.scala │ │ │ │ └── test │ │ │ │ └── WSTestClient.scala │ │ │ └── test │ │ │ ├── resources │ │ │ ├── caffeine.conf │ │ │ ├── ehcache-play-ws-cache.xml │ │ │ ├── logback-test.xml │ │ │ └── play │ │ │ │ └── libs │ │ │ │ └── ws │ │ │ │ └── play_full_color.png │ │ │ └── scala │ │ │ └── play │ │ │ ├── api │ │ │ └── libs │ │ │ │ └── ws │ │ │ │ └── ahc │ │ │ │ ├── AhcWSSpec.scala │ │ │ │ └── OptionalAhcHttpCacheProviderSpec.scala │ │ │ └── libs │ │ │ └── ws │ │ │ └── WSSpec.scala │ └── play-ws │ │ └── src │ │ └── main │ │ ├── java │ │ └── play │ │ │ └── libs │ │ │ └── ws │ │ │ ├── WSBodyReadables.java │ │ │ ├── WSBodyWritables.java │ │ │ ├── WSClient.java │ │ │ ├── WSRequest.java │ │ │ └── WSResponse.java │ │ └── scala │ │ └── play │ │ └── api │ │ └── libs │ │ └── ws │ │ ├── WSBodyReadables.scala │ │ ├── WSBodyWritables.scala │ │ ├── WSClient.scala │ │ ├── WSRequest.scala │ │ ├── WSResponse.scala │ │ └── package.scala └── server │ ├── play-akka-http-server │ └── src │ │ ├── main │ │ ├── resources │ │ │ ├── play │ │ │ │ └── reference-overrides.conf │ │ │ └── reference.conf │ │ └── scala │ │ │ ├── akka │ │ │ └── http │ │ │ │ └── play │ │ │ │ └── WebSocketHandler.scala │ │ │ └── play │ │ │ └── core │ │ │ └── server │ │ │ ├── AkkaHttpServer.scala │ │ │ └── akkahttp │ │ │ ├── AkkaModelConversion.scala │ │ │ └── HttpRequestDecoder.scala │ │ ├── sbt-test │ │ └── akka-http │ │ │ ├── play-akka-http-plugin │ │ │ ├── app │ │ │ │ └── controllers │ │ │ │ │ └── Application.scala │ │ │ ├── build.sbt │ │ │ ├── conf │ │ │ │ ├── application.conf │ │ │ │ └── routes │ │ │ ├── project │ │ │ │ ├── Build.scala │ │ │ │ ├── MediatorWorkaround.scala │ │ │ │ └── plugins.sbt │ │ │ ├── test │ │ │ └── tests │ │ │ │ └── ServerSpec.scala │ │ │ └── system-property │ │ │ ├── app │ │ │ └── controllers │ │ │ │ └── Application.scala │ │ │ ├── build.sbt │ │ │ ├── conf │ │ │ ├── application.conf │ │ │ └── routes │ │ │ ├── project │ │ │ ├── Build.scala │ │ │ ├── MediatorWorkaround.scala │ │ │ └── plugins.sbt │ │ │ ├── test │ │ │ └── tests │ │ │ └── ServerSpec.scala │ │ └── test │ │ ├── resources │ │ └── application.conf │ │ └── scala │ │ └── play │ │ ├── AkkaTestServer.scala │ │ └── core │ │ └── server │ │ └── akkahttp │ │ └── AkkaHeadersWrapperTest.scala │ ├── play-akka-http2-support │ └── src │ │ └── main │ │ └── resources │ │ └── reference.conf │ ├── play-netty-server │ └── src │ │ ├── main │ │ ├── resources │ │ │ └── reference.conf │ │ └── scala │ │ │ └── play │ │ │ └── core │ │ │ └── server │ │ │ ├── NettyServer.scala │ │ │ └── netty │ │ │ ├── NettyHeadersWrapper.scala │ │ │ ├── NettyModelConversion.scala │ │ │ ├── PlayRequestHandler.scala │ │ │ ├── SynchronousMappedStreams.scala │ │ │ └── WebSocketHandler.scala │ │ └── test │ │ ├── resources │ │ └── application.conf │ │ └── scala │ │ └── play │ │ ├── NettyTestServer.scala │ │ └── core │ │ └── server │ │ └── netty │ │ └── NettyHeadersWrapperSpec.scala │ └── play-server │ └── src │ ├── main │ ├── java │ │ └── play │ │ │ └── server │ │ │ └── Server.java │ ├── resources │ │ └── reference.conf │ └── scala │ │ └── play │ │ └── core │ │ └── server │ │ ├── DevServerStart.scala │ │ ├── ProdServerStart.scala │ │ ├── Server.scala │ │ ├── ServerConfig.scala │ │ ├── ServerListenException.scala │ │ ├── ServerProcess.scala │ │ ├── ServerProvider.scala │ │ ├── ServerStartException.scala │ │ ├── common │ │ ├── ForwardedHeaderHandler.scala │ │ ├── NodeIdentifierParser.scala │ │ ├── PathAndQueryParser.scala │ │ ├── ReloadCache.scala │ │ ├── ServerDebugInfo.scala │ │ ├── ServerResultException.scala │ │ ├── ServerResultUtils.scala │ │ ├── Subnet.scala │ │ └── WebSocketFlowHandler.scala │ │ └── ssl │ │ ├── CertificateGenerator.scala │ │ ├── DefaultSSLEngineProvider.scala │ │ └── ServerSSLEngine.scala │ └── test │ ├── resources │ ├── application.conf │ └── logback-test.xml │ └── scala │ └── play │ └── core │ └── server │ ├── ProdServerStartSpec.scala │ ├── ServerConfigSpec.scala │ ├── common │ ├── ForwardedHeaderHandlerSpec.scala │ ├── NodeIdentifierParserSpec.scala │ ├── ServerResultUtilsSpec.scala │ └── SubnetSpec.scala │ └── ssl │ └── ServerSSLEngineSpec.scala ├── version.sbt └── web ├── play-filters-helpers └── src │ ├── main │ ├── java │ │ └── play │ │ │ └── filters │ │ │ ├── components │ │ │ ├── AllowedHostsComponents.java │ │ │ ├── CORSComponents.java │ │ │ ├── CSRFComponents.java │ │ │ ├── GzipFilterComponents.java │ │ │ ├── HttpFiltersComponents.java │ │ │ ├── NoHttpFiltersComponents.java │ │ │ ├── RedirectHttpsComponents.java │ │ │ └── SecurityHeadersComponents.java │ │ │ └── csrf │ │ │ ├── AddCSRFToken.java │ │ │ ├── AddCSRFTokenAction.java │ │ │ ├── CSRFErrorHandler.java │ │ │ ├── RequireCSRFCheck.java │ │ │ └── RequireCSRFCheckAction.java │ ├── resources │ │ └── reference.conf │ └── scala │ │ ├── play │ │ ├── api │ │ │ └── test │ │ │ │ └── CSRFTokenHelper.scala │ │ └── filters │ │ │ ├── HttpFiltersComponents.scala │ │ │ ├── cors │ │ │ ├── AbstractCORSPolicy.scala │ │ │ ├── CORSActionBuilder.scala │ │ │ ├── CORSConfig.scala │ │ │ ├── CORSFilter.scala │ │ │ └── CORSModule.scala │ │ │ ├── csrf │ │ │ ├── CSRFActions.scala │ │ │ ├── CSRFFilter.scala │ │ │ └── csrf.scala │ │ │ ├── gzip │ │ │ └── GzipFilter.scala │ │ │ ├── headers │ │ │ └── SecurityHeadersFilter.scala │ │ │ ├── hosts │ │ │ └── AllowedHostsFilter.scala │ │ │ └── https │ │ │ └── RedirectHttpsFilter.scala │ │ └── views │ │ └── html │ │ └── helper │ │ └── CSRF.scala │ └── test │ ├── resources │ ├── application.conf │ ├── helloWorld.txt.gz │ └── logback-test.xml │ └── scala │ └── play │ └── filters │ ├── cors │ ├── CORSActionBuilderSpec.scala │ ├── CORSCommonSpec.scala │ ├── CORSFilterSpec.scala │ └── CORSWithCSRFSpec.scala │ ├── csrf │ ├── CSRFCommonSpecs.scala │ ├── CSRFFilterSpec.scala │ ├── JavaCSRFActionSpec.scala │ └── ScalaCSRFActionSpec.scala │ ├── gzip │ └── GzipFilterSpec.scala │ ├── headers │ └── SecurityHeadersFilterSpec.scala │ ├── hosts │ └── AllowedHostsFilterSpec.scala │ └── https │ └── RedirectHttpsFilterSpec.scala ├── play-java-forms └── src │ ├── main │ ├── java │ │ └── play │ │ │ └── data │ │ │ ├── DynamicForm.java │ │ │ ├── Form.java │ │ │ ├── FormFactory.java │ │ │ ├── FormFactoryComponents.java │ │ │ ├── FormFactoryModule.java │ │ │ ├── format │ │ │ ├── Formats.java │ │ │ ├── Formatters.java │ │ │ ├── FormattersModule.java │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ └── validation │ │ │ ├── Constraints.java │ │ │ ├── DefaultConstraintValidatorFactory.java │ │ │ ├── MappedConstraintValidatorFactory.java │ │ │ ├── ValidationError.java │ │ │ ├── ValidatorProvider.java │ │ │ ├── ValidatorsComponents.java │ │ │ ├── ValidatorsModule.java │ │ │ └── package-info.java │ ├── resources │ │ └── reference.conf │ └── scala │ │ └── play │ │ └── core │ │ └── PlayFormsMagicForJava.scala │ └── test │ ├── java │ └── play │ │ ├── data │ │ ├── AnotherUser.java │ │ ├── Birthday.java │ │ ├── BlueValidator.java │ │ ├── Formats.java │ │ ├── LegacyUser.java │ │ ├── ListForm.java │ │ ├── LoginCheck.java │ │ ├── LoginUser.java │ │ ├── Money.java │ │ ├── MyBlueUser.java │ │ ├── MyUser.java │ │ ├── OrderedChecks.java │ │ ├── PasswordCheck.java │ │ ├── Red.java │ │ ├── RedValidator.java │ │ ├── SomeUser.java │ │ ├── Task.java │ │ ├── UserBase.java │ │ ├── UserEmail.java │ │ ├── ValidateRed.java │ │ └── validation │ │ │ └── TestConstraints.java │ │ └── mvc │ │ └── HttpFormsTest.java │ └── scala │ └── play │ └── data │ ├── DynamicFormSpec.scala │ ├── FormSpec.scala │ ├── PartialValidationSpec.scala │ └── format │ └── FormattersTest.java ├── play-joda-forms └── src │ └── main │ └── scala │ └── play │ └── api │ └── data │ ├── JodaForms.scala │ └── format │ └── JodaFormats.scala ├── play-netty-utils └── src │ └── main │ └── java │ └── play │ └── core │ └── netty │ └── utils │ ├── ClientCookieDecoder.java │ ├── ClientCookieEncoder.java │ ├── Cookie.java │ ├── CookieDecoder.java │ ├── CookieEncoder.java │ ├── CookieHeaderNames.java │ ├── CookieUtil.java │ ├── DefaultCookie.java │ ├── HttpConstants.java │ ├── HttpHeaderDateFormat.java │ ├── ServerCookieDecoder.java │ ├── ServerCookieEncoder.java │ └── package-info.java └── play-openid └── src ├── main ├── java │ └── play │ │ └── libs │ │ └── openid │ │ ├── DefaultOpenIdClient.java │ │ ├── OpenIdClient.java │ │ ├── OpenIdComponents.java │ │ ├── OpenIdModule.java │ │ ├── UserInfo.java │ │ └── package-info.java ├── resources │ └── reference.conf └── scala │ └── play │ └── api │ └── libs │ └── openid │ ├── OpenIDError.scala │ └── OpenIdClient.scala └── test ├── resources ├── logback-test.xml └── play │ └── api │ └── libs │ └── openid │ └── discovery │ ├── html │ ├── opLocalIdentityPage.html │ ├── openIDProvider-OpenID-1.1.html │ └── openIDProvider.html │ └── xrds │ ├── google-account-response.xml │ ├── invalid-op-identifier.xml │ ├── multi-service-with-op-and-claimed-id-service.xml │ ├── multi-service.xml │ ├── simple-op-non-unique.xml │ ├── simple-op.xml │ ├── simple-openid-1-op.xml │ └── simple-openid-1.1-op.xml └── scala └── play └── api └── libs └── openid ├── DiscoveryClientSpec.scala ├── OpenIDSpec.scala ├── RichUrl.scala ├── UserInfoSpec.scala ├── WsMock.scala └── package.scala /.gitattributes: -------------------------------------------------------------------------------- 1 | core/play-integration-test/src/test/resources/testassets/* binary 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | logs 2 | *.iml 3 | target 4 | .idea 5 | .idea_modules 6 | .vscode 7 | RUNNING_PID 8 | generated.keystore 9 | generated.truststore 10 | *.log 11 | 12 | # Scala-IDE specific 13 | bin/ 14 | .scala_dependencies 15 | .classpath 16 | .project 17 | .settings/ 18 | .cache-main 19 | .cache-tests 20 | -------------------------------------------------------------------------------- /.java-version: -------------------------------------------------------------------------------- 1 | 1.8 2 | -------------------------------------------------------------------------------- /.jvmopts: -------------------------------------------------------------------------------- 1 | # This is used to configure the sbt instance that Travis launches 2 | 3 | -Xms2G 4 | -Xmx2G 5 | -Xss2M 6 | -XX:MaxMetaspaceSize=1G 7 | -Dfile.encoding=UTF-8 8 | -------------------------------------------------------------------------------- /cache/play-cache/src/main/java/play/cache/NamedCache.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.cache; 6 | 7 | import javax.inject.Qualifier; 8 | import java.lang.annotation.Retention; 9 | import java.lang.annotation.RetentionPolicy; 10 | 11 | @Qualifier 12 | @Retention(RetentionPolicy.RUNTIME) 13 | public @interface NamedCache { 14 | String value(); 15 | } 16 | -------------------------------------------------------------------------------- /cache/play-cache/src/main/java/play/cache/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Provides the Cache API. */ 6 | package play.cache; 7 | -------------------------------------------------------------------------------- /cache/play-cache/src/main/scala/play/api/cache/package.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.api 6 | 7 | /** 8 | * Contains the Cache access API. 9 | */ 10 | package object cache { 11 | type NamedCache = play.cache.NamedCache 12 | } 13 | -------------------------------------------------------------------------------- /cache/play-jcache/src/main/java/play/libs/jcache/JCacheComponents.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.libs.jcache; 6 | 7 | import play.Environment; 8 | 9 | import javax.cache.CacheManager; 10 | import javax.cache.Caching; 11 | 12 | /** JCache components */ 13 | public interface JCacheComponents { 14 | 15 | Environment environment(); 16 | 17 | default CacheManager cacheManager() { 18 | return Caching.getCachingProvider(environment().classLoader()).getCacheManager(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /cache/play-jcache/src/main/resources/reference.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | play.modules.enabled+=play.api.libs.jcache.JCacheModule -------------------------------------------------------------------------------- /cache/play-jcache/src/main/scala/play/api/libs/jcache/JCacheComponents.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.api.libs.jcache 6 | 7 | import javax.cache.CacheManager 8 | import javax.cache.Caching 9 | 10 | import play.api.Environment 11 | 12 | /** 13 | * Components for JCache CacheManager 14 | */ 15 | trait JCacheComponents { 16 | 17 | def environment: Environment 18 | 19 | lazy val cacheManager: CacheManager = Caching.getCachingProvider(environment.classLoader).getCacheManager 20 | } 21 | -------------------------------------------------------------------------------- /core/play-guice/src/main/java/play/libs/akka/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Utility methods for working with Akka. */ 6 | package play.libs.akka; 7 | -------------------------------------------------------------------------------- /core/play-guice/src/main/resources/reference.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | play.application.loader = "play.api.inject.guice.GuiceApplicationLoader" 4 | -------------------------------------------------------------------------------- /core/play-guice/src/test/resources/messages: -------------------------------------------------------------------------------- 1 | error.custom=This is a {0} 2 | error.customarg=custom error 3 | 4 | constraint.custom=I am a {0} 5 | constraint.customarg=custom constraint 6 | 7 | format.custom=Look at me! I am a {0} 8 | format.customarg=custom format pattern -------------------------------------------------------------------------------- /core/play-integration-test/src/it/resources/testassets/empty.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/core/play-integration-test/src/it/resources/testassets/empty.txt -------------------------------------------------------------------------------- /core/play-integration-test/src/test/java/play/it/http/SingleRepeatableOnActionController.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.it.http; 6 | 7 | import play.mvc.Result; 8 | import play.mvc.Results; 9 | 10 | import play.it.http.ActionCompositionOrderTest.SomeRepeatable; 11 | 12 | public class SingleRepeatableOnActionController extends MockController { 13 | 14 | @SomeRepeatable // runs two actions 15 | public Result action() { 16 | return Results.ok(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /core/play-integration-test/src/test/java/play/it/http/SingleRepeatableOnTypeController.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.it.http; 6 | 7 | import play.mvc.Result; 8 | import play.mvc.Results; 9 | 10 | import play.it.http.ActionCompositionOrderTest.SomeRepeatable; 11 | 12 | @SomeRepeatable // runs two actions 13 | public class SingleRepeatableOnTypeController extends MockController { 14 | 15 | public Result action() { 16 | return Results.ok(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/application.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | # Play sometimes gets grumpy if this file doesn't exist. 4 | play.http.secret.key = "abc" 5 | 6 | # Set no filters by default 7 | play.filters.enabled=[] 8 | 9 | actor { 10 | default-dispatcher = { 11 | fork-join-executor { 12 | parallelism-max = 2 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/messages: -------------------------------------------------------------------------------- 1 | constraint.required=Required! 2 | -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/testassets/bar.txt: -------------------------------------------------------------------------------- 1 | This is a test asset. -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/testassets/empty.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/core/play-integration-test/src/test/resources/testassets/empty.txt -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/testassets/encoding.js: -------------------------------------------------------------------------------- 1 | this is a file where we test the different encodings of the assets controller. this is the plain version 2 | -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/testassets/encoding.js.br: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/core/play-integration-test/src/test/resources/testassets/encoding.js.br -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/testassets/encoding.js.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/core/play-integration-test/src/test/resources/testassets/encoding.js.bz2 -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/testassets/encoding.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/core/play-integration-test/src/test/resources/testassets/encoding.js.gz -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/testassets/encoding.js.xz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/core/play-integration-test/src/test/resources/testassets/encoding.js.xz -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/testassets/foo bar.txt: -------------------------------------------------------------------------------- 1 | This is a test asset with spaces. -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/testassets/foo.txt: -------------------------------------------------------------------------------- 1 | This is a test asset. -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/testassets/foo.txt.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/core/play-integration-test/src/test/resources/testassets/foo.txt.gz -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/testassets/subdir/baz.txt: -------------------------------------------------------------------------------- 1 | Content of baz.txt. -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/testassets/test.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/testassets/versioned/sub/12345678901234567890123456789012-foo.txt: -------------------------------------------------------------------------------- 1 | This is a test asset. -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/testassets/versioned/sub/foo.txt: -------------------------------------------------------------------------------- 1 | This is a test asset. -------------------------------------------------------------------------------- /core/play-integration-test/src/test/resources/testassets/versioned/sub/foo.txt.md5: -------------------------------------------------------------------------------- 1 | 12345678901234567890123456789012 -------------------------------------------------------------------------------- /core/play-java/src/main/java/play/libs/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Provides various APIs that are useful for developing web applications. */ 6 | package play.libs; 7 | -------------------------------------------------------------------------------- /core/play-java/src/main/resources/ebean.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) Lightbend Inc. 3 | # 4 | -------------------------------------------------------------------------------- /core/play-java/src/main/resources/reference.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | play { 4 | modules { 5 | enabled += "play.inject.BuiltInModule" 6 | enabled += "play.core.ObjectMapperModule" 7 | enabled += "play.routing.RoutingDslModule" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /core/play-java/src/main/scala-2.11/play/core/j/JavaImplicitConversions.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.core.j 6 | 7 | import scala.collection.convert._ 8 | 9 | /** 10 | * Implicit conversions for use in the templates, to provide seamless interop between Java and Scala types. 11 | */ 12 | private[play] trait JavaImplicitConversions extends WrapAsJava with WrapAsScala 13 | -------------------------------------------------------------------------------- /core/play-java/src/main/scala-2.12/play/core/j/JavaImplicitConversions.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.core.j 6 | 7 | import scala.collection.convert._ 8 | 9 | /** 10 | * Implicit conversions for use in the templates, to provide seamless interop between Java and Scala types. 11 | */ 12 | private[play] trait JavaImplicitConversions extends ToScalaImplicits with ToJavaImplicits 13 | -------------------------------------------------------------------------------- /core/play-java/src/test/java/play/libs/testmodel/AC1.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.libs.testmodel; 6 | 7 | public @interface AC1 {} 8 | -------------------------------------------------------------------------------- /core/play-java/src/test/java/play/libs/testmodel/C1.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.libs.testmodel; 6 | 7 | public @AC1 class C1 {} 8 | -------------------------------------------------------------------------------- /core/play-java/src/test/resources/messages: -------------------------------------------------------------------------------- 1 | error.custom=It looks like something {0} 2 | error.customarg=was not correct 3 | customFormats.date=dd/MM/yyyy 4 | patterns.zip=[1-4]{4} -------------------------------------------------------------------------------- /core/play-java/src/test/resources/messages.en-US: -------------------------------------------------------------------------------- 1 | customFormats.date=MM-dd-yyyy 2 | formats.date=dd/MM/yyyy 3 | hello=Aloha -------------------------------------------------------------------------------- /core/play-java/src/test/resources/messages.fr: -------------------------------------------------------------------------------- 1 | customFormats.date=dd.MM.yyyy 2 | formats.date=MM_dd_yyyy 3 | error.invalid.dueDate=Date invalide 4 | patterns.zip=[5-8]{3} -------------------------------------------------------------------------------- /core/play-logback/src/main/resources/logger-configurator.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) Lightbend Inc. 3 | # 4 | play.logger.configurator=play.api.libs.logback.LogbackLoggerConfigurator 5 | -------------------------------------------------------------------------------- /core/play/src/main/java/play/Mode.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play; 6 | 7 | /** Application mode, either `DEV`, `TEST`, or `PROD`. */ 8 | public enum Mode { 9 | DEV, 10 | TEST, 11 | PROD; 12 | 13 | public play.api.Mode asScala() { 14 | if (this == DEV) { 15 | return play.api.Mode.Dev$.MODULE$; 16 | } else if (this == PROD) { 17 | return play.api.Mode.Prod$.MODULE$; 18 | } 19 | return play.api.Mode.Test$.MODULE$; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /core/play/src/main/java/play/components/ApplicationComponents.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.components; 6 | 7 | import play.Application; 8 | 9 | /** The application component. */ 10 | public interface ApplicationComponents { 11 | Application application(); 12 | } 13 | -------------------------------------------------------------------------------- /core/play/src/main/java/play/components/FileMimeTypesComponents.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.components; 6 | 7 | import play.mvc.FileMimeTypes; 8 | 9 | /** Java File Mime Types components. */ 10 | public interface FileMimeTypesComponents { 11 | FileMimeTypes fileMimeTypes(); 12 | } 13 | -------------------------------------------------------------------------------- /core/play/src/main/java/play/components/TemporaryFileComponents.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.components; 6 | 7 | import play.libs.Files; 8 | 9 | /** Components related to temporary file handle. */ 10 | public interface TemporaryFileComponents { 11 | 12 | Files.TemporaryFileCreator tempFileCreator(); 13 | } 14 | -------------------------------------------------------------------------------- /core/play/src/main/java/play/http/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Core Java HTTP API. */ 6 | package play.http; 7 | -------------------------------------------------------------------------------- /core/play/src/main/java/play/i18n/I18nComponents.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.i18n; 6 | 7 | /** 8 | * Java I18n components. 9 | * 10 | * @see MessagesApi 11 | * @see Langs 12 | */ 13 | public interface I18nComponents { 14 | 15 | /** @return an instance of MessagesApi. */ 16 | MessagesApi messagesApi(); 17 | 18 | /** @return an instance of Langs. */ 19 | Langs langs(); 20 | } 21 | -------------------------------------------------------------------------------- /core/play/src/main/java/play/i18n/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Provides the i18n API. */ 6 | package play.i18n; 7 | -------------------------------------------------------------------------------- /core/play/src/main/java/play/inject/BindingTarget.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.inject; 6 | 7 | /** 8 | * A binding target. 9 | * 10 | *

This trait captures the four possible types of targets. 11 | * 12 | *

See the {@link Module} class for information on how to provide bindings. 13 | */ 14 | public abstract class BindingTarget { 15 | BindingTarget() {} 16 | 17 | public abstract play.api.inject.BindingTarget asScala(); 18 | } 19 | -------------------------------------------------------------------------------- /core/play/src/main/java/play/inject/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Provides dependency injection utilities for Play lifecycle. */ 6 | package play.inject; 7 | -------------------------------------------------------------------------------- /core/play/src/main/java/play/libs/concurrent/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Concurrency utilities for handling CompletionStage and ExecutionContexts. */ 6 | package play.libs.concurrent; 7 | -------------------------------------------------------------------------------- /core/play/src/main/java/play/libs/streams/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Utility methods for working with Akka Streams. */ 6 | package play.libs.streams; 7 | -------------------------------------------------------------------------------- /core/play/src/main/java/play/mvc/With.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.mvc; 6 | 7 | import java.lang.annotation.*; 8 | 9 | /** 10 | * Decorates an Action or a Controller with another Action. 11 | */ 12 | @Target({ElementType.TYPE, ElementType.METHOD}) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | public @interface With { 15 | Class>[] value(); 16 | } 17 | -------------------------------------------------------------------------------- /core/play/src/main/java/play/mvc/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Provides the Controller/Action/Result API for handling HTTP requests. */ 6 | package play.mvc; 7 | -------------------------------------------------------------------------------- /core/play/src/main/java/play/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** 6 | * Provides the Play framework's publicly accessible Java API. 7 | * 8 | *

Play

9 | * 10 | * http://www.playframework.com 11 | */ 12 | package play; 13 | -------------------------------------------------------------------------------- /core/play/src/main/java/play/server/SSLEngineProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.server; 6 | 7 | import javax.net.ssl.SSLEngine; 8 | 9 | public interface SSLEngineProvider { 10 | 11 | /** @return the SSL engine to be used for HTTPS connection. */ 12 | SSLEngine createSSLEngine(); 13 | } 14 | -------------------------------------------------------------------------------- /core/play/src/main/scala/models/DummyPlaceHolder.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package models 6 | 7 | /* 8 | * Empty placeholder object to make sure templates keep compiling (due to 9 | * imports in template files), even if projects don't have any models. 10 | */ 11 | object DummyPlaceHolder 12 | -------------------------------------------------------------------------------- /core/play/src/main/scala/play/api/data/validation/package.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.api.data 6 | 7 | /** 8 | * Contains the validation API used by `Form`. 9 | * 10 | * For example, to define a custom constraint: 11 | * {{{ 12 | * val negative = Constraint[Int] { 13 | * case i if i < 0 => Valid 14 | * case _ => Invalid("Must be a negative number.") 15 | * } 16 | * }}} 17 | */ 18 | package object validation 19 | -------------------------------------------------------------------------------- /core/play/src/main/scala/play/api/http/Port.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.api.http 6 | 7 | /** 8 | * A port. This class is defined so that ports can be passed around implicitly. 9 | */ 10 | class Port(val value: Int) extends AnyVal { 11 | override def toString = value.toString 12 | } 13 | -------------------------------------------------------------------------------- /core/play/src/main/scala/play/api/i18n/package.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.api 6 | 7 | /** 8 | * Contains the internationalisation API. 9 | * 10 | * For example, translating a message: 11 | * {{{ 12 | * val msgString = Messages("items.found", items.size) 13 | * }}} 14 | */ 15 | package object i18n 16 | -------------------------------------------------------------------------------- /core/play/src/main/scala/play/api/libs/package.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.api 6 | 7 | /** 8 | * Contains various APIs that are useful while developing web applications. 9 | */ 10 | package object libs 11 | -------------------------------------------------------------------------------- /core/play/src/main/scala/play/api/mvc/package.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.api 6 | 7 | /** 8 | * Contains the Controller/Action/Result API to handle HTTP requests. 9 | * 10 | * For example, a typical controller: 11 | * {{{ 12 | * class HomeController @Inject() (val controllerComponents: ControllerComponents) extends BaseController { 13 | * 14 | * def index = Action { 15 | * Ok("It works!") 16 | * } 17 | * 18 | * } 19 | * }}} 20 | */ 21 | package object mvc {} 22 | -------------------------------------------------------------------------------- /core/play/src/main/scala/play/core/j/JavaModeConverter.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.core.j 6 | 7 | import scala.language.implicitConversions 8 | 9 | /** 10 | * Converter for Java Mode enum from Scala Mode 11 | */ 12 | object JavaModeConverter { 13 | implicit def asJavaMode(mode: play.api.Mode): play.Mode = mode.asJava 14 | implicit def asScalaMode(mode: play.Mode): play.api.Mode = mode.asScala() 15 | } 16 | -------------------------------------------------------------------------------- /core/play/src/main/scala/play/core/system/RequestIdProvider.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.core.system 6 | 7 | import java.util.concurrent.atomic.AtomicLong 8 | 9 | private[play] object RequestIdProvider { 10 | private val requestIDs: AtomicLong = new AtomicLong(0) 11 | def freshId(): Long = requestIDs.incrementAndGet() 12 | } 13 | -------------------------------------------------------------------------------- /core/play/src/main/scala/play/utils/Conversions.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.utils 6 | 7 | /** 8 | * provides conversion helpers 9 | */ 10 | object Conversions { 11 | 12 | def newMap[A, B](data: (A, B)*) = Map(data: _*) 13 | 14 | } 15 | -------------------------------------------------------------------------------- /core/play/src/main/scala/views/defaultpages/package.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package views.html 6 | 7 | /** 8 | * Contains default error, 404, forbidden, etc. pages. 9 | */ 10 | package object defaultpages 11 | -------------------------------------------------------------------------------- /core/play/src/main/scala/views/helper/form.scala.html: -------------------------------------------------------------------------------- 1 | @** 2 | * Generate an HTML form. 3 | * 4 | * Example: 5 | * {{{ 6 | * @form(action = routes.Users.submit, args = 'class -> "myForm") { 7 | * ... 8 | * } 9 | * }}} 10 | * 11 | * @param action The submit action. 12 | * @param args Set of extra HTML attributes. 13 | * @param body The form body. 14 | *@ 15 | @(action: play.api.mvc.Call, args: (Symbol,String)*)(body: => Html) 16 |
17 | @body 18 |
19 | -------------------------------------------------------------------------------- /core/play/src/test/conf/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/core/play/src/test/conf/application.conf -------------------------------------------------------------------------------- /core/play/src/test/resources/application-infinite-timeout.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | play.akka.shutdown-timeout = null -------------------------------------------------------------------------------- /core/play/src/test/resources/file withspace.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | color: blue; 3 | } 4 | -------------------------------------------------------------------------------- /core/play/src/test/resources/messages: -------------------------------------------------------------------------------- 1 | error.custom=This is a {0} 2 | error.customarg=custom error 3 | 4 | error.generalcustomerror=Some general custom error message 5 | 6 | constraint.custom=I am a {0} 7 | constraint.customarg=custom constraint 8 | 9 | format.custom=Look at me! I am a {0} 10 | format.customarg=custom format pattern 11 | 12 | myfieldlabel=I am the label of the field 13 | myfieldname=I am the name of the field -------------------------------------------------------------------------------- /core/play/src/test/resources/multipart-form-data-file.txt: -------------------------------------------------------------------------------- 1 | multipart-form-data-file -------------------------------------------------------------------------------- /core/play/src/test/resources/reference.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | play { 4 | http { 5 | secret { 6 | key = "a test secret" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /core/play/src/test/scala/play/data/MyUser.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.data; 6 | 7 | public class MyUser { 8 | public String email; 9 | public String password; 10 | public String extraField1; 11 | public String extraField2; 12 | public String extraField3; 13 | } 14 | -------------------------------------------------------------------------------- /dev-mode/play-docs-sbt-plugin/src/main/scala-sbt-0.13/com/typesafe/play/docs/sbtplugin/PlayDocsValidationCompat.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package com.typesafe.play.docs.sbtplugin 6 | 7 | import sbt._ 8 | 9 | private[sbtplugin] class PlayDocsValidationCompat { 10 | 11 | def getMarkdownFiles(base: java.io.File): Seq[(File, String)] = { 12 | (base / "manual" ** "*.md").get.pair(relativeTo(base)) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /dev-mode/play-docs-sbt-plugin/src/main/scala-sbt-1.0/com/typesafe/play/docs/sbtplugin/PlayDocsValidationCompat.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package com.typesafe.play.docs.sbtplugin 6 | 7 | import sbt._ 8 | import sbt.io.Path._ 9 | 10 | private[sbtplugin] class PlayDocsValidationCompat { 11 | 12 | def getMarkdownFiles(base: java.io.File): Seq[(File, String)] = { 13 | (base / "manual" ** "*.md").get.pair(relativeTo(base)) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /dev-mode/routes-compiler/src/test/resources/complexNames.routes: -------------------------------------------------------------------------------- 1 | GET /foo controllers.FooController.foo(`bar[]`: List[String]) 2 | -------------------------------------------------------------------------------- /dev-mode/routes-compiler/src/test/resources/complexTypes.routes: -------------------------------------------------------------------------------- 1 | GET /foo controllers.FooController.foo(bar: Option[Option[String]]) 2 | GET /foo controllers.FooController.foo(bar: (Int,Int,(Int,Int))) 3 | GET /foo controllers.FooController.foo(bar: A#B) 4 | GET /foo controllers.FooController.foo(bar: Option [ Option [ String ] ] ) 5 | GET /foo controllers.FooController.foo(bar: ( Int , Int , ( Int , Int ) ) ) 6 | GET /foo controllers.FooController.foo(bar: A # B ) 7 | -------------------------------------------------------------------------------- /dev-mode/routes-compiler/src/test/resources/duplicateHandlers.routes: -------------------------------------------------------------------------------- 1 | GET /foo controllers.FooController.foo(bar: Boolean = false) 2 | GET /foo2 controllers.FooController.foo(bar: Boolean = false, baz: Boolean = true) 3 | GET /bar controllers.BarController.bar(baz) 4 | -------------------------------------------------------------------------------- /dev-mode/routes-compiler/src/test/resources/generating.routes: -------------------------------------------------------------------------------- 1 | GET /foo controllers.FooController.foo(bar: Boolean = false) 2 | GET /foo/lotsOfParams controller.FooController.lotsOfParams(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int, g: Int, h: Int, i: Int, j: Int, k: String, l: String, m: String, n: String, o: String, p: String, q: Option[Int], r: Option[Int], s: Option[Int], t: Option[Int], u: Option[String], v: Float, w: Float, x: Int) 3 | -------------------------------------------------------------------------------- /dev-mode/run-support/src/main/java/play/runsupport/classloader/ApplicationClassLoaderProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.runsupport.classloader; 6 | 7 | import java.net.URLClassLoader; 8 | 9 | public interface ApplicationClassLoaderProvider { 10 | URLClassLoader get(); 11 | } 12 | -------------------------------------------------------------------------------- /dev-mode/run-support/src/main/scala/play/runsupport/NamedURLClassLoader.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.runsupport 6 | 7 | import java.net.URL 8 | import java.net.URLClassLoader 9 | 10 | /** 11 | * A ClassLoader with a toString() that prints name/urls. 12 | */ 13 | class NamedURLClassLoader(name: String, urls: Array[URL], parent: ClassLoader) extends URLClassLoader(urls, parent) { 14 | override def toString = name + "{" + getURLs.map(_.toString).mkString(", ") + "}" 15 | } 16 | -------------------------------------------------------------------------------- /dev-mode/run-support/src/main/scala/play/runsupport/ServerStartException.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.runsupport 6 | 7 | class ServerStartException(underlying: Throwable) extends IllegalStateException(underlying) { 8 | override def getMessage = underlying.getMessage 9 | } 10 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/main/scala-sbt-0.13/play/sbt/test/MediatorWorkaroundPluginCompat.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.sbt.test 6 | 7 | import sbt.Keys.ivyScala 8 | import sbt.Keys.sbtPlugin 9 | import sbt.AutoPlugin 10 | 11 | private[test] trait MediatorWorkaroundPluginCompat extends AutoPlugin { 12 | 13 | override def projectSettings = Seq( 14 | ivyScala := { ivyScala.value.map { _.copy(overrideScalaVersion = sbtPlugin.value) } } 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/main/scala-sbt-1.0/play/sbt/test/MediatorWorkaroundPluginCompat.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.sbt.test 6 | 7 | import sbt.Keys.scalaModuleInfo 8 | import sbt.Keys.sbtPlugin 9 | import sbt.AutoPlugin 10 | 11 | private[test] trait MediatorWorkaroundPluginCompat extends AutoPlugin { 12 | 13 | override def projectSettings = Seq( 14 | scalaModuleInfo := { scalaModuleInfo.value.map { _.withOverrideScalaVersion(sbtPlugin.value) } } 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/main/scala/play/sbt/test/MediatorWorkaroundPlugin.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.sbt.test 6 | 7 | import sbt._ 8 | 9 | /** 10 | * This tracks https://github.com/sbt/sbt/issues/2786 and it is intended to 11 | * be used ONLY internally for test purposes. 12 | */ 13 | object MediatorWorkaroundPlugin extends MediatorWorkaroundPluginCompat { 14 | override def requires = plugins.JvmPlugin 15 | override def trigger = noTrigger 16 | } 17 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/basic-service-with-routes-file/README: -------------------------------------------------------------------------------- 1 | This is your new Play application 2 | ===================================== 3 | 4 | This file will be packaged with your application, when using `play dist`. 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/basic-service-with-routes-file/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 6 | 7 | unmanagedSourceDirectories in Compile += baseDirectory.value.getParentFile / "project" / s"scala-sbt-${sbtBinaryVersion.value}" 8 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/basic-service-with-routes-file/src/main/resources/application.conf: -------------------------------------------------------------------------------- 1 | play.http.secret.key=";1[WE]JmK;XMCxV=S2P6kYl?A<^YcKYW3aui[SmusaQlkjq97A`M8l_S:iV?OmDh" 2 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/basic-service-with-routes-file/src/main/resources/routes: -------------------------------------------------------------------------------- 1 | ## Routes file 2 | 3 | GET / controllers.HomeController.index 4 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/basic-service-with-routes-file/src/main/scala/controllers/HomeController.scala: -------------------------------------------------------------------------------- 1 | package controllers 2 | 3 | import javax.inject.Inject 4 | 5 | import play.api.mvc._ 6 | 7 | /** 8 | * A very small controller that renders a home page. 9 | */ 10 | class HomeController @Inject()(cc: ControllerComponents) extends AbstractController(cc) { 11 | 12 | def index = Action { implicit request => 13 | Ok("Hello, this is Play!") 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/basic-service-with-routes-file/test: -------------------------------------------------------------------------------- 1 | # Build the distribution and ensure that the files we expect are indeed there 2 | > stage 3 | $ exists target/universal/stage/README 4 | $ exists target/universal/stage/bin/root 5 | 6 | > runProd --no-exit-sbt 7 | > verifyResourceContains / 200 Hello 8 | > stopProd --no-exit-sbt 9 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/basic-service/README: -------------------------------------------------------------------------------- 1 | This is your new Play application 2 | ===================================== 3 | 4 | This file will be packaged with your application, when using `play dist`. 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/basic-service/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 6 | 7 | unmanagedSourceDirectories in Compile += baseDirectory.value.getParentFile / "project" / s"scala-sbt-${sbtBinaryVersion.value}" 8 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/basic-service/src/main/resources/application.conf: -------------------------------------------------------------------------------- 1 | play.http.secret.key=";1[WE]JmK;XMCxV=S2P6kYl?A<^YcKYW3aui[SmusaQlkjq97A`M8l_S:iV?OmDh" 2 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/basic-service/src/main/scala/controllers/HomeController.scala: -------------------------------------------------------------------------------- 1 | package controllers 2 | 3 | import javax.inject.Inject 4 | 5 | import play.api.mvc._ 6 | 7 | /** 8 | * A very small controller that renders a home page. 9 | */ 10 | class HomeController @Inject()(cc: ControllerComponents) extends AbstractController(cc) { 11 | 12 | def index = Action { implicit request => 13 | Ok("Hello, this is Play!") 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/basic-service/src/main/scala/router/Routes.scala: -------------------------------------------------------------------------------- 1 | package router 2 | 3 | import javax.inject.Inject 4 | 5 | import play.api.mvc._ 6 | import play.api.routing.Router 7 | import play.api.routing.SimpleRouter 8 | import play.api.routing.sird._ 9 | 10 | class Routes @Inject()(controller: controllers.HomeController) extends SimpleRouter { 11 | override def routes: Router.Routes = { 12 | case GET(p"/") => controller.index 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/basic-service/test: -------------------------------------------------------------------------------- 1 | # Build the distribution and ensure that the files we expect are indeed there 2 | > stage 3 | $ exists target/universal/stage/README 4 | $ exists target/universal/stage/bin/root 5 | 6 | > runProd --no-exit-sbt 7 | > verifyResourceContains / 200 Hello 8 | > stopProd --no-exit-sbt 9 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/app/assets/main.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | .original { 5 | color: blue; 6 | } 7 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/app/controllers/Application.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | package controllers 5 | 6 | import play.api.mvc._ 7 | import javax.inject.Inject 8 | 9 | class Application @Inject()(c: ControllerComponents) extends AbstractController(c) { 10 | def index = Action { 11 | Ok("original") 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/changes/Application.scala.1: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | package controllers 5 | 6 | import play.api.mvc._ 7 | import javax.inject.Inject 8 | 9 | class Application @Inject()(c: ControllerComponents) extends AbstractController(c) { 10 | def index = Action { 11 | Ok("first") 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/changes/Application.scala.2: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | package controllers 5 | 6 | import play.api.mvc._ 7 | import javax.inject.Inject 8 | 9 | class Application @Inject()(c: ControllerComponents) extends AbstractController(c) { 10 | def index = Action { 11 | Ok("first) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/changes/Application.scala.3: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | package controllers 5 | 6 | import play.api.mvc._ 7 | import javax.inject.Inject 8 | 9 | class Application @Inject()(c: ControllerComponents) extends AbstractController(c) { 10 | def index = Action { 11 | Ok("second") 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/changes/application.conf.1: -------------------------------------------------------------------------------- 1 | fail = true -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/changes/main.less.1: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | .first { 5 | color: blue; 6 | } 7 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/changes/new.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | .original { 5 | color: blue; 6 | } 7 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/changes/new.css.1: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | .first { 5 | color: blue; 6 | } 7 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/changes/some.css.0: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | .original { 5 | color: blue; 6 | } 7 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/changes/some.css.1: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | .first { 5 | color: blue; 6 | } 7 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/changes/some.txt.0: -------------------------------------------------------------------------------- 1 | original -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/changes/some.txt.1: -------------------------------------------------------------------------------- 1 | changed -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/conf/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/conf/application.conf -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/conf/routes: -------------------------------------------------------------------------------- 1 | GET / controllers.Application.index 2 | GET /assets/*file controllers.Assets.versioned(path = "/public", file: Asset) 3 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 6 | 7 | addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.1.2") 8 | 9 | // We need this to test JNotify 10 | libraryDependencies += "com.lightbend.play" % "jnotify" % "0.94-play-2" 11 | 12 | unmanagedSourceDirectories in Compile += baseDirectory.value.getParentFile / "project" / s"scala-sbt-${sbtBinaryVersion.value}" 13 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/project/scala-sbt-0.13/Compat.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | object FileWatchServiceInitializer { 5 | lazy val initialFileWatchService = play.dev.filewatch.FileWatchService.sbt(500) 6 | } 7 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/project/scala-sbt-1.0/Compat.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | object FileWatchServiceInitializer { 5 | lazy val initialFileWatchService = play.dev.filewatch.FileWatchService.polling(500) 6 | } 7 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/public/a/some.txt: -------------------------------------------------------------------------------- 1 | original -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/public/b/some.txt: -------------------------------------------------------------------------------- 1 | original -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/dev-mode/public/css/some.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | .original { 5 | color: blue; 6 | } 7 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution-without-documentation/README: -------------------------------------------------------------------------------- 1 | This is your new Play application 2 | ===================================== 3 | 4 | This file will be packaged with your application, when using `play dist`. 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution-without-documentation/conf/application.conf: -------------------------------------------------------------------------------- 1 | play.http.secret.key=";1[WE]JmK;XMCxV=S2P6kYl?A<^YcKYW3aui[SmusaQlkjq97A`M8l_S:iV?OmDh" 2 | play.i18n.langs = [ "en" ] 3 | some.config="foo" 4 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution-without-documentation/conf/routes: -------------------------------------------------------------------------------- 1 | GET / controllers.Application.index 2 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution-without-documentation/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 6 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution-without-documentation/test: -------------------------------------------------------------------------------- 1 | # Build the distribution and ensure that there is no documentation 2 | > stage 3 | $ absent target/universal/stage/share 4 | 5 | -> compile:doc -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/README: -------------------------------------------------------------------------------- 1 | This is your new Play application 2 | ===================================== 3 | 4 | This file will be packaged with your application, when using `play dist`. 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/app/assets/main.less: -------------------------------------------------------------------------------- 1 | @base: #f938ab; 2 | 3 | .box-shadow(@style, @c) when (iscolor(@c)) { 4 | -webkit-box-shadow: @style @c; 5 | box-shadow: @style @c; 6 | } 7 | .box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) { 8 | .box-shadow(@style, rgba(0, 0, 0, @alpha)); 9 | } 10 | .box { 11 | color: saturate(@base, 5%); 12 | border-color: lighten(@base, 30%); 13 | div { .box-shadow(0 0 5px, 30%) } 14 | } 15 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/app/views/index.scala.html: -------------------------------------------------------------------------------- 1 | @(message: String) 2 | @main("Welcome to Play") { 3 | @message 4 | } 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/conf/META-INF/persistence.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/conf/META-INF/persistence.xml -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/conf/alternate.conf: -------------------------------------------------------------------------------- 1 | play.http.secret.key=";1[WE]JmK;XMCxV=S2P6kYl?A<^YcKYW3aui[SmusaQlkjq97A`M8l_S:iV?OmDh" 2 | play.i18n.langs = [ "en" ] 3 | some.config="bar" 4 | play.filters.enabled=[] 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/conf/application.conf: -------------------------------------------------------------------------------- 1 | play.http.secret.key=";1[WE]JmK;XMCxV=S2P6kYl?A<^YcKYW3aui[SmusaQlkjq97A`M8l_S:iV?OmDh" 2 | play.i18n.langs = [ "en" ] 3 | some.config="foo" 4 | play.filters.enabled=[] 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/conf/routes: -------------------------------------------------------------------------------- 1 | # Routes 2 | # This file defines all application routes (Higher priority routes first) 3 | # ~~~~ 4 | 5 | # Home page 6 | GET / controllers.Application.index 7 | 8 | GET /config controllers.Application.config 9 | GET /countApplicationConf controllers.Application.count 10 | 11 | # Map static resources from the /public folder to the /assets URL path 12 | GET /assets/*file controllers.Assets.at(path="/public", file) 13 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/dist/SomeFile.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/dist/SomeFile.txt -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/dist/SomeFolder/SomeOtherFile.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/dist/SomeFolder/SomeOtherFile.txt -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 6 | 7 | addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.1.2") 8 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/public/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/public/images/favicon.png -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/distribution/public/stylesheets/main.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/generated-keystore/app/controllers/HomeController.scala: -------------------------------------------------------------------------------- 1 | package controllers 2 | 3 | import javax.inject.Inject 4 | 5 | import play.api.mvc._ 6 | 7 | /** 8 | * A very small controller that renders a home page. 9 | */ 10 | class HomeController @Inject()(cc: ControllerComponents) extends AbstractController(cc) { 11 | 12 | def index = Action { implicit request => 13 | Ok("Hello, this is Play!") 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/generated-keystore/app/router/Routes.scala: -------------------------------------------------------------------------------- 1 | package router 2 | 3 | import javax.inject.Inject 4 | 5 | import play.api.mvc._ 6 | import play.api.routing.Router 7 | import play.api.routing.SimpleRouter 8 | import play.api.routing.sird._ 9 | 10 | class Routes @Inject()(controller: controllers.HomeController) extends SimpleRouter { 11 | override def routes: Router.Routes = { 12 | case GET(p"/") => controller.index 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/generated-keystore/conf/application.conf: -------------------------------------------------------------------------------- 1 | play.http.secret.key=";1[WE]JmK;XMCxV=S2P6kYl?A<^YcKYW3aui[SmusaQlkjq97A`M8l_S:iV?OmDh" 2 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/generated-keystore/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 6 | 7 | unmanagedSourceDirectories in Compile += baseDirectory.value.getParentFile / "project" / s"scala-sbt-${sbtBinaryVersion.value}" 8 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/generated-keystore/test: -------------------------------------------------------------------------------- 1 | # runs the devmode and checks that a generated-keystore file is created 2 | > run -Dhttps.port=9443 3 | > makeRequest / 200 4 | 5 | # keystore file was generated 6 | $ exists conf/generated.keystore 7 | > playStop -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject-assets/app/assets/main.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | h2 { 5 | color: red; 6 | } 7 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject-assets/module/app/assets/module.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | h1 { 5 | color: blue; 6 | } 7 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject-assets/module/build.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | name := "assets-module-sample" 6 | 7 | version := "1.0-SNAPSHOT" 8 | 9 | scalaVersion := sys.props.get("scala.version").getOrElse("2.12.6") 10 | 11 | includeFilter in (Assets, LessKeys.less) := "*.less" 12 | 13 | excludeFilter in (Assets, LessKeys.less) := new PatternFilter("""[_].*\.less""".r.pattern) 14 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject-assets/module/public/empty.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject-assets/module/public/empty.txt -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject-assets/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 6 | 7 | addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.1.2") 8 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject-assets/public/empty.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject-assets/public/empty.txt -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject/app/Root.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | object Root 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject/app/assets/main.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | h2 { 5 | color: red; 6 | } 7 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject/nonplaymodule/src/main/resources/empty.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject/nonplaymodule/src/main/resources/empty.txt -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject/nonplaymodule/src/main/scala/NonPlayModule.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | object NonPlayModule 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject/playmodule/app/PlayModule.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | object PlayModule 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject/playmodule/app/assets/module.less: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | h1 { 5 | color: blue; 6 | } 7 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 6 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject/public/empty.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject/public/empty.txt -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject/test: -------------------------------------------------------------------------------- 1 | # Check that the monitored files are right 2 | > checkPlayMonitoredFiles 3 | 4 | # Check that compile everything works 5 | > checkPlayCompileEverything 6 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/multiproject/transitive/app/Transitive.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | object Transitive 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/nested-secret/README: -------------------------------------------------------------------------------- 1 | This is your new Play application 2 | ===================================== 3 | 4 | This file will be packaged with your application, when using `play dist`. 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/nested-secret/conf/application.conf: -------------------------------------------------------------------------------- 1 | # This is the main configuration file for the application. 2 | # ~~~~~ 3 | 4 | # Secret key 5 | # ~~~~~ 6 | # The secret key is used to secure cryptographics functions. 7 | # If you deploy your application to several instances be sure to use the same key! 8 | play { 9 | crypto { 10 | secret = "changeme" 11 | } 12 | } 13 | 14 | # foo 15 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/nested-secret/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/nested-secret/test: -------------------------------------------------------------------------------- 1 | > playUpdateSecret 2 | > checkSecret 3 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/play-position-mapper/app/views/index.scala.html: -------------------------------------------------------------------------------- 1 | This is the first line. 2 | 3 | Foo: @foo.bar 4 | 5 | Here is the last line. 6 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/play-position-mapper/conf/routes: -------------------------------------------------------------------------------- 1 | # Here is the first line 2 | 3 | GET / controllers.Foo.index 4 | 5 | # Here is the last line 6 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/play-position-mapper/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 5 | 6 | unmanagedSourceDirectories in Compile += baseDirectory.value.getParentFile / "project" / s"scala-sbt-${sbtBinaryVersion.value}" 7 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/secret/README: -------------------------------------------------------------------------------- 1 | This is your new Play application 2 | ===================================== 3 | 4 | This file will be packaged with your application, when using `play dist`. 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/secret/conf/application.conf: -------------------------------------------------------------------------------- 1 | # This is the main configuration file for the application. 2 | # ~~~~~ 3 | 4 | # Secret key 5 | # ~~~~~ 6 | # The secret key is used to secure cryptographics functions. 7 | # If you deploy your application to several instances be sure to use the same key! 8 | play.http.secret.key="changeme" 9 | 10 | # foo 11 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/secret/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/secret/test: -------------------------------------------------------------------------------- 1 | > playUpdateSecret 2 | > checkSecret 3 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/aggregate-reverse-routes/a/app/controllers/a/A.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | package controllers.a 5 | 6 | import play.api.mvc._ 7 | import javax.inject.Inject 8 | 9 | class A @Inject()(c: ControllerComponents) extends AbstractController(c) { 10 | 11 | def index = Action { 12 | controllers.a.routes.A.index 13 | controllers.b.routes.B.index 14 | controllers.c.routes.C.index 15 | Ok 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/aggregate-reverse-routes/a/conf/a.routes: -------------------------------------------------------------------------------- 1 | GET /index controllers.a.A.index 2 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/aggregate-reverse-routes/b/app/controllers/b/B.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | package controllers.b 5 | 6 | import play.api.mvc._ 7 | import javax.inject.Inject 8 | 9 | class B @Inject()(c: ControllerComponents) extends AbstractController(c) { 10 | 11 | def index = Action { 12 | controllers.a.routes.A.index 13 | controllers.b.routes.B.index 14 | controllers.c.routes.C.index 15 | Ok 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/aggregate-reverse-routes/b/conf/b.routes: -------------------------------------------------------------------------------- 1 | GET /index controllers.b.B.index 2 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/aggregate-reverse-routes/c/app/controllers/c/C.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | package controllers.c 5 | 6 | import play.api.mvc._ 7 | import javax.inject.Inject 8 | 9 | class C @Inject()(c: ControllerComponents) extends AbstractController(c) { 10 | 11 | def index = Action { 12 | controllers.a.routes.A.index() 13 | controllers.b.routes.B.index() 14 | controllers.c.routes.C.index() 15 | Ok 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/aggregate-reverse-routes/c/conf/c.routes: -------------------------------------------------------------------------------- 1 | GET /index controllers.c.C.index 2 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/aggregate-reverse-routes/conf/routes: -------------------------------------------------------------------------------- 1 | -> /a a.Routes 2 | -> /b b.Routes 3 | -> /c c.Routes 4 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/aggregate-reverse-routes/nonplay/src/main/scala/nonplay.NonPlay.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | object NonPlay 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/aggregate-reverse-routes/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/incremental-compilation/a.routes: -------------------------------------------------------------------------------- 1 | GET /index controllers.a.Application.index 2 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/incremental-compilation/a.routes.1: -------------------------------------------------------------------------------- 1 | GET /index controllers.a.Application.index 2 | GET /foo controllers.a.Application.foo 3 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/incremental-compilation/b.routes: -------------------------------------------------------------------------------- 1 | GET /index controllers.b.Application.index 2 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/incremental-compilation/b.routes.1: -------------------------------------------------------------------------------- 1 | GET /index controllers.c.Application.index -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/incremental-compilation/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/app/controllers/InstanceController.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | package controllers 5 | 6 | import play.api.mvc._ 7 | import javax.inject.Inject 8 | 9 | class InstanceController @Inject()(c: ControllerComponents) extends AbstractController(c) { 10 | var invoked = 0 11 | 12 | def index = Action { 13 | invoked += 1 14 | Ok(invoked.toString) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/app/controllers/module/ModuleController.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | package controllers.module 5 | 6 | import play.api.mvc._ 7 | import javax.inject.Inject 8 | 9 | class ModuleController @Inject()(c: ControllerComponents) extends AbstractController(c) { 10 | def index = Action { 11 | Ok 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/app/controllers/πø$7ß.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | package controllers 5 | 6 | import play.api.mvc._ 7 | import javax.inject.Inject 8 | 9 | class πø$7ß @Inject() (c: ControllerComponents) extends AbstractController(c) { 10 | def ôü65$t(i: Int) = Action { 11 | Ok 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/conf/module.routes: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) Lightbend Inc. 3 | # 4 | GET /index controllers.module.ModuleController.index 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 6 | addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.2") 7 | 8 | unmanagedSourceDirectories in Compile += baseDirectory.value.getParentFile / "project" / s"scala-sbt-${sbtBinaryVersion.value}" 9 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/project/scala-sbt-0.13/Common.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | import sbt._ 5 | 6 | object Common { 7 | def allFiles(file: File): Seq[File] = file.***.filter(_.isFile).get 8 | } 9 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/project/scala-sbt-1.0/Common.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | import sbt._ 5 | 6 | object Common { 7 | def allFiles(file: File): Seq[File] = file.allPaths.filter(_.isFile).get 8 | } 9 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/abcd1234-main.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/abcd1234-main.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/abcd1234-minmain-min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/abcd1234-minmain-min.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/main.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/main.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/main.css.md5: -------------------------------------------------------------------------------- 1 | abcd1234 -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/minmain-min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/minmain-min.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/minmain-min.css.md5: -------------------------------------------------------------------------------- 1 | abcd1234 -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/minmain.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/minmain.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/nonfingerprinted-minmain-min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/nonfingerprinted-minmain-min.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/nonfingerprinted-minmain.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/nonfingerprinted-minmain.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/nonfingerprinted.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/public/css/nonfingerprinted.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/injected-routes-compilation/test: -------------------------------------------------------------------------------- 1 | # Stage it, so it's easier to debug 2 | > playRoutes 3 | > compile 4 | > test:compile 5 | > test 6 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/app/controllers/InstanceController.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | package controllers 5 | 6 | import play.api.mvc._ 7 | import javax.inject.Inject 8 | 9 | class InstanceController @Inject()(c: ControllerComponents) extends AbstractController(c) { 10 | def index = Action { 11 | Ok 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/app/controllers/module/ModuleController.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | package controllers.module 5 | 6 | import play.api.mvc._ 7 | import javax.inject.Inject 8 | 9 | class ModuleController @Inject()(c: ControllerComponents) extends AbstractController(c) { 10 | def index = Action { 11 | Ok 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/app/controllers/πø$7ß.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | package controllers 5 | 6 | import play.api.mvc._ 7 | import javax.inject.Inject 8 | 9 | class πø$7ß @Inject() (c: ControllerComponents) extends AbstractController(c) { 10 | def ôü65$t(i: Int) = Action { 11 | Ok 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/conf/module.routes: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) Lightbend Inc. 3 | # 4 | GET /index controllers.module.ModuleController.index 5 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 6 | addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.2") 7 | 8 | unmanagedSourceDirectories in Compile += baseDirectory.value.getParentFile / "project" / s"scala-sbt-${sbtBinaryVersion.value}" 9 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/project/scala-sbt-0.13/Common.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | import sbt._ 5 | 6 | object Common { 7 | def allFiles(file: File): Seq[File] = file.***.filter(_.isFile).get 8 | } 9 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/project/scala-sbt-1.0/Common.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | import sbt._ 5 | 6 | object Common { 7 | def allFiles(file: File): Seq[File] = file.allPaths.filter(_.isFile).get 8 | } 9 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/abcd1234-main.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/abcd1234-main.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/abcd1234-minmain-min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/abcd1234-minmain-min.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/main.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/main.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/main.css.md5: -------------------------------------------------------------------------------- 1 | abcd1234 -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/minmain-min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/minmain-min.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/minmain-min.css.md5: -------------------------------------------------------------------------------- 1 | abcd1234 -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/minmain.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/minmain.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/nonfingerprinted-minmain-min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/nonfingerprinted-minmain-min.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/nonfingerprinted-minmain.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/nonfingerprinted-minmain.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/nonfingerprinted.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/public/css/nonfingerprinted.css -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/routes-compilation/test: -------------------------------------------------------------------------------- 1 | # Stage it, so it's easier to debug 2 | > playRoutes 3 | > compile 4 | > test:compile 5 | > test 6 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/source-mapping/Application.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | package controllers 5 | 6 | import play.api.mvc._ 7 | import javax.inject.Inject 8 | 9 | class Application @Inject()(c: ControllerComponents) extends AbstractController(c) { 10 | def index = Action(Ok) 11 | } 12 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/source-mapping/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 5 | 6 | unmanagedSourceDirectories in Compile += baseDirectory.value.getParentFile / "project" / s"scala-sbt-${sbtBinaryVersion.value}" 7 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/source-mapping/project/scala-sbt-0.13/Common.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | import sbt._ 5 | 6 | import scala.reflect.ClassTag 7 | 8 | object Common { 9 | 10 | def assertNotEmpty[T: ClassTag](m: xsbti.Maybe[T]): T = { 11 | if (m.isEmpty) throw new Exception("Expected Some[" + implicitly[ClassTag[T]] + "]") 12 | else m.get() 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/source-mapping/project/scala-sbt-1.0/Common.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | import sbt._ 5 | 6 | import scala.reflect.ClassTag 7 | 8 | object Common { 9 | 10 | def assertNotEmpty[T: ClassTag](o: java.util.Optional[T]): T = { 11 | if (o.isPresent) o.get() 12 | else throw new Exception("Expected Some[" + implicitly[ClassTag[T]] + "]") 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/source-mapping/routes: -------------------------------------------------------------------------------- 1 | # A valid route 2 | GET / controllers.Application.index 3 | 4 | # This won't compile on line 5 5 | GET /foo controllers.Application.foo 6 | 7 | # A valid route 8 | GET /assets/*file controllers.Assets.at(path = "/public", file) 9 | -------------------------------------------------------------------------------- /dev-mode/sbt-plugin/src/sbt-test/routes-compiler-plugin/source-mapping/test: -------------------------------------------------------------------------------- 1 | > allProblemsAreFrom routes 5 -------------------------------------------------------------------------------- /documentation/addMarkdownCopyright: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Copyright (C) Lightbend Inc. 4 | 5 | cd manual 6 | for f in `find . -name '*.md'` 7 | do 8 | echo "" > /tmp/mdcw 9 | if head -n 1 $f | grep -qiE "(Lightbend|Typesafe) Inc. > /tmp/mdcw 12 | else 13 | cat $f >> /tmp/mdcw 14 | fi 15 | cp /tmp/mdcw $f 16 | rm /tmp/mdcw 17 | echo Updated $f 18 | done 19 | -------------------------------------------------------------------------------- /documentation/manual/LatestRelease.md: -------------------------------------------------------------------------------- 1 | 2 | # Latest release 3 | 4 | Learn more about the latest Play release. You can download Play releases [here](https://www.playframework.com/download). 5 | 6 | - [[What's new in Play 2.6?|Highlights26]] 7 | - [[Play 2.6 Migration Guide|Migration26]] 8 | - [[Other Play releases|Releases]] 9 | -------------------------------------------------------------------------------- /documentation/manual/about/index.toc: -------------------------------------------------------------------------------- 1 | Philosophy:Play philosophy 2 | PlayUserGroups:Play user groups -------------------------------------------------------------------------------- /documentation/manual/gettingStarted/images/eclipse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/gettingStarted/images/eclipse.png -------------------------------------------------------------------------------- /documentation/manual/gettingStarted/images/errorPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/gettingStarted/images/errorPage.png -------------------------------------------------------------------------------- /documentation/manual/gettingStarted/images/idea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/gettingStarted/images/idea.png -------------------------------------------------------------------------------- /documentation/manual/gettingStarted/index.toc: -------------------------------------------------------------------------------- 1 | Introduction: What is Play? 2 | Requirements:Play Requirements 3 | LearningExamples:Learning from Play Examples 4 | NewApplication:Creating a New Application 5 | Anatomy:Anatomy of a Play application 6 | PlayConsole:Using the Play console 7 | IDE:Setting-up your preferred IDE 8 | -------------------------------------------------------------------------------- /documentation/manual/hacking/images/TravisCI-Full-Color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/hacking/images/TravisCI-Full-Color.png -------------------------------------------------------------------------------- /documentation/manual/hacking/images/yourkit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/hacking/images/yourkit.png -------------------------------------------------------------------------------- /documentation/manual/hacking/index.toc: -------------------------------------------------------------------------------- 1 | BuildingFromSource:Building Play from source 2 | Repositories:Repositories 3 | Issues:Issue tracker 4 | Documentation:Documentation guidelines 5 | Translations:Translating documentation 6 | WorkingWithGit:Working with git 7 | ThirdPartyTools:3rd party tools 8 | -------------------------------------------------------------------------------- /documentation/manual/index.toc: -------------------------------------------------------------------------------- 1 | Home:Home 2 | LatestRelease:Latest release 3 | gettingStarted:Getting started 4 | tutorial: Hello World Tutorial 5 | working:Working with Play 6 | hacking:Contributing to Play 7 | about:About Play 8 | releases:Play releases 9 | ModuleDirectory:Module directory -------------------------------------------------------------------------------- /documentation/manual/releases/index.toc: -------------------------------------------------------------------------------- 1 | Releases:About Play releases 2 | !release26:Play 2.6 3 | !release25:Play 2.5 4 | !release24:Play 2.4 5 | !release23:Play 2.3 6 | !release22:Play 2.2 7 | !release21:Play 2.1 -------------------------------------------------------------------------------- /documentation/manual/releases/release21/index.toc: -------------------------------------------------------------------------------- 1 | Highlights21:What's new? 2 | Migration21:Migration Guide 3 | -------------------------------------------------------------------------------- /documentation/manual/releases/release22/index.toc: -------------------------------------------------------------------------------- 1 | Highlights22:What's new? 2 | Migration22:Migration Guide 3 | -------------------------------------------------------------------------------- /documentation/manual/releases/release23/index.toc: -------------------------------------------------------------------------------- 1 | Highlights23:What's new? 2 | Migration23:Migration Guide 3 | -------------------------------------------------------------------------------- /documentation/manual/releases/release24/index.toc: -------------------------------------------------------------------------------- 1 | Highlights24:What's new? 2 | !migration24:Migration Guides 3 | ReactiveStreamsIntegration:Reactive Streams integration (experimental) -------------------------------------------------------------------------------- /documentation/manual/releases/release24/migration24/index.toc: -------------------------------------------------------------------------------- 1 | Migration24:Migration Guide 2 | GlobalSettings:Removing `GlobalSettings` 3 | Anorm:Migrating Anorm 4 | PluginsToModules:Migrating Plugin to Module -------------------------------------------------------------------------------- /documentation/manual/releases/release25/index.toc: -------------------------------------------------------------------------------- 1 | Highlights25:What's new? 2 | !migration25:Migration Guides 3 | -------------------------------------------------------------------------------- /documentation/manual/releases/release25/migration25/index.toc: -------------------------------------------------------------------------------- 1 | Migration25:Migration Guide 2 | StreamsMigration25:Streams Migration Guide 3 | JavaMigration25:Java Migration Guide 4 | CryptoMigration25:Crypto Migration Guide 5 | -------------------------------------------------------------------------------- /documentation/manual/releases/release26/index.toc: -------------------------------------------------------------------------------- 1 | Highlights26:What's new? 2 | !migration26:Migration Guides 3 | -------------------------------------------------------------------------------- /documentation/manual/releases/release26/migration26/index.toc: -------------------------------------------------------------------------------- 1 | Migration26:Migration Guide 2 | MessagesMigration26:Messages Migration 3 | WSMigration26:WS Migration 4 | CacheMigration26:Cache Migration 5 | JPAMigration26:JPA Migration 6 | JavaConfigMigration26: Java Configuration API Migration -------------------------------------------------------------------------------- /documentation/manual/tutorial/code/javaguide/hello/hello.scala.html: -------------------------------------------------------------------------------- 1 | @* #hello-world-page *@ 2 | @main("Hello") { 3 |
4 |
5 |

Hello World

6 |
7 |
8 | } 9 | @* #hello-world-page *@ -------------------------------------------------------------------------------- /documentation/manual/tutorial/code/javaguide/hello/helloName.scala.html: -------------------------------------------------------------------------------- 1 | @(name: String) 2 | @main("Hello") { 3 |
4 |
5 |

Hello, @name

6 |
7 |
8 | } 9 | @* #hello-world-page *@ -------------------------------------------------------------------------------- /documentation/manual/tutorial/code/javaguide/hello/index.scala.html: -------------------------------------------------------------------------------- 1 | @main("Hello") { 2 |

Index view

3 | } -------------------------------------------------------------------------------- /documentation/manual/tutorial/code/javaguide/hello/main.scala.html: -------------------------------------------------------------------------------- 1 | @(title: String)(content: play.twirl.api.Html) 2 | 3 | 4 | 5 | 6 | @title 7 | 8 | 9 | @content 10 | 11 | 12 | -------------------------------------------------------------------------------- /documentation/manual/tutorial/code/routes: -------------------------------------------------------------------------------- 1 | # #hello-world-index-route 2 | GET / controllers.HomeController.index 3 | # #hello-world-index-route 4 | 5 | # #hello-world-hello-route 6 | GET /hello controllers.HomeController.hello 7 | # #hello-world-hello-route 8 | 9 | # #hello-world-hello-name-route 10 | # ###insert: GET /hello controllers.HomeController.hello(name: String) 11 | # #hello-world-hello-name-route -------------------------------------------------------------------------------- /documentation/manual/tutorial/images/hello-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/tutorial/images/hello-error.png -------------------------------------------------------------------------------- /documentation/manual/tutorial/images/hello-name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/tutorial/images/hello-name.png -------------------------------------------------------------------------------- /documentation/manual/tutorial/images/hello-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/tutorial/images/hello-page.png -------------------------------------------------------------------------------- /documentation/manual/tutorial/images/play-request-response.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/tutorial/images/play-request-response.png -------------------------------------------------------------------------------- /documentation/manual/tutorial/images/play-stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/tutorial/images/play-stack.png -------------------------------------------------------------------------------- /documentation/manual/tutorial/index.toc: -------------------------------------------------------------------------------- 1 | HelloWorldTutorial: Hello World Tutorial 2 | PlayApplicationOverview: Play Application Overview 3 | ImplementingHelloWorld: Implementing Hello World 4 | Tutorials:Play Tutorials -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/assets/Assets.md: -------------------------------------------------------------------------------- 1 | 2 | # Static assets 3 | 4 | This section covers serving your application’s static resources such as JavaScript, CSS and images. 5 | 6 | - [[Working with public assets|AssetsOverview]] 7 | - [[Using CoffeeScript|AssetsCoffeeScript]] 8 | - [[Using LESS CSS|AssetsLess]] 9 | - [[Using Sass|AssetsSass]] 10 | - [[Using JSHint|AssetsJSHint]] 11 | - [[Using RequireJs|RequireJS-support]] 12 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/assets/code/CommonAssets.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package common.assets 6 | 7 | package object controllers { 8 | type Assets = _root_.controllers.Assets 9 | } 10 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/assets/code/ConfiguredAssets.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package configured.assets 6 | 7 | package object controllers { 8 | type Assets = _root_.controllers.Assets 9 | } 10 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/assets/code/configured.assets.routes: -------------------------------------------------------------------------------- 1 | #assets-configured-path 2 | GET /assets/*file controllers.Assets.at(file) 3 | #assets-configured-path 4 | 5 | #assets-configured-path-versioned 6 | GET /assets/*file controllers.Assets.versioned(file) 7 | #assets-configured-path-versioned 8 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/assets/images/ClosureError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/working/commonGuide/assets/images/ClosureError.png -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/assets/images/coffeeError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/working/commonGuide/assets/images/coffeeError.png -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/assets/images/lessError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/working/commonGuide/assets/images/lessError.png -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/assets/images/sassError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/working/commonGuide/assets/images/sassError.png -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/assets/index.toc: -------------------------------------------------------------------------------- 1 | Assets:Static assets 2 | AssetsOverview:Working with public assets 3 | AssetsCoffeeScript:Using CoffeeScript 4 | AssetsLess:Using LESS CSS 5 | AssetsSass:Using Sass 6 | AssetsJSHint:Using JSHint 7 | RequireJS-support:Using RequireJs -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/build/code/build.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | //#default 6 | name := "foo" 7 | 8 | version := "1.0-SNAPSHOT" 9 | 10 | libraryDependencies ++= Seq( 11 | jdbc, 12 | anorm, 13 | ehcache 14 | ) 15 | 16 | lazy val root = (project in file(".")).enablePlugins(PlayScala) 17 | //#default 18 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/build/code/common.build.routes: -------------------------------------------------------------------------------- 1 | #assets-routes 2 | GET /index controllers.admin.HomeController.index() 3 | 4 | GET /assets/*file controllers.Assets.at(path="/public/lib/myadmin", file) 5 | #assets-routes 6 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/build/code/javaguide/common/build/controllers/HomeController.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | // ###replace: package controllers.admin; 6 | package javaguide.common.build.controllers; 7 | 8 | import play.mvc.Controller; 9 | import play.mvc.Result; 10 | 11 | public class HomeController extends Controller { 12 | public Result index() { 13 | return ok("admin"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/build/code/scalaguide/common/build/controllers/SubProjectAssets.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package scalaguide.common.build 6 | 7 | package object controllers { 8 | type AssetsBuilder = _root_.controllers.AssetsBuilder 9 | type Assets = _root_.controllers.Assets 10 | } 11 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/build/images/ivy-report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/working/commonGuide/build/images/ivy-report.png -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/build/index.toc: -------------------------------------------------------------------------------- 1 | Build:Contents 2 | BuildOverview:Overview of the build system 3 | sbtSettings:About sbt settings 4 | sbtDependencies:Manage application dependencies 5 | sbtSubProjects:Working with sub-projects 6 | PlayEnhancer:Play enhancer 7 | AggregatingReverseRouters:Aggregating reverse routers 8 | CompilationSpeed:Improving Compilation Times 9 | sbtCookbook:Cookbook 10 | sbtDebugging:Debugging your build 11 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/build/subprojectError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/working/commonGuide/build/subprojectError.png -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/configuration/code/Configuration.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | // With Play Scala 6 | 7 | object DependencyInjection { 8 | //#dependency-injection 9 | import javax.inject._ 10 | import play.api.Configuration 11 | 12 | class MyController @Inject()(config: Configuration) { 13 | // ... 14 | } 15 | //#dependency-injection 16 | } 17 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/configuration/code/application.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | //#custom-akka-http-server-provider 4 | //###replace: play.server.provider = server.CustomAkkaHttpServerProvider 5 | #play.server.provider = server.CustomAkkaHttpServerProvider 6 | //#custom-akka-http-server-provider 7 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/configuration/code/build.sbt: -------------------------------------------------------------------------------- 1 | //#play-ws-cache-deps 2 | libraryDependencies += ws 3 | libraryDependencies += ehcache 4 | //#play-ws-cache-deps 5 | 6 | //#prefix-with-play-akka-dev-mode 7 | PlayKeys.devSettings += "play.akka.dev-mode.akka.cluster.log-info" -> "off" 8 | //#prefix-with-play-akka-dev-mode 9 | 10 | //#custom-akka-http-server-provider 11 | PlayKeys.devSettings += "play.server.provider" -> "server.CustomAkkaHttpServerProvider" 12 | //#custom-akka-http-server-provider 13 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/configuration/index.toc: -------------------------------------------------------------------------------- 1 | Configuration:Configuration 2 | ConfigFile:Configuration file syntax and features 3 | ApplicationSecret:Configuring the application secret 4 | SettingsSession:Configuring the session cookie 5 | SettingsJDBC:Configuring the JDBC connection pool 6 | ThreadPools:Configuring Play's thread pools 7 | SettingsAkkaHttp:Configuring Akka Http Server Backend 8 | SettingsNetty:Configuring Netty Server Backend 9 | SettingsLogger:Configuring logging 10 | WsSSL:Configuring WS SSL 11 | WsCache:Configuring WS Cache -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/database/Databases.md: -------------------------------------------------------------------------------- 1 | 2 | # Databases 3 | 4 | This section covers a some topics related to working with databases in Play. There is language-specific documentation about working with databases in the [[Java|JavaDatabase]] and [[Scala|ScalaDatabase]] guides. 5 | 6 | - [[Using an in memory H2 database|Developing-with-the-H2-Database]] 7 | - [[Managing database evolutions|Evolutions]] 8 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/database/images/evolutions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/working/commonGuide/database/images/evolutions.png -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/database/images/evolutionsError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/working/commonGuide/database/images/evolutionsError.png -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/database/index.toc: -------------------------------------------------------------------------------- 1 | Databases:Databases 2 | Developing-with-the-H2-Database:Using an in memory H2 database 3 | Evolutions:Managing database evolutions -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/filters/code/filters.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | //#content 6 | libraryDependencies += filters 7 | //#content 8 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/filters/index.toc: -------------------------------------------------------------------------------- 1 | Filters:Play HTTP filters 2 | GzipEncoding:Configuring gzip encoding 3 | SecurityHeaders:Configuring security headers 4 | CorsFilter:Configuring CORS 5 | AllowedHostsFilter:Configuring allowed hosts 6 | RedirectHttpsFilter:Configuring HTTPS redirect 7 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/index.toc: -------------------------------------------------------------------------------- 1 | !build:The build system 2 | !configuration:Configuration 3 | !assets:Static assets 4 | !filters:Built-in HTTP filters 5 | !Modules:Extending Play with modules 6 | !database:Databases 7 | !server:Server Backends 8 | !production:Deploying your application 9 | !schedule:Scheduling tasks 10 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/production/Production.md: -------------------------------------------------------------------------------- 1 | 2 | # Using Play in production 3 | 4 | This section covers topics related to building, configuring and deploying your Play application for production. 5 | 6 | - [[Deploying your application|Deploying]] 7 | - [[Production configuration|ProductionConfiguration]] 8 | - [[Setting up a front end HTTP server|HTTPServer]] 9 | - [[Configuring HTTPS|ConfiguringHttps]] 10 | - [[Deploying to a cloud service|DeployingCloud]] 11 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/production/cloud/DeployingCloud.md: -------------------------------------------------------------------------------- 1 | 2 | # Deploying a Play application to a cloud service 3 | 4 | Many third party cloud services have built in support for deploying Play applications. 5 | 6 | - [[Deploying to Heroku|ProductionHeroku]] 7 | - [[Deploying to Cloud Foundry|Deploying-CloudFoundry]] 8 | - [[Deploying to Clever Cloud|Deploying-CleverCloud]] 9 | - [[Deploying to Boxfuse and AWS|Deploying-Boxfuse]] 10 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/production/cloud/index.toc: -------------------------------------------------------------------------------- 1 | DeployingCloud:Deploying to a cloud service 2 | ProductionHeroku:Deploying to Heroku 3 | Deploying-CloudFoundry:Deploying to Cloud Foundry 4 | Deploying-CleverCloud:Deploying to Clever Cloud 5 | Deploying-Boxfuse:Deploying to Boxfuse and AWS -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/production/code/debian.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | //#debian 6 | lazy val root = (project in file(".")) 7 | .enablePlugins(PlayScala, DebianPlugin) 8 | 9 | maintainer in Linux := "First Lastname " 10 | 11 | packageSummary in Linux := "My custom package summary" 12 | 13 | packageDescription := "My longer package description" 14 | //#debian 15 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/production/code/production.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | //#no-scaladoc 6 | sources in (Compile, doc) := Seq.empty 7 | 8 | publishArtifact in (Compile, packageDoc) := false 9 | //#no-scaladoc 10 | 11 | //#publish-repo 12 | publishTo := Some( 13 | "My resolver".at("https://mycompany.com/repo") 14 | ) 15 | 16 | credentials += Credentials( 17 | "Repo", 18 | "https://mycompany.com/repo", 19 | "admin", 20 | "admin123" 21 | ) 22 | //#publish-repo 23 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/production/index.toc: -------------------------------------------------------------------------------- 1 | Production:Using Play in production 2 | Deploying:Deploying your application 3 | ProductionConfiguration:Production configuration 4 | HTTPServer:Setting up a front end HTTP server 5 | ConfiguringHttps:Configuring HTTPS 6 | !cloud:Deploying to a cloud service -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/schedule/code/javaguide/scheduling/TasksModule.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | // ###replace: package tasks; 6 | package javaguide.scheduling; 7 | 8 | import com.google.inject.AbstractModule; 9 | 10 | public class TasksModule extends AbstractModule { 11 | 12 | @Override 13 | protected void configure() { 14 | bind(MyActorTask.class).asEagerSingleton(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/schedule/code/scalaguide/scheduling/TasksModule.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | //###replace: package tasks 6 | package scalaguide.scheduling 7 | 8 | import play.api.inject.SimpleModule 9 | import play.api.inject._ 10 | 11 | class TasksModule extends SimpleModule(bind[MyActorTask].toSelf.eagerly()) 12 | -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/schedule/index.toc: -------------------------------------------------------------------------------- 1 | ScheduledTasks:Scheduling Recurring Tasks -------------------------------------------------------------------------------- /documentation/manual/working/commonGuide/server/index.toc: -------------------------------------------------------------------------------- 1 | Server:Section contents 2 | AkkaHttpServer:Play with Akka HTTP Server 3 | NettyServer:Play with Netty Server 4 | -------------------------------------------------------------------------------- /documentation/manual/working/index.toc: -------------------------------------------------------------------------------- 1 | javaGuide:Play for Java developers 2 | scalaGuide:Play for Scala developers 3 | commonGuide:Common topics -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/advanced/JavaAdvanced.md: -------------------------------------------------------------------------------- 1 | 2 | # Advanced topics for Java 3 | 4 | This section describes advanced techniques for writing Play applications in Java. 5 | 6 | @toc@ 7 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/advanced/embedding/index.toc: -------------------------------------------------------------------------------- 1 | JavaEmbeddingPlay:Embedding Play -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/advanced/extending/JavaPlugins.md: -------------------------------------------------------------------------------- 1 | 2 | # Writing Plugins 3 | 4 | > **Note:** The `play.Plugin` API was deprecated in 2.4.x and is removed as of 2.5.x. 5 | > 6 | > Please use [[Play Modules|JavaPlayModules]], and see the [[Plugins to Modules|PluginsToModules]] page for migration details. 7 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/advanced/extending/code/javaguide/advanced/extending/MyApi.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.advanced.extending; 6 | 7 | // #module-class-api 8 | public class MyApi {} 9 | 10 | // #module-class-api 11 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/advanced/extending/index.toc: -------------------------------------------------------------------------------- 1 | JavaPlayModules:Writing Play modules 2 | JavaPlugins:Migrating from Plugins API 3 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/advanced/index.toc: -------------------------------------------------------------------------------- 1 | JavaAdvanced:Section contents 2 | routing:Advanced routing 3 | extending:Extending Play 4 | embedding:Embedding Play 5 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/advanced/routing/code/javaEmbeddedRouter.scala.html: -------------------------------------------------------------------------------- 1 | @* #javascript-embedded-router *@ 2 | @() 3 | 4 | @* ###skip: 2 *@ 5 | @import javaguide.binder.controllers.routes 6 | 7 | @helper.javascriptRouter("jsRoutes")( 8 | routes.javascript.Users.list, 9 | routes.javascript.Users.get 10 | ) 11 | @* #javascript-embedded-router *@ 12 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/advanced/routing/code/javaguide/binder/controllers/Users.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.binder.controllers; 6 | 7 | import play.mvc.Controller; 8 | import play.mvc.Result; 9 | 10 | public class Users extends Controller { 11 | 12 | public Result list() { 13 | return ok("List Users"); 14 | } 15 | 16 | public Result get(Long id) { 17 | return ok("Get user by id"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/advanced/routing/index.toc: -------------------------------------------------------------------------------- 1 | JavaJavascriptRouter: Javascript Router 2 | JavaRoutingDsl:Embedded Routing DSL 3 | RequestBinders:Custom Binding 4 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/index.toc: -------------------------------------------------------------------------------- 1 | !main:Main concepts 2 | !advanced:Advanced topics -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/akka/code/javaguide/akka/ConfiguredActorProtocol.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.akka; 6 | 7 | public class ConfiguredActorProtocol { 8 | 9 | public static class GetConfig {} 10 | } 11 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/akka/code/javaguide/akka/ConfiguredChildActorProtocol.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.akka; 6 | 7 | // #protocol 8 | import akka.actor.Actor; 9 | 10 | public class ConfiguredChildActorProtocol { 11 | 12 | public static class GetConfig {} 13 | 14 | public interface Factory { 15 | public Actor create(String key); 16 | } 17 | } 18 | // #protocol 19 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/akka/code/javaguide/akka/HelloActorProtocol.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | // #protocol 6 | // ###replace: package actors; 7 | package javaguide.akka; 8 | 9 | public class HelloActorProtocol { 10 | 11 | public static class SayHello { 12 | public final String name; 13 | 14 | public SayHello(String name) { 15 | this.name = name; 16 | } 17 | } 18 | } 19 | // #protocol 20 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/akka/code/javaguide/akka/ParentActorProtocol.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.akka; 6 | 7 | public class ParentActorProtocol { 8 | 9 | public static class GetChild { 10 | public final String key; 11 | 12 | public GetChild(String key) { 13 | this.key = key; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/akka/code/javaguide/akka/akka.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | #conf 4 | akka.actor.default-dispatcher.fork-join-executor.parallelism-max = 64 5 | akka.actor.debug.receive = on 6 | #conf 7 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/akka/index.toc: -------------------------------------------------------------------------------- 1 | JavaAkka:Integrating with Akka -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/application/index.toc: -------------------------------------------------------------------------------- 1 | JavaApplication:Application settings 2 | JavaEssentialAction:Essential Actions 3 | JavaHttpFilters:HTTP filters 4 | JavaErrorHandling:Error handling 5 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/async/code/javaguide.async.routes: -------------------------------------------------------------------------------- 1 | # Verify the controller's method signature 2 | GET /index controllers.Application.index() 3 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/async/index.toc: -------------------------------------------------------------------------------- 1 | JavaAsync:Handling asynchronous results 2 | JavaStream:Streaming HTTP responses 3 | JavaComet:Comet 4 | JavaWebSockets:WebSockets 5 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/cache/code/javaguide/cache/inject/Application.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.cache.inject; 6 | // #inject 7 | import play.cache.*; 8 | import play.mvc.*; 9 | 10 | import javax.inject.Inject; 11 | 12 | public class Application extends Controller { 13 | 14 | private AsyncCacheApi cache; 15 | 16 | @Inject 17 | public Application(AsyncCacheApi cache) { 18 | this.cache = cache; 19 | } 20 | 21 | // ... 22 | } 23 | // #inject 24 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/cache/code/javaguide/cache/qualified/Application.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.cache.qualified; 6 | 7 | // #qualified 8 | import play.cache.*; 9 | import play.mvc.*; 10 | 11 | import javax.inject.Inject; 12 | 13 | public class Application extends Controller { 14 | 15 | @Inject 16 | @NamedCache("session-cache") 17 | SyncCacheApi cache; 18 | 19 | // ... 20 | } 21 | // #qualified 22 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/cache/index.toc: -------------------------------------------------------------------------------- 1 | JavaCache:Using the Cache -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/config/index.toc: -------------------------------------------------------------------------------- 1 | JavaConfig:The Config API 2 | 3 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/code/injected.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | //#content 6 | routesGenerator := InjectedRoutesGenerator 7 | //#content 8 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/code/javaguide.dependencyinjection.routes: -------------------------------------------------------------------------------- 1 | #content 2 | GET / controllers.HomeController.index 3 | GET /assets/*file controllers.Assets.at(path = "/public", file) 4 | #content 5 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/code/javaguide.di.routes: -------------------------------------------------------------------------------- 1 | #content 2 | GET /some/path @controllers.Application.index() 3 | #content 4 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/code/javaguide/dependencyinjection/controllers/Assets.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.dependencyinjection.controllers; 6 | 7 | import controllers.AssetsMetadata; 8 | import play.api.http.HttpErrorHandler; 9 | 10 | public class Assets extends controllers.Assets { 11 | public Assets(HttpErrorHandler errorHandler, AssetsMetadata meta) { 12 | super(errorHandler, meta); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/code/javaguide/dependencyinjection/controllers/HomeController.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.dependencyinjection.controllers; 6 | 7 | import play.mvc.Controller; 8 | import play.mvc.Result; 9 | 10 | public class HomeController extends Controller { 11 | public Result index() { 12 | return ok(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/code/javaguide/di/CurrentSharePrice.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.di; 6 | 7 | // #singleton 8 | import javax.inject.*; 9 | 10 | @Singleton 11 | public class CurrentSharePrice { 12 | private volatile int price; 13 | 14 | public void set(int p) { 15 | price = p; 16 | } 17 | 18 | public int get() { 19 | return price; 20 | } 21 | } 22 | // #singleton 23 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/code/javaguide/di/EnglishHello.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.di; 6 | 7 | // #implemented-by 8 | public class EnglishHello implements Hello { 9 | 10 | public String sayHello(String name) { 11 | return "Hello " + name; 12 | } 13 | } 14 | // #implemented-by 15 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/code/javaguide/di/GermanHello.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.di; 6 | 7 | public class GermanHello implements Hello { 8 | @Override 9 | public String sayHello(String name) { 10 | return "Hallo " + name; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/code/javaguide/di/Hello.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.di; 6 | 7 | // #implemented-by 8 | import com.google.inject.ImplementedBy; 9 | 10 | @ImplementedBy(EnglishHello.class) 11 | public interface Hello { 12 | 13 | String sayHello(String name); 14 | } 15 | // #implemented-by 16 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/code/javaguide/di/MessageQueue.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.di; 6 | 7 | public class MessageQueue { 8 | public static boolean stopped = false; 9 | 10 | public static MessageQueue connect() { 11 | return new MessageQueue(); 12 | } 13 | 14 | public void stop() { 15 | stopped = true; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/code/javaguide/di/constructor/MyComponent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.di.constructor; 6 | 7 | // #constructor 8 | import javax.inject.*; 9 | import play.libs.ws.*; 10 | 11 | public class MyComponent { 12 | private final WSClient ws; 13 | 14 | @Inject 15 | public MyComponent(WSClient ws) { 16 | this.ws = ws; 17 | } 18 | 19 | // ... 20 | } 21 | // #constructor 22 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/code/javaguide/di/controllers/Application.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.di.controllers; 6 | 7 | import play.mvc.*; 8 | 9 | public class Application extends Controller { 10 | public Result index() { 11 | return ok(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/code/javaguide/di/field/MyComponent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.di.field; 6 | 7 | // #field 8 | import javax.inject.*; 9 | import play.libs.ws.*; 10 | 11 | public class MyComponent { 12 | @Inject WSClient ws; 13 | 14 | // ... 15 | } 16 | // #field 17 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/code/javaguide/di/guice/eager/StartModule.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.di.guice.eager; 6 | 7 | import javaguide.di.*; 8 | 9 | // #eager-guice-module 10 | import com.google.inject.AbstractModule; 11 | 12 | public class StartModule extends AbstractModule { 13 | protected void configure() { 14 | bind(ApplicationStart.class).asEagerSingleton(); 15 | } 16 | } 17 | // #eager-guice-module 18 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/code/static.sbt: -------------------------------------------------------------------------------- 1 | //#content 2 | routesGenerator := StaticRoutesGenerator 3 | //#content 4 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/dependencyinjection/index.toc: -------------------------------------------------------------------------------- 1 | JavaDependencyInjection:Dependency Injection with Guice 2 | JavaCompileTimeDependencyInjection:Compile Time Dependency Injection 3 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/forms/code/javaguide.forms.routes: -------------------------------------------------------------------------------- 1 | POST /form controllers.Application.submit 2 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/forms/code/javaguide/forms/controllers/Application.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.forms.controllers 6 | 7 | import javax.inject.Inject 8 | 9 | import play.api.mvc._ 10 | 11 | class Application @Inject()(components: ControllerComponents) extends AbstractController(components) { 12 | def submit = Action(Ok) 13 | } 14 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/forms/code/javaguide/forms/csrf.scala.html: -------------------------------------------------------------------------------- 1 | 2 | @* #csrf-call *@ 3 | @import helper._ 4 | 5 | @form(CSRF(scalaguide.forms.csrf.routes.ItemsController.save())) { 6 | ... 7 | } 8 | @* #csrf-call *@ 9 | 10 | @* #csrf-input *@ 11 | @form(scalaguide.forms.csrf.routes.ItemsController.save()) { 12 | @CSRF.formField 13 | ... 14 | } 15 | @* #csrf-input *@ 16 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/forms/code/javaguide/forms/customconstraint/ValidatableWithDB.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.forms.customconstraint; 6 | 7 | // #interface 8 | import play.db.Database; 9 | 10 | public interface ValidatableWithDB { 11 | public T validate(final Database db); 12 | } 13 | // #interface 14 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/forms/code/javaguide/forms/fullform.scala.html: -------------------------------------------------------------------------------- 1 | @* #full-form *@ 2 | @(myForm: Form[User]) 3 | 4 | @helper.form(action = routes.Application.submit()) { 5 | 6 | @helper.inputText(myForm("email")) 7 | 8 | @helper.inputPassword(myForm("password")) 9 | 10 | } 11 | @* #full-form *@ 12 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/forms/code/javaguide/forms/groups/LoginCheck.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.forms.groups; 6 | 7 | // #check 8 | public interface LoginCheck {} 9 | // #check 10 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/forms/code/javaguide/forms/groups/SignUpCheck.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.forms.groups; 6 | 7 | // #check 8 | public interface SignUpCheck {} 9 | // #check 10 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/forms/code/javaguide/forms/html/routes/package.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.forms.html 6 | 7 | package object routes { 8 | val Application = javaguide.forms.controllers.routes.Application 9 | } 10 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/forms/code/javaguide/forms/myFieldConstructorTemplate.scala.html: -------------------------------------------------------------------------------- 1 | @* #template *@ 2 | @(elements: helper.FieldElements) 3 | 4 |
5 | 6 |
7 | @elements.input 8 | @elements.errors.mkString(", ") 9 | @elements.infos.mkString(", ") 10 |
11 |
12 | @* #template *@ 13 | 14 | foobar 15 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/forms/code/javaguide/forms/view.scala.html: -------------------------------------------------------------------------------- 1 | @(form: Form[_]) 2 | 3 | @* #global-errors *@ 4 | @if(form.hasGlobalErrors) { 5 |

6 | @for(error <- form.globalErrors) { 7 |

@error.format(messages())

8 | } 9 |

10 | } 11 | @* #global-errors *@ 12 | 13 | @* #field-errors *@ 14 | @for(error <- form("email").errors) { 15 |

@error.format(messages())

16 | } 17 | @* #field-errors *@ 18 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/forms/code/javaguide/forms/withFieldConstructor.scala.html: -------------------------------------------------------------------------------- 1 | @(myForm: Form[User]) 2 | 3 | @import helper._ 4 | 5 | @* #field *@ 6 | @implicitField = @{ FieldConstructor(myFieldConstructorTemplate.f) } 7 | 8 | @inputText(myForm("email")) 9 | @* #field *@ 10 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/forms/index.toc: -------------------------------------------------------------------------------- 1 | JavaForms:Form definitions 2 | JavaFormHelpers:Using the form template helpers 3 | JavaCsrf:Protecting against CSRF -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/http/code/javaguide.http.routing.defaultvalue.routes: -------------------------------------------------------------------------------- 1 | # #clients 2 | # Pagination links, like /clients?page=3 3 | GET /clients controllers.Clients.list(page: Int ?= 1) 4 | # #clients 5 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/http/code/javaguide.http.routing.fixed.routes: -------------------------------------------------------------------------------- 1 | # #page 2 | # Extract the page parameter from the path, or fix the value for / 3 | GET / controllers.Application.show(page = "home") 4 | GET /:page controllers.Application.show(page) 5 | # #page 6 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/http/code/javaguide.http.routing.query.routes: -------------------------------------------------------------------------------- 1 | # #page 2 | # Extract the page parameter from the query string. 3 | # i.e. http://myserver.com/?page=index 4 | GET / controllers.Application.show(page) 5 | # #page 6 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/http/code/javaguide.http.routing.relative.routes: -------------------------------------------------------------------------------- 1 | #relative-hello 2 | GET /foo/bar/hello controllers.Relative.helloview 3 | GET /hello/:name controllers.Relative.hello(name) 4 | #relative-hello 5 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/http/code/javaguide.http.routing.reverse.routes: -------------------------------------------------------------------------------- 1 | #hello 2 | # Hello action 3 | GET /hello/:name controllers.Application.hello(name) 4 | #hello 5 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/http/code/javaguide/http/full/Application.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | // #full-controller 6 | // ###replace: package controllers; 7 | package javaguide.http.full; 8 | 9 | import play.*; 10 | import play.mvc.*; 11 | 12 | public class Application extends Controller { 13 | 14 | public Result index() { 15 | return ok("It works!"); 16 | } 17 | } 18 | // #full-controller 19 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/http/code/javaguide/http/routing/controllers/Items.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.http.routing.controllers; 6 | 7 | import play.mvc.Controller; 8 | import play.mvc.Result; 9 | 10 | public class Items extends Controller { 11 | public Result show(Long id) { 12 | return ok("showing item " + id); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/http/code/javaguide/http/routing/relative/views/hello.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Bob 6 | 7 | 8 | Absolute Link 9 | Relative Link 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/http/code/javaguide/http/routing/relative/views/hello.scala.html: -------------------------------------------------------------------------------- 1 | @import javaguide.http.routing.relative.controllers.routes 2 | 3 | @* #relative-hello-view *@ 4 | @(name: String, request: Http.RequestHeader) 5 | 6 |

Hello @name

7 | 8 | Absolute Link 9 | Relative Link 10 | 11 | @* #relative-hello-view *@ 12 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/http/code/javaguide/http/routing/reverse/controllers/Application.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | // #controller 6 | // ###replace: package controllers; 7 | package javaguide.http.routing.reverse.controllers; 8 | 9 | import play.*; 10 | import play.mvc.*; 11 | 12 | public class Application extends Controller { 13 | 14 | public Result hello(String name) { 15 | return ok("Hello " + name + "!"); 16 | } 17 | } 18 | // #controller 19 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/http/code/javaguide/http/views/index.scala.html: -------------------------------------------------------------------------------- 1 | @() 2 | @* #flash-template *@ 3 | @if(flash.containsKey("success")) { 4 | @flash.get("success") 5 | } else { 6 | Welcome! 7 | } 8 | @* #flash-template *@ 9 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/http/images/routesError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/working/javaGuide/main/http/images/routesError.png -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/http/index.toc: -------------------------------------------------------------------------------- 1 | JavaActions:Actions, Controllers and Results 2 | JavaRouting:HTTP routing 3 | JavaResponse:Manipulating the HTTP response 4 | JavaSessionFlash:Session and Flash scopes 5 | JavaBodyParsers:Body parsers 6 | JavaActionsComposition:Actions composition 7 | JavaActionCreator:HTTP Request Handlers / ActionCreator 8 | JavaContentNegotiation:Content negotiation 9 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/i18n/code/javaguide/i18n/explicitjavatemplate.scala.html: -------------------------------------------------------------------------------- 1 | @* #template *@ 2 | @(messages: play.i18n.Messages) 3 | @messages.at("hello") 4 | @* #template *@ 5 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/i18n/code/javaguide/i18n/helloscalatemplate.scala.html: -------------------------------------------------------------------------------- 1 | @* #template *@ 2 | @Messages("hello") 3 | @* #template *@ 4 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/i18n/code/javaguide/i18n/hellotemplate.scala.html: -------------------------------------------------------------------------------- 1 | @* #template *@ 2 | @import play.mvc.Http.Context.Implicit._ 3 | @() 4 | @{messages().at("hello")} 5 | @* #template *@ -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/i18n/code/javaguide/i18n/messages: -------------------------------------------------------------------------------- 1 | #single-apostrophe 2 | info.error=You aren''t logged in! 3 | #single-apostrophe 4 | 5 | #parameter-escaping 6 | example.formatting=When using MessageFormat, '''{0}''' is replaced with the first parameter. 7 | #parameter-escaping 8 | 9 | hello=hello -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/i18n/code/javaguide/i18n/messages.en-US: -------------------------------------------------------------------------------- 1 | hello=howdy -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/i18n/code/javaguide/i18n/messages.fr: -------------------------------------------------------------------------------- 1 | hello=bonjour -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/i18n/index.toc: -------------------------------------------------------------------------------- 1 | JavaI18N:Internationalization with Messages 2 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/json/code/javaguide/json/JavaJsonCustomObjectMapperModule.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.json; 6 | 7 | import com.google.inject.AbstractModule; 8 | 9 | // #custom-java-object-mapper2 10 | public class JavaJsonCustomObjectMapperModule extends AbstractModule { 11 | 12 | @Override 13 | protected void configure() { 14 | bind(JavaJsonCustomObjectMapper.class).asEagerSingleton(); 15 | } 16 | } 17 | // #custom-java-object-mapper2 18 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/json/index.toc: -------------------------------------------------------------------------------- 1 | JavaJsonActions:Handling and serving JSON -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/logging/index.toc: -------------------------------------------------------------------------------- 1 | JavaLogging:Logging -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/sql/code/jpa.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | //#jpa-sbt-dependencies 6 | libraryDependencies ++= Seq( 7 | javaJpa, 8 | "org.hibernate" % "hibernate-entitymanager" % "5.1.0.Final" // replace by your jpa implementation 9 | ) 10 | //#jpa-sbt-dependencies 11 | 12 | //#jpa-externalize-resources 13 | PlayKeys.externalizeResources := false 14 | //#jpa-externalize-resources 15 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/sql/images/dbError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/working/javaGuide/main/sql/images/dbError.png -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/sql/index.toc: -------------------------------------------------------------------------------- 1 | JavaDatabase:Configuring and using JDBC 2 | JavaJPA:Integrating with JPA 3 | JavaEbean:Using Ebean ORM 4 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/tests/code/javaguide.tests.databases.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | //#content 6 | libraryDependencies += javaJdbc % Test 7 | //#content 8 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/tests/code/javaguide.tests.guice.routes: -------------------------------------------------------------------------------- 1 | GET / controllers.Application.index() 2 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/tests/code/javaguide.tests.routes: -------------------------------------------------------------------------------- 1 | GET / controllers.HomeController.index() 2 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/tests/code/javaguide/tests/controllers/HomeController.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.tests.controllers; 6 | 7 | import play.mvc.*; 8 | 9 | public class HomeController extends Controller { 10 | 11 | public Result index() { 12 | return ok(javaguide.tests.html.index.render("Welcome to Play!")); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/tests/code/javaguide/tests/index.scala.html: -------------------------------------------------------------------------------- 1 | @(title: String) 2 | 3 |

@title

4 | click me 5 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/tests/code/tests/guice/Component.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.tests.guice; 6 | 7 | // #component 8 | public interface Component { 9 | String hello(); 10 | } 11 | // #component 12 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/tests/code/tests/guice/ComponentModule.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.tests.guice; 6 | 7 | // #component-module 8 | import com.google.inject.AbstractModule; 9 | 10 | public class ComponentModule extends AbstractModule { 11 | protected void configure() { 12 | bind(Component.class).to(DefaultComponent.class); 13 | } 14 | } 15 | // #component-module 16 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/tests/code/tests/guice/DefaultComponent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.tests.guice; 6 | 7 | // #default-component 8 | public class DefaultComponent implements Component { 9 | public String hello() { 10 | return "default"; 11 | } 12 | } 13 | // #default-component 14 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/tests/code/tests/guice/MockComponent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package javaguide.tests.guice; 6 | 7 | // #mock-component 8 | public class MockComponent implements Component { 9 | public String hello() { 10 | return "mock"; 11 | } 12 | } 13 | // #mock-component 14 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/tests/index.toc: -------------------------------------------------------------------------------- 1 | JavaTest:Writing tests 2 | JavaFunctionalTest:Writing functional tests 3 | JavaTestingWithGuice:Testing with Guice 4 | JavaTestingWithDatabases:Testing with databases 5 | JavaTestingWebServiceClients:Testing web service clients 6 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/upload/index.toc: -------------------------------------------------------------------------------- 1 | JavaFileUpload:Direct upload and multipart/form-data -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/ws/code/javaguide.ws.routes: -------------------------------------------------------------------------------- 1 | # #ws-openid-routes 2 | GET /openID/login controllers.OpenIDController.login() 3 | POST /openID/login controllers.OpenIDController.loginPost() 4 | GET /openID/callback controllers.OpenIDController.openIDCallback() 5 | # #ws-openid-routes 6 | 7 | # #ws-oauth-routes 8 | GET /twitter/homeTimeline controllers.Twitter.homeTimeline() 9 | GET /twitter/auth controllers.Twitter.auth() 10 | # #ws-oauth-routes 11 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/ws/code/javaguide/ws/login.scala.html: -------------------------------------------------------------------------------- 1 | @(message: String) 2 | 3 | Message: @message 4 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/ws/code/javaopenid.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | //#javaopenid-sbt-dependencies 6 | libraryDependencies ++= Seq( 7 | openId 8 | ) 9 | //#javaopenid-sbt-dependencies 10 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/ws/code/javaws.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | //#javaws-sbt-dependencies 6 | libraryDependencies ++= Seq( 7 | javaWs 8 | ) 9 | //#javaws-sbt-dependencies 10 | -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/ws/index.toc: -------------------------------------------------------------------------------- 1 | JavaWS:The Play WS API 2 | JavaOpenID:Connecting to OpenID services 3 | JavaOAuth:Accessing resources protected by OAuth -------------------------------------------------------------------------------- /documentation/manual/working/javaGuide/main/xml/index.toc: -------------------------------------------------------------------------------- 1 | JavaXmlRequests:Handling and serving XML requests -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/advanced/ScalaAdvanced.md: -------------------------------------------------------------------------------- 1 | 2 | # Advanced topics for Scala 3 | 4 | This section describes advanced techniques for writing Play applications in Scala. 5 | 6 | @toc@ 7 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/advanced/embedding/index.toc: -------------------------------------------------------------------------------- 1 | ScalaEmbeddingPlayAkkaHttp:Embedding Play with Akka HTTP Server 2 | ScalaEmbeddingPlayNetty:Embedding Play with Netty Server 3 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/advanced/extending/ScalaPlugins.md: -------------------------------------------------------------------------------- 1 | 2 | # Writing Plugins 3 | 4 | > **Note:** The `play.api.Plugin` API was deprecated in 2.4.x and is removed as of 2.5.x. 5 | > 6 | > Please use [[Play Modules|ScalaPlayModules]], and see the [[Plugins to Modules|PluginsToModules]] page for migration details. 7 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/advanced/extending/index.toc: -------------------------------------------------------------------------------- 1 | ScalaPlayModules:Writing Play modules 2 | ScalaPlugins:Migrating from Plugins API 3 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/advanced/index.toc: -------------------------------------------------------------------------------- 1 | ScalaAdvanced:Section contents 2 | iteratees:Handling data streams reactively 3 | routing:Advanced routing 4 | extending:Extending Play 5 | embedding:Embedding Play 6 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/advanced/iteratees/index.toc: -------------------------------------------------------------------------------- 1 | Iteratees:Iteratees 2 | Enumerators:Enumerators 3 | Enumeratees:Enumeratees -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/advanced/routing/code/scalaEmbeddedRouter.scala.html: -------------------------------------------------------------------------------- 1 | @* #javascript-embedded-router *@ 2 | @()(implicit req: play.api.mvc.RequestHeader) 3 | 4 | @* ###skip: 2 *@ 5 | @import scalaguide.binder.controllers.routes 6 | 7 | @helper.javascriptRouter("jsRoutes")( 8 | routes.javascript.Users.list, 9 | routes.javascript.Users.get 10 | ) 11 | @* #javascript-embedded-router *@ 12 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/advanced/routing/index.toc: -------------------------------------------------------------------------------- 1 | ScalaSirdRouter:String Interpolating Routing DSL 2 | ScalaJavascriptRouting:Javascript routing 3 | ScalaRequestBinders:Custom Binding 4 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/index.toc: -------------------------------------------------------------------------------- 1 | !main:Main concepts 2 | !advanced:Advanced topics -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/akka/index.toc: -------------------------------------------------------------------------------- 1 | ScalaAkka:Integrating with Akka -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/application/index.toc: -------------------------------------------------------------------------------- 1 | ScalaApplication:Application Settings 2 | ScalaHttpRequestHandlers:HTTP request handlers 3 | ScalaEssentialAction:Essential Actions 4 | ScalaHttpFilters:HTTP filters 5 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/async/index.toc: -------------------------------------------------------------------------------- 1 | ScalaAsync:Asynchronous results 2 | ScalaStream:Streaming HTTP responses 3 | ScalaComet:Comet 4 | ScalaWebSockets:WebSockets 5 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/cache/index.toc: -------------------------------------------------------------------------------- 1 | ScalaCache:Using the Cache -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/config/index.toc: -------------------------------------------------------------------------------- 1 | ScalaConfig:The Configuration API 2 | 3 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/dependencyinjection/code/injected.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | //#content 6 | routesGenerator := InjectedRoutesGenerator 7 | //#content 8 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/dependencyinjection/code/scalaguide.dependencyinjection.bar.routes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/working/scalaGuide/main/dependencyinjection/code/scalaguide.dependencyinjection.bar.routes -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/dependencyinjection/code/scalaguide.dependencyinjection.injected.routes: -------------------------------------------------------------------------------- 1 | #injected 2 | GET /some/path @controllers.Application.index 3 | #injected 4 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/dependencyinjection/code/scalaguide.dependencyinjection.routes: -------------------------------------------------------------------------------- 1 | #content 2 | GET / controllers.Application.index 3 | GET /foo controllers.Application.foo 4 | -> /bar bar.Routes 5 | GET /assets/*file controllers.Assets.at(path = "/public", file) 6 | #content 7 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/dependencyinjection/code/static.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | //#content 6 | routesGenerator := StaticRoutesGenerator 7 | //#content 8 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/dependencyinjection/index.toc: -------------------------------------------------------------------------------- 1 | ScalaDependencyInjection:Runtime dependency injection 2 | ScalaCompileTimeDependencyInjection:Compile time dependency injection -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/forms/code/scalaguide/forms/csrf.scala.html: -------------------------------------------------------------------------------- 1 | @()(implicit request: play.api.mvc.RequestHeader) 2 | 3 | @import scalaguide.forms.csrf.routes 4 | 5 | @* #csrf-call *@ 6 | @import helper._ 7 | 8 | @form(CSRF(routes.ItemsController.save())) { 9 | ... 10 | } 11 | @* #csrf-call *@ 12 | 13 | @* #csrf-input *@ 14 | @form(routes.ItemsController.save()) { 15 | @CSRF.formField 16 | ... 17 | } 18 | @* #csrf-input *@ 19 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/forms/code/scalaguide/forms/scalafieldconstructor/userDeclare.scala.html: -------------------------------------------------------------------------------- 1 | @(myForm: Form[User])(implicit messages: Messages) 2 | 3 | @* #declare-implicit *@ 4 | @implicitField = @{ helper.FieldConstructor(myFieldConstructorTemplate.f) } 5 | @* #declare-implicit *@ 6 | 7 | @* #form *@ 8 | @helper.inputText(myForm("username")) 9 | @* #form *@ 10 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/forms/code/scalaguide/forms/scalafieldconstructor/userImport.scala.html: -------------------------------------------------------------------------------- 1 | @(myForm: Form[User])(implicit messages: Messages) 2 | 3 | @* #import-myhelper *@ 4 | @import MyHelpers._ 5 | @* #import-myhelper *@ 6 | 7 | @* #form *@ 8 | @helper.inputText(myForm("username")) 9 | @* #form *@ 10 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/forms/images/lifecycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/working/scalaGuide/main/forms/images/lifecycle.png -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/forms/index.toc: -------------------------------------------------------------------------------- 1 | ScalaForms:Handling form submission 2 | ScalaCsrf:Protecting against CSRF 3 | ScalaCustomValidations:Custom Validations 4 | ScalaCustomFieldConstructors:Custom Field Constructors -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/http/code/scalaguide.http.routing.defaultvalue.routes: -------------------------------------------------------------------------------- 1 | # #clients 2 | # Pagination links, like /clients?page=3 3 | GET /clients controllers.Clients.list(page: Int ?= 1) 4 | # #clients 5 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/http/code/scalaguide.http.routing.fixed.routes: -------------------------------------------------------------------------------- 1 | # #page 2 | # Extract the page parameter from the path, or fix the value for / 3 | GET / controllers.Application.show(page = "home") 4 | GET /:page controllers.Application.show(page) 5 | # #page 6 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/http/code/scalaguide.http.routing.query.routes: -------------------------------------------------------------------------------- 1 | # #page 2 | # Extract the page parameter from the query string. 3 | GET / controllers.Application.show(page) 4 | # #page 5 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/http/code/scalaguide.http.routing.relative.routes: -------------------------------------------------------------------------------- 1 | #relative-hello 2 | GET /foo/bar/hello controllers.Relative.helloview 3 | GET /hello/:name controllers.Relative.hello(name) 4 | #relative-hello 5 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/http/code/scalaguide.http.routing.reverse.routes: -------------------------------------------------------------------------------- 1 | # #route 2 | # Hello action 3 | GET /hello/:name controllers.Application.hello(name) 4 | # #route 5 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/http/code/scalaguide/http/routing/relative/views/hello.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Bob 6 | 7 | 8 | Absolute Link 9 | Relative Link 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/http/code/scalaguide/http/routing/relative/views/hello.scala.html: -------------------------------------------------------------------------------- 1 | @import scalaguide.http.routing.relative.controllers.routes 2 | 3 | @* #relative-hello-view *@ 4 | @(name: String)(implicit request: RequestHeader) 5 | 6 |

Hello @name

7 | 8 | Absolute Link 9 | Relative Link 10 | 11 | @* #relative-hello-view *@ 12 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/http/code/scalaguide/http/routing/views/Clients/display.scala.html: -------------------------------------------------------------------------------- 1 | @(msg: String) 2 | @msg 3 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/http/code/scalaguide/http/scalasessionflash/views/index.scala.html: -------------------------------------------------------------------------------- 1 | @* #flash-template *@ 2 | @()(implicit flash: Flash) 3 | ... 4 | @flash.get("success").getOrElse("Welcome!") 5 | ... 6 | @* #flash-template *@ 7 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/http/images/routesError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/working/scalaGuide/main/http/images/routesError.png -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/http/index.toc: -------------------------------------------------------------------------------- 1 | ScalaActions:Actions, Controllers and Results 2 | ScalaRouting:HTTP Routing 3 | ScalaResults:Manipulating results 4 | ScalaSessionFlash:Session and Flash scopes 5 | ScalaBodyParsers:Body parsers 6 | ScalaActionsComposition:Actions composition 7 | ScalaContentNegotiation:Content negotiation 8 | ScalaErrorHandling:Handling errors -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/i18n/code/scalaguide/i18n/messages: -------------------------------------------------------------------------------- 1 | #apostrophe-messages 2 | info.error=You aren''t logged in! 3 | #apostrophe-messages 4 | 5 | #parameter-escaping 6 | example.formatting=When using MessageFormat, '''{0}''' is replaced with the first parameter. 7 | #parameter-escaping 8 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/i18n/index.toc: -------------------------------------------------------------------------------- 1 | ScalaI18N:Internationalization with Messages 2 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/json/index.toc: -------------------------------------------------------------------------------- 1 | ScalaJson:JSON basics 2 | ScalaJsonHttp:JSON with HTTP 3 | ScalaJsonCombinators:JSON Reads/Writes/Format Combinators 4 | ScalaJsonAutomated:JSON automated mapping 5 | ScalaJsonTransformers:JSON Transformers 6 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/logging/index.toc: -------------------------------------------------------------------------------- 1 | ScalaLogging:Logging -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/sql/images/dbError.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/manual/working/scalaGuide/main/sql/images/dbError.png -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/sql/index.toc: -------------------------------------------------------------------------------- 1 | ScalaDatabase:Configuring and using JDBC 2 | slick:Using Slick to access your database 3 | ScalaAnorm:Using Anorm to access your database 4 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/tests/code/controllers/HomeController.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package scalaguide.tests 6 | 7 | package controllers 8 | 9 | import javax.inject.Inject 10 | 11 | import play.api.mvc._ 12 | 13 | class HomeController @Inject()(cc: ControllerComponents) extends AbstractController(cc) { 14 | def index() = Action { 15 | Ok("Hello Bob").as("text/plain") 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/tests/code/database/databases.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | //#content 6 | libraryDependencies += jdbc % Test 7 | //#content 8 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/tests/code/models/User.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package scalaguide.tests 6 | 7 | package models 8 | 9 | // #scalatest-models 10 | case class Role(name: String) 11 | 12 | case class User(id: String, name: String, email: String) 13 | // #scalatest-models 14 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/tests/code/scalaguide.tests.guice.routes: -------------------------------------------------------------------------------- 1 | GET / controllers.Application.index() 2 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/tests/code/services/UserRepository.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package scalaguide.tests 6 | 7 | package services 8 | 9 | import models._ 10 | 11 | // #scalatest-repository 12 | trait UserRepository { 13 | def roles(user: User): Set[Role] 14 | } 15 | // #scalatest-repository 16 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/tests/code/services/UserService.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package scalaguide.tests 6 | 7 | package services 8 | 9 | import models._ 10 | 11 | // #scalatest-userservice 12 | class UserService(userRepository: UserRepository) { 13 | 14 | def isAdmin(user: User): Boolean = { 15 | userRepository.roles(user).contains(Role("ADMIN")) 16 | } 17 | } 18 | // #scalatest-userservice 19 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/tests/code/tests/guice/controllers/Application.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package scalaguide.tests.guice 6 | package controllers 7 | 8 | // #controller 9 | import play.api.mvc._ 10 | import javax.inject.Inject 11 | 12 | class Application @Inject()(component: Component, cc: ControllerComponents) extends AbstractController(cc) { 13 | def index() = Action { 14 | Ok(component.hello) 15 | } 16 | } 17 | // #controller 18 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/tests/code/views/html/index.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package views.html 6 | 7 | import play.api.mvc._ 8 | 9 | import scala.concurrent.ExecutionContext 10 | import scala.concurrent.Future 11 | import ExecutionContext.Implicits.global 12 | 13 | object index extends Results { 14 | 15 | def apply(input: String): Future[Result] = { 16 | Future( 17 | Ok("Hello Coco").as("text/html") 18 | ) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/upload/code/scalaguide.upload.fileupload.routes: -------------------------------------------------------------------------------- 1 | GET / controllers.ScalaFileUploadController.index() 2 | 3 | # #application-upload-routes 4 | POST / controllers.ScalaFileUploadController.upload() 5 | # #application-upload-routes 6 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/upload/code/scalaguide/templates/views/uploadForm.scala.html: -------------------------------------------------------------------------------- 1 | @import scalaguide.upload.fileupload.controllers._ 2 | @* #file-upload-form *@ 3 | @helper.form(action = routes.ScalaFileUploadController.upload, 'enctype -> "multipart/form-data") { 4 | 5 | 6 | 7 |

8 | 9 |

10 | 11 | } 12 | @* #file-upload-form *@ 13 | -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/upload/index.toc: -------------------------------------------------------------------------------- 1 | ScalaFileUpload:Direct upload and multipart/form-data -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/ws/index.toc: -------------------------------------------------------------------------------- 1 | ScalaWS:The Play WS API 2 | ScalaOpenID:Connecting to OpenID services 3 | ScalaOAuth:Accessing resources protected by OAuth -------------------------------------------------------------------------------- /documentation/manual/working/scalaGuide/main/xml/index.toc: -------------------------------------------------------------------------------- 1 | ScalaXmlRequests:Handling and serving XML requests -------------------------------------------------------------------------------- /documentation/project/build.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) Lightbend Inc. 3 | # 4 | sbt.version=1.2.8 5 | -------------------------------------------------------------------------------- /documentation/src/main/resources/application.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | play.http.secret.key = "i am very secret" 4 | -------------------------------------------------------------------------------- /documentation/src/test/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /documentation/style/external.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/style/external.png -------------------------------------------------------------------------------- /documentation/style/header-pattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/documentation/style/header-pattern.png -------------------------------------------------------------------------------- /persistence/play-java-jdbc/src/main/java/play/db/ConnectionPoolComponents.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.db; 6 | 7 | /** 8 | * A base for Java connection pool components. 9 | * 10 | * @see ConnectionPool 11 | */ 12 | public interface ConnectionPoolComponents { 13 | 14 | ConnectionPool connectionPool(); 15 | } 16 | -------------------------------------------------------------------------------- /persistence/play-java-jdbc/src/main/java/play/db/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Provides the JDBC database access API. */ 6 | package play.db; 7 | -------------------------------------------------------------------------------- /persistence/play-java-jdbc/src/main/resources/reference.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | play.modules.enabled += "play.db.DBModule" 4 | -------------------------------------------------------------------------------- /persistence/play-java-jpa/src/main/java/play/db/jpa/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Provides JPA ORM integration. */ 6 | package play.db.jpa; 7 | -------------------------------------------------------------------------------- /persistence/play-java-jpa/src/main/resources/reference.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | play { 4 | modules { 5 | enabled += "play.db.jpa.JPAModule" 6 | } 7 | 8 | jpa { 9 | # The name of the configuration item from which to read JPA config. 10 | # So, if set to "jpa", means that "jpa.default" is where the configuration 11 | # for the database named "default" is found. 12 | config = "jpa" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /persistence/play-java-jpa/src/test/resources/evolutions/default/1.sql: -------------------------------------------------------------------------------- 1 | # --- Create database schema 2 | 3 | # --- !Ups 4 | 5 | create table TestEntity ( 6 | id bigint not null, 7 | name varchar(255)) 8 | ; 9 | 10 | # --- !Downs 11 | 12 | drop table if exists TestEntity; 13 | -------------------------------------------------------------------------------- /persistence/play-java-jpa/src/test/resources/evolutions/default/2.sql: -------------------------------------------------------------------------------- 1 | # --- Sample dataset 2 | 3 | # --- !Ups 4 | 5 | insert into TestEntity (id, name) values (1, 'test1'); 6 | 7 | # --- !Downs 8 | 9 | delete from TestEntity; 10 | -------------------------------------------------------------------------------- /persistence/play-jdbc-api/src/main/java/play/db/NamedDatabase.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.db; 6 | 7 | import javax.inject.Qualifier; 8 | import java.lang.annotation.Retention; 9 | import java.lang.annotation.RetentionPolicy; 10 | 11 | @Qualifier 12 | @Retention(RetentionPolicy.RUNTIME) 13 | public @interface NamedDatabase { 14 | String value(); 15 | } 16 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/001.sql: -------------------------------------------------------------------------------- 1 | # --- !Ups 2 | 3 | create table do_not_create_that_table (id bigint not null, name varchar(255)); 4 | 5 | # --- !Downs 6 | 7 | drop table if exists do_not_create_that_table; 8 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/0010.sql: -------------------------------------------------------------------------------- 1 | # --- Test data set 2 | 3 | # --- !Ups 4 | 5 | insert into test (id, name) values (99, 'Isabella'); 6 | 7 | # --- !Downs 8 | 9 | delete from test where name = 'Isabella'; 10 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/002.sql: -------------------------------------------------------------------------------- 1 | # --- Test data set 2 | 3 | # --- !Ups 4 | 5 | insert into test (id, name) values (96, 'Benjamin'); 6 | 7 | # --- !Downs 8 | 9 | delete from test where name = 'Benjamin'; 10 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/005.sql: -------------------------------------------------------------------------------- 1 | # --- Test data set 2 | 3 | # --- !Ups 4 | 5 | insert into test (id, name) values (95, 'Charlotte'); 6 | 7 | # --- !Downs 8 | 9 | delete from test where name = 'Charlotte'; 10 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/01.sql: -------------------------------------------------------------------------------- 1 | # --- Test data set 2 | 3 | # --- !Ups 4 | 5 | insert into test (id, name) values (98, 'James'); 6 | 7 | # --- !Downs 8 | 9 | delete from test where name = 'James'; 10 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/010.sql: -------------------------------------------------------------------------------- 1 | # --- Test data set 2 | 3 | # --- !Ups 4 | 5 | insert into test (id, name) values (11, 'Mason'); 6 | 7 | # --- !Downs 8 | 9 | delete from test where name = 'Mason'; 10 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/0100.sql: -------------------------------------------------------------------------------- 1 | # --- Test data set 2 | 3 | # --- !Ups 4 | 5 | insert into test (id, name) values (94, 'Jacob'); 6 | 7 | # --- !Downs 8 | 9 | delete from test where name = 'Jacob'; 10 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/02.sql: -------------------------------------------------------------------------------- 1 | # --- Test data set 2 | 3 | # --- !Ups 4 | 5 | insert into test (id, name) values (97, 'Mia'); 6 | 7 | # --- !Downs 8 | 9 | delete from test where name = 'Mia'; 10 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/05.sql: -------------------------------------------------------------------------------- 1 | # --- Test data set 2 | 3 | # --- !Ups 4 | 5 | insert into test (id, name) values (6, 'Noah'); 6 | 7 | # --- !Downs 8 | 9 | delete from test where name = 'Noah'; 10 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/1.sql: -------------------------------------------------------------------------------- 1 | # --- Test database schema 2 | 3 | # --- !Ups 4 | 5 | create table test (id bigint not null, name varchar(255)); 6 | 7 | # --- !Downs 8 | 9 | drop table if exists test; 10 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/2.sql: -------------------------------------------------------------------------------- 1 | # --- Test data set 2 | 3 | # --- !Ups 4 | 5 | insert into test (id, name) values (1, 'alice'); 6 | insert into test (id, name) values (2, 'bob'); 7 | 8 | # --- !Downs 9 | 10 | delete from test; 11 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/3.sql: -------------------------------------------------------------------------------- 1 | # --- !Ups 2 | 3 | insert into test (id, name) values (3, 'charlie'); 4 | insert into test (id, name) values (4, 'dave'); 5 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/4.sql: -------------------------------------------------------------------------------- 1 | # --- !Ups 2 | 3 | insert into test (id, name) values (5, 'Emma'); 4 | 5 | # --- !Downs 6 | 7 | delete from test where name = 'Emma'; 8 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/6.sql: -------------------------------------------------------------------------------- 1 | # --- Test data set 2 | 3 | # --- !Ups 4 | 5 | insert into test (id, name) values (7, 'Olivia'); 6 | 7 | # --- !Downs 8 | 9 | delete from test where name = 'Olivia'; 10 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/7.sql: -------------------------------------------------------------------------------- 1 | # --- Test data set 2 | 3 | # --- !Ups 4 | 5 | insert into test (id, name) values (8, 'Liam'); 6 | 7 | # --- !Downs 8 | 9 | delete from test where name = 'Liam'; 10 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/8.sql: -------------------------------------------------------------------------------- 1 | # --- Test data set 2 | 3 | # --- !Ups 4 | 5 | insert into test (id, name) values (9, 'William'); 6 | 7 | # --- !Downs 8 | 9 | delete from test where name = 'William'; 10 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutions/test/9.sql: -------------------------------------------------------------------------------- 1 | # --- Test data set 2 | 3 | # --- !Ups 4 | 5 | insert into test (id, name) values (10, 'Sophia'); 6 | 7 | # --- !Downs 8 | 9 | delete from test where name = 'Sophia'; 10 | -------------------------------------------------------------------------------- /persistence/play-jdbc-evolutions/src/test/resources/evolutionstest/evolutions/default/1.sql: -------------------------------------------------------------------------------- 1 | # --- Test database schema 2 | 3 | # --- !Ups 4 | 5 | create table test (id bigint not null, name varchar(255)); 6 | insert into test values (10, 'testing'); 7 | 8 | # --- !Downs 9 | 10 | drop table if exists test; 11 | -------------------------------------------------------------------------------- /persistence/play-jdbc/src/main/scala/play/api/db/package.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.api 6 | 7 | /** 8 | * Contains the JDBC database access API. 9 | * 10 | * Example, retrieving a connection from the 'customers' datasource: 11 | * {{{ 12 | * val conn = db.getConnection("customers") 13 | * }}} 14 | */ 15 | package object db { 16 | type NamedDatabase = play.db.NamedDatabase 17 | } 18 | -------------------------------------------------------------------------------- /persistence/play-jdbc/src/test/resources/application.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | # Necessary when running tests using DEV or PROD mode. 4 | play.http.secret.key=dummy -------------------------------------------------------------------------------- /project/build.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) Lightbend Inc. 3 | # 4 | sbt.version=1.3.13 5 | -------------------------------------------------------------------------------- /project/project/buildinfo.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.7.0") 6 | -------------------------------------------------------------------------------- /scripts/test-scala-212: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Copyright (C) Lightbend Inc. 4 | 5 | # shellcheck source=scripts/scriptLib 6 | . "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/scriptLib" 7 | 8 | cd "$BASEDIR" 9 | 10 | printMessage "RUNNING TESTS FOR SCALA 2.12" 11 | 12 | runSbtNoisy "++2.12.15 test" 13 | 14 | printMessage "ALL TESTS PASSED" 15 | -------------------------------------------------------------------------------- /testkit/play-test/src/main/java/play/test/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Contains test helpers. */ 6 | package play.test; 7 | -------------------------------------------------------------------------------- /testkit/play-test/src/main/scala/play/api/test/package.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.api 6 | 7 | /** 8 | * Contains test helpers. 9 | */ 10 | package object test { 11 | 12 | /** 13 | * Provided as an implicit by WithServer and WithBrowser. 14 | */ 15 | type Port = Int 16 | 17 | /** 18 | * A structural type indicating there is an application. 19 | */ 20 | type HasApp = { 21 | def app: Application 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /transport/client/play-ahc-ws/src/main/java/play/libs/ws/ahc/WSClientComponents.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.libs.ws.ahc; 6 | 7 | import play.libs.ws.WSClient; 8 | 9 | /** Java WSClient components. */ 10 | public interface WSClientComponents { 11 | WSClient wsClient(); 12 | } 13 | -------------------------------------------------------------------------------- /transport/client/play-ahc-ws/src/test/resources/play/libs/ws/play_full_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/transport/client/play-ahc-ws/src/test/resources/play/libs/ws/play_full_color.png -------------------------------------------------------------------------------- /transport/client/play-ws/src/main/java/play/libs/ws/WSBodyReadables.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.libs.ws; 6 | 7 | /** JSON, XML and Multipart Form Data Readables used for Play-WS bodies. */ 8 | public interface WSBodyReadables extends DefaultBodyReadables, JsonBodyReadables, XMLBodyReadables { 9 | WSBodyReadables instance = new WSBodyReadables() {}; 10 | } 11 | -------------------------------------------------------------------------------- /transport/client/play-ws/src/main/scala/play/api/libs/ws/WSBodyReadables.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.api.libs.ws 6 | 7 | /** 8 | * JSON, XML and Multipart Form Data Readables used for Play-WS bodies. 9 | */ 10 | trait WSBodyReadables extends DefaultBodyReadables with JsonBodyReadables with XMLBodyReadables 11 | 12 | object WSBodyReadables extends WSBodyReadables 13 | -------------------------------------------------------------------------------- /transport/client/play-ws/src/main/scala/play/api/libs/ws/package.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.api.libs 6 | 7 | /** 8 | * Provides implicit type classes when you import the package. 9 | */ 10 | package object ws extends WSBodyReadables with WSBodyWritables 11 | -------------------------------------------------------------------------------- /transport/server/play-akka-http-server/src/main/resources/play/reference-overrides.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | akka { 4 | # Turn off dead letters until Akka HTTP server is stable 5 | log-dead-letters = off 6 | 7 | } 8 | 9 | # separate config for dev mode 10 | play.akka.dev-mode { 11 | akka { 12 | log-dead-letters = off 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /transport/server/play-akka-http-server/src/sbt-test/akka-http/play-akka-http-plugin/conf/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/transport/server/play-akka-http-server/src/sbt-test/akka-http/play-akka-http-plugin/conf/application.conf -------------------------------------------------------------------------------- /transport/server/play-akka-http-server/src/sbt-test/akka-http/play-akka-http-plugin/conf/routes: -------------------------------------------------------------------------------- 1 | GET / controllers.Application.index 2 | -------------------------------------------------------------------------------- /transport/server/play-akka-http-server/src/sbt-test/akka-http/play-akka-http-plugin/project/MediatorWorkaround.scala: -------------------------------------------------------------------------------- 1 | import sbt._ 2 | import Keys._ 3 | 4 | // Track https://github.com/sbt/sbt/issues/2786 5 | object MediatorWorkaround extends AutoPlugin { 6 | override def requires = plugins.JvmPlugin 7 | override def trigger = allRequirements 8 | override def projectSettings = 9 | Seq( 10 | ivyScala := { ivyScala.value.map { _.copy(overrideScalaVersion = sbtPlugin.value) } } 11 | ) 12 | } 13 | -------------------------------------------------------------------------------- /transport/server/play-akka-http-server/src/sbt-test/akka-http/play-akka-http-plugin/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 6 | -------------------------------------------------------------------------------- /transport/server/play-akka-http-server/src/sbt-test/akka-http/play-akka-http-plugin/test: -------------------------------------------------------------------------------- 1 | # Start dev mode 2 | > run 3 | > verifyResourceContains / 200 akka-http 4 | > playStop 5 | 6 | # Check tests work an explicit ServerProvider 7 | > test 8 | 9 | # TODO: Test dist main class -------------------------------------------------------------------------------- /transport/server/play-akka-http-server/src/sbt-test/akka-http/system-property/conf/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/transport/server/play-akka-http-server/src/sbt-test/akka-http/system-property/conf/application.conf -------------------------------------------------------------------------------- /transport/server/play-akka-http-server/src/sbt-test/akka-http/system-property/conf/routes: -------------------------------------------------------------------------------- 1 | GET / controllers.Application.index 2 | -------------------------------------------------------------------------------- /transport/server/play-akka-http-server/src/sbt-test/akka-http/system-property/project/MediatorWorkaround.scala: -------------------------------------------------------------------------------- 1 | import sbt._ 2 | import Keys._ 3 | 4 | // Track https://github.com/sbt/sbt/issues/2786 5 | object MediatorWorkaround extends AutoPlugin { 6 | override def requires = plugins.JvmPlugin 7 | override def trigger = allRequirements 8 | override def projectSettings = 9 | Seq( 10 | ivyScala := { ivyScala.value.map { _.copy(overrideScalaVersion = sbtPlugin.value) } } 11 | ) 12 | } 13 | -------------------------------------------------------------------------------- /transport/server/play-akka-http-server/src/sbt-test/akka-http/system-property/project/plugins.sbt: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Lightbend Inc. 3 | // 4 | 5 | addSbtPlugin("com.typesafe.play" % "sbt-plugin" % sys.props("project.version")) 6 | -------------------------------------------------------------------------------- /transport/server/play-akka-http-server/src/sbt-test/akka-http/system-property/test: -------------------------------------------------------------------------------- 1 | # Start dev mode with the default server - NettyServer 2 | > run 3 | > verifyResourceContains / 200 unknown 4 | > playStop 5 | 6 | # Start dev mode with an overridden server - AkkaHttpServer 7 | > run -Dplay.server.provider=play.core.server.AkkaHttpServerProvider 8 | > verifyResourceContains / 200 akka-http 9 | > playStop 10 | 11 | # Check tests work with system properties 12 | > test 13 | 14 | # TODO: Test dist main class -------------------------------------------------------------------------------- /transport/server/play-akka-http-server/src/test/resources/application.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | play { 4 | crypto.secret = rosebud 5 | 6 | akka { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /transport/server/play-akka-http2-support/src/main/resources/reference.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | # Determines whether HTTP2 is enabled. 4 | play.server.akka.http2 { 5 | enabled = true 6 | enabled = ${?http2.enabled} 7 | } 8 | -------------------------------------------------------------------------------- /transport/server/play-netty-server/src/test/resources/application.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | play { 4 | crypto.secret = rosebud 5 | 6 | akka { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /transport/server/play-server/src/main/scala/play/core/server/ServerListenException.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.core.server 6 | 7 | import java.net.SocketAddress 8 | 9 | /** 10 | * This exception is thrown when the server is unable to listen on a port 11 | */ 12 | class ServerListenException(protocol: String, address: SocketAddress) extends Exception { 13 | override def getMessage = s"Failed to listen for $protocol on $address!" 14 | } 15 | -------------------------------------------------------------------------------- /transport/server/play-server/src/main/scala/play/core/server/ServerStartException.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.core.server 6 | 7 | /** 8 | * Indicates an issue with starting a server, e.g. a problem reading its 9 | * configuration. 10 | */ 11 | final case class ServerStartException(message: String, cause: Option[Throwable] = None) 12 | extends Exception(message, cause.orNull) 13 | -------------------------------------------------------------------------------- /transport/server/play-server/src/test/resources/application.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | # Needed so play-server tests run 4 | play.http.secret.key = "MwWGiFxb0bkpy=TU`ON=O23;3TqKgHAJWqSE3XsSfE`ByOqZcLuwmvc;^/;wCxqR" 5 | -------------------------------------------------------------------------------- /version.sbt: -------------------------------------------------------------------------------- 1 | version in ThisBuild := "2.6.26-LI.1" 2 | -------------------------------------------------------------------------------- /web/play-filters-helpers/src/test/resources/application.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | play.http.secret.key= "abc" 4 | 5 | play.http.filters=play.api.http.NoHttpFilters 6 | 7 | actor { 8 | default-dispatcher = { 9 | fork-join-executor { 10 | parallelism-max = 2 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /web/play-filters-helpers/src/test/resources/helloWorld.txt.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linkedin/playframework/6c3c3422692ac30ede89fab34a8f0286cbf85ca7/web/play-filters-helpers/src/test/resources/helloWorld.txt.gz -------------------------------------------------------------------------------- /web/play-java-forms/src/main/java/play/data/format/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Provides the formatting API used by Form classes. */ 6 | package play.data.format; 7 | -------------------------------------------------------------------------------- /web/play-java-forms/src/main/java/play/data/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Provides data manipulation helpers, mainly for HTTP form handling. */ 6 | package play.data; 7 | -------------------------------------------------------------------------------- /web/play-java-forms/src/main/java/play/data/validation/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Provides the JSR 303 validation constraints. */ 6 | package play.data.validation; 7 | -------------------------------------------------------------------------------- /web/play-java-forms/src/main/resources/reference.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | play { 4 | modules { 5 | enabled += "play.data.FormFactoryModule" 6 | enabled += "play.data.format.FormattersModule" 7 | enabled += "play.data.validation.ValidatorsModule" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /web/play-java-forms/src/test/java/play/data/BlueValidator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.data; 6 | 7 | import play.data.validation.Constraints; 8 | import play.libs.F; 9 | 10 | public class BlueValidator extends Constraints.Validator { 11 | 12 | public boolean isValid(String value) { 13 | return "blue".equals(value); 14 | } 15 | 16 | public F.Tuple getErrorMessageKey() { 17 | return F.Tuple("notblue", new Object[] {}); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /web/play-java-forms/src/test/java/play/data/LoginCheck.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.data; 6 | 7 | public interface LoginCheck {} 8 | -------------------------------------------------------------------------------- /web/play-java-forms/src/test/java/play/data/Money.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.data; 6 | 7 | import java.math.BigDecimal; 8 | 9 | public class Money { 10 | 11 | @Formats.Currency private BigDecimal amount; 12 | 13 | public BigDecimal getAmount() { 14 | return this.amount; 15 | } 16 | 17 | public void setAmount(BigDecimal amount) { 18 | this.amount = amount; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /web/play-java-forms/src/test/java/play/data/MyUser.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.data; 6 | 7 | public class MyUser { 8 | public String email; 9 | public String password; 10 | public String extraField1; 11 | public String extraField2; 12 | public String extraField3; 13 | } 14 | -------------------------------------------------------------------------------- /web/play-java-forms/src/test/java/play/data/OrderedChecks.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.data; 6 | 7 | import javax.validation.GroupSequence; 8 | 9 | @GroupSequence({LoginCheck.class, PasswordCheck.class}) 10 | public interface OrderedChecks {} 11 | -------------------------------------------------------------------------------- /web/play-java-forms/src/test/java/play/data/PasswordCheck.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.data; 6 | 7 | public interface PasswordCheck {} 8 | -------------------------------------------------------------------------------- /web/play-java-forms/src/test/java/play/data/Red.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.data; 6 | 7 | @ValidateRed 8 | public class Red { 9 | public String name; 10 | } 11 | -------------------------------------------------------------------------------- /web/play-java-forms/src/test/java/play/data/UserEmail.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.data; 6 | 7 | import play.data.validation.Constraints; 8 | 9 | public class UserEmail { 10 | 11 | @Constraints.Email public String email; 12 | 13 | public String getEmail() { 14 | return email; 15 | } 16 | 17 | public void setEmail(String email) { 18 | this.email = email; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /web/play-openid/src/main/java/play/libs/openid/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | /** Provides an OpenID client. */ 6 | package play.libs.openid; 7 | -------------------------------------------------------------------------------- /web/play-openid/src/main/resources/reference.conf: -------------------------------------------------------------------------------- 1 | # Copyright (C) Lightbend Inc. 2 | 3 | play { 4 | modules { 5 | enabled += "play.libs.ws.ahc.AhcWSModule" 6 | enabled += "play.libs.openid.OpenIdModule" 7 | enabled += "play.api.libs.openid.OpenIDModule" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /web/play-openid/src/test/resources/play/api/libs/openid/discovery/xrds/invalid-op-identifier.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | http://randomtype.example.com 10 | http://openidprovider.example.com 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /web/play-openid/src/test/resources/play/api/libs/openid/discovery/xrds/simple-op-non-unique.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | http://specs.openid.net/auth/2.0/server 10 | https://www.google.com/a/example.com/o8/ud?be=o8 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /web/play-openid/src/test/resources/play/api/libs/openid/discovery/xrds/simple-op.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | http://specs.openid.net/auth/2.0/signon 10 | https://www.google.com/a/example.com/o8/ud?be=o8 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /web/play-openid/src/test/resources/play/api/libs/openid/discovery/xrds/simple-openid-1-op.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | http://openid.net/server/1.0 10 | http://openidprovider-server-1.example.com 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /web/play-openid/src/test/resources/play/api/libs/openid/discovery/xrds/simple-openid-1.1-op.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | http://openid.net/server/1.1 10 | http://openidprovider-server-1.1.example.com 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /web/play-openid/src/test/scala/play/api/libs/openid/RichUrl.scala: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) Lightbend Inc. 3 | */ 4 | 5 | package play.api.libs.openid 6 | 7 | trait RichUrl[A] { 8 | def hostAndPath: String 9 | } 10 | --------------------------------------------------------------------------------