2014-02-12 8 views
6

Ich bin neu in Apache Sling, CQ5 usw.Was ist der Zweck von resourceResolver.adaptTo (Session.class) in Apache Sling?

In unserer Code-Basis, haben wir einen Code ähnlich wie diese Schnipsel:

void perform(SlingHttpServletRequest request, SlingHttpServletResponse response) { 
    ResourceResolver resourceResolver = request.getResourceResolver(); 

    Session session = resourceResolver.adaptTo(Session.class); 
    PageManager pageManager = resourceResolver.adaptTo(PageManager.class); 
} 

Was hier adapTo tun?

Gibt es auch eine gute Dokumentation/Bedienungsanleitung, die ich lesen kann, um mit Sling, CQ5 usw. zu beginnen?

Antwort

6

Die AdaptTo() - Methode, die in vielen Sling-Objekten gefunden wird, ermöglicht das "Transformieren" von Objekten. Sling könnte sich entschieden haben, eine resolver.getSession() -Methode hinzuzufügen, aber das wäre nicht sehr flexibel gewesen. Das Schöne an adaptTo ist, dass es dynamisch ist. Sie können Adapter für die Umwandlung zwischen verschiedenen Typen erstellen (sie sind OSGi-Dienste). Sling und CQ5 enthalten standardmäßig auch bunch of adapters. Das Sling Wiki hat einige Dokumente über adapters.

über den Umgang mit Sling und CQ5 zu starten, ist die sling site ein guter Anfang

+0

Aber die 'ResourceResolver' sieht eher wie ein Service Locator. Ich meine, verwandelt es sich in verschiedene Arten von Klassen, oder findet es die passende Klasse und gibt es zurück? – h2o

+1

Es ist mehr eine Fabrik. Außerdem hängt es von der Implementierung der jeweiligen Anpassung ab, die Sie aufrufen. Normalerweise erstellt es ein neues Objekt, indem es das Notwendige von dem ursprünglichen übernimmt. Ich nehme an, resourceResolver.adaptTo (PageManager.class) tut im Grunde pageManagerFactory.getPageManager (resourceResolver) – santiagozky