Sling Adapters gebruiken using-sling-adapters

​ het Verschuiven ​ biedt een ​ patroon van de Adapter ​ aan om voorwerpen gemakkelijk te vertalen die de ​ Aanpasbare ​ interface uitvoeren. Deze interface verstrekt een generische ​ adjustTo () ​ methode die het voorwerp aan het klassentype vertaalt dat als argument wordt overgegaan.

Als u bijvoorbeeld een Resource-object naar het corresponderende Node-object wilt vertalen, kunt u gewoon het volgende doen:

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

Gevallen gebruiken use-cases

Er zijn de volgende gebruiksgevallen:

  • Hiermee krijgt u implementatiespecifieke objecten.

    Bijvoorbeeld, verleent een op JCR-Gebaseerde implementatie van de generische Resource interface toegang tot onderliggende JCR Node.

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

    Bijvoorbeeld, op JCR-Gebaseerd ResourceResolver houdt een verwijzing naar verzoek JCR Session, die beurtelings voor vele voorwerpen nodig is die op die verzoekzitting, zoals PageManager of UserManager zullen werken.

  • Snelkoppeling naar services.

    Een zeldzaam geval - sling.getService() is ook eenvoudig.

Null-retourwaarde null-return-value

adaptTo() retourneert null.

Hiervoor zijn verschillende redenen, waaronder:

  • de implementatie ondersteunt het doeltype niet
  • een adapterfabriek die deze kwestie behandelt is niet actief (bijvoorbeeld wegens ontbrekende de dienstverwijzingen)
  • 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() -aanroep is geretourneerd, in de cache plaatsen. Wanneer obj hetzelfde is, is het geretourneerde object hetzelfde.

Deze caching wordt uitgevoerd voor alle AdapterFactory gebaseerde 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 objecten in dit scenario opnieuw kunnen worden gebruikt.

Hoe werkt het how-it-works

U kunt Adaptable.adaptTo() op verschillende manieren implementeren:

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

  • Door een AdapterFactory, die willekeurige voorwerpen in kaart kan brengen.

    De objecten moeten nog steeds de Adaptable interface implementeren en moeten SlingAdaptable uitbreiden (die de adaptTo aanroep aan een centrale adaptermanager doorgeeft).

    Hiermee kunt u haken toevoegen aan het mechanisme adaptTo voor bestaande klassen, zoals Resource .

  • Een combinatie van beide.

In het eerste geval kunnen de Java™-documenten aangeven wat adaptTo-targets mogelijk is. Voor specifieke subklassen zoals de op JCR gebaseerde Resource is dit echter vaak niet mogelijk. In het laatste geval maken implementaties van AdapterFactory doorgaans deel uit van de klassen van het type private van een bundel en worden deze dus niet weergegeven in een client-API, en worden ze niet vermeld in Java™-documenten. Theoretisch, zou het mogelijk zijn om tot alle AdapterFactory implementaties van ​ OSGi ​ de dienstruntime toegang te hebben en hun "adaptables"(bronnen en doelstellingen) configuraties te bekijken, 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

Middel past 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 resource 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 (eenvoudigere) worden bereikt door
ResourceUtil.getValueMap(Resource) (handelt null case af, enzovoort) te gebruiken
InheritanceValueMap
Uitbreiding van ValueMapdie de hiërarchie van middelen toestaat om in aanmerking te worden genomen wanneer het zoeken naar eigenschappen
ModisibleValueMap
Een uitbreiding van ValueMap, die u eigenschappen op die knoop laat wijzigen
InputStream
Retourneert de binaire inhoud van een bestandsbron (als dit een JCR-knooppuntgebaseerde bron is en het knooppunttype nt:file of nt:resource is; als dit een bundelbron is; bestandsinhoud als dit een bestandssysteembron is) of de gegevens van een binaire JCR-eigenschapbron
URL
Hiermee wordt een URL naar de bron geretourneerd (repository URL van dit knooppunt als dit een JCR-node-gebaseerde resource is; jar bundle URL als dit een bundelbron is; file URL als dit een bestandssysteembron is)
Bestand
Als dit een bestandssysteembron is
SlingScript
Als deze bron een script is (bijvoorbeeld jsp-bestand) waarvoor een scriptengine is geregistreerd met sling
Servlet
Als deze bron een script is (bijvoorbeeld jsp-bestand) waarvoor een scriptengine is geregistreerd met sling of als dit een servlet-resource is.
Koord
Van Boole
Lang
tweemaal
Kalender
Waarde
Koord []
Van Boole []
Lang []
Kalender []
9} Waarde []
Retourneert de waarden als dit een op JCR-eigenschap gebaseerde resource (en de value-fit) is.
LabeledResource
Als dit een JCR-node-gebaseerde resource is
Pagina
Als dit een op JCR-knooppunten gebaseerde bron is en het knooppunt een cq:Page (of cq:PseudoPage is)
Component
Als dit een node cq:Component resource is
Ontwerp
Als dit een ontwerpknoop (cq:Page) is
Sjabloon
Als dit een node cq:Template resource is
Blauwdruk
Als dit een node cq:Template resource is
Element
Als dit een dam is:middelen voor knooppunt Asset
Vertoning
Als dit een dam is:Vertoning van activa (nt:dossier onder de vertoningsomslag van een dam:Assert)
Tag
Als dit een node cq:Tag resource is
UserManager
Gebaseerd op de zitting JCR als dit een op JCR-Gebaseerde middel is en de gebruiker toestemmingen heeft om tot UserManager toegang te hebben
Toestemming
Autorisable is de gemeenschappelijke basisinterface voor Gebruiker en Groep
Gebruiker
De gebruiker is een speciale Vergunning die voor authentiek kan worden verklaard en kan worden nagedacht
SimpleSearch
Zoekt onder de bron (of gebruik setSearchIn()) als dit een JCR-resource is
WorkflowStatus
Workflowstatus voor de opgegeven pagina/workflow-payload node
ReplicationStatus
Replicatiestatus voor de opgegeven resource of het JCR:content-subknooppunt (eerst gecontroleerd)
ConnectorResource
Retourneert een aangepaste connectorbron voor bepaalde typen als dit een JCR-node-gebaseerde resource is
Config
Als dit een node cq:ContentSyncConfig resource is
ConfigEntry
Als dit onder een node cq:ContentSyncConfig -bron ligt

ResourceResolver past 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 een op JCR-Gebaseerde middeloplosser is
TagManager
Gebaseerd op de zitting JCR, als dit een op JCR-Gebaseerde middeloplosser is
UserManager
De UserManager verleent toegang tot en middelen om toegelaten voorwerpen te handhaven die, gebruikers en groepen zijn. De UserManager is gebonden aan een bepaalde Zitting
Toegelaten
De huidige gebruiker
Gebruiker
De huidige gebruiker
QueryBuilder
ExternalAlizer
Voor het externaliseren van absolute URLs, zelfs zonder het verzoekvoorwerp

SlingHttpServletRequest past aan:

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

SlingHttpServletResponse past aan:

ContentHandler
(XML)
Als dit een slingerende rewriter reactie is

WCM wcm

Pagina ​ past aan:

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

Component ​ past aan:

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

Malplaatje ​ past aan:

Middel
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

Toegelaten, Gebruiker, en ​ Groep** past aan:

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

DAM dam

Activa past aan:

​ Middel ​
Middelen van het actief.
​ Knoop ​
Node of the asset.
Alles waaraan de middelen van het actief kunnen worden aangepast.

Tags tagging

markering past aan:

​ Middel ​
Bron van de tag.
​ Knoop ​
Knooppunt van de tag.
Alles waaraan de bron van de tag kan worden aangepast.

Overige other

Voorts verstrekt het Verdelen / JCR / OCM ook een [AdapterFactory](https://sling.apache.org/site/adapters.html#Adapters-AdapterFactory) voor douaneOCM (​ de Inhoud van Objecten Toewijzing ​) voorwerpen.

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2