Ich verwende deadbolt 2.5.0 und ich habe benutzerdefinierte SubjectPresentHandler erstellt wie folgt:Deadbolt 2.5.0, nicht in der Lage kundenspezifische SubjectPresentHandler AbstractDeadboltHandler erstreckt instanziiert
public class SubjectPresentHandler extends AbstractDeadboltHandler
{
public SubjectPresentHandler(ExecutionContextProvider ecProvider) {
super(ecProvider);
}
// other required methods
}
Und ich habe auch:
@Singleton
public class CustomDeadboltHandlerCache implements HandlerCache
{
private final DeadboltHandler defaultHandler = new SubjectPresentHandler();
// other required code
}
Das Problem, das ich hier habe, ist, dass ich SubjectPresentHandler nicht mit seinem Standardkonstruktor instanziieren kann. Ich erhalte einen Fehler wie: "Der Konstruktor SubjectPresentHandler ist nicht definiert". Nun, wenn ich hinzufügen Standardkonstruktors in SubjectPresentHandler wie folgt:
public SubjectPresentHandler() {
super();
}
Ich erhalte eine Fehlermeldung wie: Der Konstruktor AbstractDeadboltHandler nicht definiert ist. Wenn ich den paramaterized Konstruktor in SubjectPresentHandler versuchen zu entfernen, dann erhalte ich Fehlermeldung als
"Implicit super constructor AbstractDeadboltHandler() is undefined for default constructor. Must define an explicit constructor".
Ich bin nicht sicher, wie ich dieses Problem lösen kann, so sucht Lösung zu diesem Problem.
@stevechalober: Dies behebt das Problem nicht, auch wenn ich SubjectPresentHandler in CustomDeadboltHandlerCache injiziere, beschweren sich die Compiler für Standardkonstruktor in SubjectPresentHandler, der in unserem Fall nicht vorhanden ist, und wie ich erwähnt kann ich Standardkonstruktor in SubjectPresentHandler nicht hinzufügen . – Programmer
Hier eine Beispielimplementierung: https://github.com/schaloner/deadbolt-2-java/blob/master/test-app/app/be/objectify/deadbolt/java/test/security/MyDeadboltHandler.java –
@stevechalober : Auch Ihr Beispiel hat keinen Standardkonstruktor, bin mir nicht sicher, wie das in Ihrem Fall funktioniert. Unten sind die Änderungen, die ich in meinem Code vorgenommen habe, aber Compiler winkt für Standardkonstruktor in SubjectPresentHandler. Ich habe Änderungen in CustomDeadboltHandlerCache vorgenommen, wie Sie vorgeschlagen haben, siehe Änderungen. – Programmer