Sling Adapters using-sling-adapters

CAUTION
AEM 6.4 heeft het einde van de uitgebreide ondersteuning bereikt en deze documentatie wordt niet meer bijgewerkt. Raadpleeg voor meer informatie onze technische ondersteuningsperioden. Ondersteunde versies zoeken hier.

Sling biedt een Adapterpatroon om objecten die het Aanpasbaar interface. Deze interface verstrekt een generiek adjustTo() methode die het object omzet in het klassentype dat als argument wordt doorgegeven.

Bijvoorbeeld om een voorwerp van het Middel aan het overeenkomstige voorwerp van de Knoop te vertalen, kunt u eenvoudig doen:

Node node = resource.adaptTo(Node.class);

Gevallen gebruiken use-cases

Er zijn de volgende gebruiksgevallen:

  • Hiermee krijgt u implementatiespecifieke objecten.

    Bijvoorbeeld een op JCR gebaseerde implementatie van het generieke Resource interface biedt toegang tot het onderliggende JCR Node.

  • Het maken van sneltoetsen voor objecten waarvoor interne contextobjecten moeten worden doorgegeven.

    Bijvoorbeeld op basis van de JCR ResourceResolver bevat een verwijzing naar de JCR Session, die op zijn beurt nodig is voor veel objecten die op die aanvraagsessie zullen werken, zoals de PageManager of UserManager.

  • Snelkoppeling naar services.

    Een zeldzame zaak - sling.getService() is ook eenvoudig.

Null-retourwaarde null-return-value

adaptTo() kan null retourneren.

Hiervoor zijn verschillende redenen, waaronder:

  • de implementatie ondersteunt het doeltype niet
  • een adapterfabriek die deze zaak afhandelt, is niet actief (bijv. vanwege ontbrekende serviceverwijzingen)
  • interne voorwaarde is mislukt
  • service is niet beschikbaar

Het is belangrijk dat u de null-case netjes afhandelt. Voor jsp-renderingen kan het acceptabel zijn dat de jsp mislukt als dat resulteert in een leeg stuk inhoud.

Caching caching

Om de prestaties te verbeteren, kunnen implementaties het object dat door een obj.adaptTo() vraag. Als de obj gelijk is, is het geretourneerde object hetzelfde.

Deze caching wordt uitgevoerd voor alle AdapterFactory gegronde gevallen.

Er is echter geen algemene regel: het object kan een nieuw of een bestaand object zijn. Dit betekent dat u niet op één van beide gedrag kunt vertrouwen. Daarom is het belangrijk, vooral binnen AdapterFactory, dat de objecten in dit scenario opnieuw kunnen worden gebruikt.

Hoe werkt het how-it-works

Er zijn verschillende manieren om Adaptable.adaptTo() kan worden uitgevoerd:

  • door het object zelf; het implementeren van de methode zelf en het toewijzen aan bepaalde objecten.

  • Met een AdapterFactory, die willekeurige objecten kunnen toewijzen.

    De objecten moeten de Adaptable interface en moet worden uitgebreid SlingAdaptable (die de adaptTo aanroep aan een centrale adaptermanager).

    Hierdoor kunnen haken in de adaptTo mechanisme voor bestaande klassen, zoals Resource.

  • Een combinatie van beide.

In het eerste geval kunnen de javadocs aangeven wat adaptTo-targets zijn mogelijk. Voor specifieke subklassen zoals de op JCR gebaseerde Resource is dit echter vaak niet mogelijk. In het laatste geval worden AdapterFactory ze maken doorgaans deel uit van de klassen van het type private van een bundel en worden dus niet weergegeven in een client-API, en worden ook niet vermeld in javadocs. Theoretisch gezien zou het mogelijk zijn om alle AdapterFactory implementaties van de OSGi de dienstruntime en kijken naar hun "aanpasbare"configuraties (bronnen en doelstellingen), maar niet om hen aan elkaar in kaart te brengen. Uiteindelijk hangt dit af van de interne logica, die moet worden gedocumenteerd. Vandaar deze verwijzing.

Referentie reference

Sling sling

Resource aanpassen aan:

Knooppunt
Als dit een JCR-node-based resource is of een JCR-eigenschap die verwijst naar een knooppunt.
Eigenschap
Als dit een op JCR-eigenschap gebaseerde bron is.
Item
Als dit een op JCR gebaseerde bron (knooppunt of eigenschap) is.
Kaart
Keert een kaart van de eigenschappen terug, als dit een JCR-knoop-gebaseerd middel (of andere middel ondersteunend waardekaarten) is.
ValueMap
Retourneert een handig te gebruiken kaart van de eigenschappen, als dit een JCR-node-based resource (of andere resource die waardekaarten ondersteunt) is. Kan ook (eenvoudiger) worden bereikt door
ResourceUtil.getValueMap(Resource) (handelt null case enz. af).
InheritanceValueMap
Verlenging van ValueMap waarmee bij het zoeken naar eigenschappen rekening kan worden gehouden met de hiërarchie van bronnen.
PersistableValueMap
Als dit een JCR-node-based middel is en de gebruiker toestemmingen heeft om eigenschappen op die knoop te wijzigen.
Opmerking: meerdere permanente kaarten delen hun waarden niet .
InputStream
Hiermee wordt de binaire inhoud van een "bestand" geretourneerdnt:resource
AuthorizableResourceProvider``org.apache.sling.jackrabbit.usermanager``/system/userManager
cq:Page``cq:PseudoPage
cq:Component
cq:Page
cq:Template
cq:Page
cq:Tag
cq:Preferences
cq:ContentSyncConfig
cq:ContentSyncConfig

ResourceResolver aanpassen aan:

Sessie
De JCR-sessie van het verzoek, als dit een op JCR gebaseerde resourceoplosser is (standaardwaarde).
PageManager
ComponentManager
Designer
AssetManager
Gebaseerd op de zitting JCR, als dit op JCR-Gebaseerde middeloplosser is.
TagManager
Gebaseerd op de zitting JCR, als dit op JCR-Gebaseerde middeloplosser is.
UserManager
Gebaseerd op de zitting JCR, als dit op JCR-Gebaseerde middeloplosser is, en als de gebruiker toestemmingen heeft om tot UserManager toegang te hebben.
Toestemming
De huidige gebruiker.
Gebruiker
De huidige gebruiker.
PrivilegeManager
Voorkeuren
Voorkeuren van de huidige gebruiker (op basis van een JCR-sessie als dit een op JCR gebaseerde resourceoplosser is).
PreferencesService
PinManager
QueryBuilder
ExternalAlizer
Voor het extern maken van absolute URL's, zelfs met het aanvraagobject.

SlingHttpServletRequest aanpassen aan:

Geen doelstellingen nog, maar voert Aangepast uit en kon als bron in een douane AdapterFactory worden gebruikt.

SlingHttpServletResponse aanpassen aan:

ContentHandler
(XML)
Als dit een sling rewriter reactie is.

WCM wcm

Pagina aanpassen aan:

Resource
Bron van de pagina.
LabeledResource
Gelabelde bron (== dit).
Knooppunt
Knooppunt van de pagina.
...
Alles waaraan de bron van de pagina kan worden aangepast.

Component aanpassen aan:

Resource
Bron van de component.
LabeledResource
Gelabelde bron (== dit).
Knooppunt
Knooppunt van de component.
Alles waaraan de bron van de component kan worden aangepast.

Sjabloon aanpassen aan:

Resource
Bron van de sjabloon.
LabeledResource
Gelabelde bron (== dit).
Knooppunt
Knooppunt van deze sjabloon.
...
Alles waaraan de bron van de sjabloon kan worden aangepast.

Beveiliging security

Toestemming, Gebruiker en Groep aanpassen aan:

Knooppunt
Retourneert het thuisknooppunt van de gebruiker/groep.
ReplicationStatus
Retourneert de replicatiestatus voor het thuisknooppunt van de gebruiker/groep.

DAM dam

Element aanpassen aan:

Resource
Middelen van het actief.
Knooppunt
Node of the asset.
Alles waaraan de middelen van het actief kunnen worden aangepast.

Tags tagging

Tag aanpassen aan:

Resource
Bron van de tag.
Knooppunt
Knooppunt van de tag.
Alles waaraan de bron van de tag kan worden aangepast.

Overige other

Daarnaast biedt Sling / JCR / OCM ook een [AdapterFactory](https://sling.apache.org/site/adapters.html#Adapters-AdapterFactory) voor aangepaste OCM (Objectinhoud toewijzen).

recommendation-more-help
2315f3f5-cb4a-4530-9999-30c8319c520e