Interfaccia SocialCollectionComponent
L’interfaccia SocialCollectionComponent estende l’interfaccia SocialComponent per rappresentare meglio le risorse che sono insiemi di altre risorse.
Tutte le classi SocialCollectionComponent devono implementare l'interfaccia com.adobe.cq.social.scf.SocialCollectionComponent
Interfaccia SocialComponentFactory
Un SocialComponentFactory (factory) registra un SocialComponent con il framework. La fabbrica fornisce un mezzo per consentire al framework di sapere quali componenti social sono disponibili per un dato resourceType e la loro classificazione di priorità quando vengono identificati più componenti social.
Un SocialComponentFactory è responsabile della creazione di un'istanza del SocialComponent selezionato che consente di inserire tutte le dipendenze necessarie dal SocialComponent dalla factory utilizzando le procedure DI.
SocialComponentFactory è un servizio OSGi e ha accesso ad altri servizi OSGi che possono essere passati a SocialComponent tramite un costruttore.
Tutte le classi SocialComponentFactory devono implementare l'interfaccia com.adobe.cq.social.scf.SocialComponentFactory
Un'implementazione del metodo SocialComponentFactory.getPriority() deve restituire il valore più alto per la factory da utilizzare per il resourceType specificato, come restituito da getResourceType().
Interfaccia SocialComponentFactoryManager
SocialComponentFactoryManager (manager) gestisce tutti i SocialComponents registrati con il framework ed è responsabile della selezione di SocialComponentFactory da utilizzare per una determinata risorsa (resourceType). Se non sono registrate fabbriche per un resourceType specifico, il manager restituisce una fabbrica con il super type più vicino per la risorsa specificata.
SocialComponentFactoryManager è un servizio OSGi e ha accesso ad altri servizi OSGi che possono essere passati a SocialComponent tramite un costruttore.
Ottenuto un handle per il servizio OSGi richiamando com.adobe.cq.social.scf.SocialComponentFactoryManager
API HTTP - Richieste POST
Classe PostOperation
Gli endpoint POST API HTTP sono classi PostOperation definite implementando l'interfaccia SlingPostOperation
(pacchetto org.apache.sling.servlets.post
).
L'implementazione dell'endpoint PostOperation
imposta sling.post.operation
su un valore al quale risponde l'operazione. Tutte le richieste POST con il parametro:operation impostato su tale valore sono delegate a questa classe di implementazione.
PostOperation
richiama SocialOperation
che esegue le azioni necessarie per l'operazione.
PostOperation
riceve il risultato da SocialOperation
e restituisce la risposta appropriata al client.
Classe SocialOperation
Ogni endpoint SocialOperation
estende la classe AbstractSocialOperation e sostituisce il metodo performOperation()
. Questo metodo esegue tutte le azioni necessarie per completare l'operazione e restituire SocialOperationResult
oppure generare OperationException
. In questo caso, al posto della normale risposta JSON o del codice di stato HTTP di successo viene restituito uno stato di errore HTTP con un messaggio, se disponibile.
L'estensione di AbstractSocialOperation
consente di riutilizzare SocialComponents
per inviare risposte JSON.
Classe SocialOperationResult
La classe SocialOperationResult
viene restituita come risultato di SocialOperation
ed è composta da un SocialComponent
, un codice di stato HTTP e un messaggio di stato HTTP.
SocialComponent
rappresenta la risorsa interessata dall'operazione.
Per un'operazione Create, SocialComponent
incluso in SocialOperationResult
rappresenta la risorsa creata e per un'operazione Update rappresenta la risorsa modificata dall'operazione. Nessun SocialComponent
restituito per un'operazione di eliminazione.
I codici di stato HTTP utilizzati sono:
- 201 per operazioni di creazione
- 200 per le operazioni di aggiornamento
- 204 per le operazioni di eliminazione
Classe OperationException
Viene generato un OperationExcepton
quando si esegue un'operazione se la richiesta non è valida o si verifica un altro errore. Ad esempio, errori interni, valori di parametro non validi o autorizzazioni non corrette. Un OperationException
è composto da un codice di stato HTTP e da un messaggio di errore, che vengono restituiti al client come risposta a PostOperatoin
.
Classe OperationService
Il framework del componente social consiglia di non implementare la regola business responsabile dell'esecuzione dell'operazione nella classe SocialOperation
, ma di delegarla a un servizio OSGi. L'utilizzo di un servizio OSGi per la logica di business consente a un SocialComponent
, gestito da un endpoint SocialOperation
, di essere integrato con altro codice e di applicare una logica di business diversa.
Tutte le classi OperationService
estendono AbstractOperationService
, consentendo estensioni aggiuntive che possono connettersi all'operazione in esecuzione. Ogni operazione nel servizio è rappresentata da una classe SocialOperation
. La classe OperationExtensions
può essere richiamata durante l'esecuzione dell'operazione chiamando i metodi
-
performBeforeActions()
Consente pre-controlli/pre-elaborazione e convalide
-
performAfterActions()
Consente di modificare ulteriormente le risorse o richiamare eventi personalizzati, flussi di lavoro e così via.
Classe OperationExtension
Le classi OperationExtension
sono parti di codice personalizzate che possono essere inserite in un'operazione che consente di personalizzare le operazioni in base alle esigenze aziendali. I consumatori del componente possono aggiungere funzionalità al componente in modo dinamico e incrementale. Il pattern di estensione/hook consente agli sviluppatori di concentrarsi esclusivamente sulle estensioni stesse e elimina la necessità di copiare e sovrascrivere intere operazioni e componenti.