Extend controller with Silhouette [scala/play 2.5, silhouette 4.0]

70 views
Skip to first unread message

Edgars

unread,
May 16, 2016, 7:17:09 AM5/16/16
to Silhouette
Hi,

can't figure how to extend existing controller (basic CRUD like methods) to another similar controller (only one method differs, want to override it) due to DI error. 
Silhouette works fine in first controller, and this happens only when injecting Silhouette.

Error injecting constructor, java.lang.NullPointerException

First controller like:

class FirstController @Inject()(
val messagesApi: MessagesApi,
silhouette: Silhouette[DefaultEnv],
socialProviderRegistry: SocialProviderRegistry,
webJarAssets: WebJarAssets)
extends Controller with I18nSupport {

Second:

class SecondController @Inject()(
override val messagesApi: MessagesApi,
silhouette: Silhouette[DefaultEnv],
socialProviderRegistry: SocialProviderRegistry,
webJarAssets: WebJarAssets)
extends FirstController(messagesApi,
silhouette,
socialProviderRegistry,
webJarAssets) {

Edgars

Christian Kaps

unread,
May 16, 2016, 1:36:25 PM5/16/16
to Silhouette
Hi,

I don't have an idea what causes the issue. Normally that should work and I don't see an error in your code.

The following code works as expected for me:

package controllers

import javax.inject.Inject

import com.mohiva.play.silhouette.api.Silhouette
import play.api.mvc.{ Action, Controller }
import utils.auth.DefaultEnv

class Test1Controller @Inject() (silhouette: Silhouette[DefaultEnv]) extends Controller {

  def test = Action { Ok("test") }
}

class Test2Controller @Inject() (silhouette: Silhouette[DefaultEnv]) extends Test1Controller(silhouette) {

}


Best regards,
Christian
Reply all
Reply to author
Forward
0 new messages