Contenu connexe Similaire à Building a Custom Polling Importer in AEM (20) Building a Custom Polling Importer in AEM1. Developing a Custom Polling Importer:
Ingesting and Processing External Content
Marcel Boucher | AEM Evangelist | @marcelboucher
2. © 2013 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
AEM Feed Importer – Social Communities
2
Auto blogging with RSS and ATOM
Calendar Subscriptions via iCal
Analytics integration for top …
3. © 2013 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
The Use Case
3
4. © 2013 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
The Required Pieces
4
Data Source Importer Scheme Implementation
5. © 2013 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
The Data Source
5
Jira Query
Result is a 13MB XML document
o Useless elements
o Calculations needed to be applied in parallel
6. © 2013 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
The Importer Scheme
6
Add a custom Scheme
1) Make a Copy of: /libs/cq/ui/widgets/source/widgets/wcm/FeedImporter.js
2) To: /apps/cq/ui/widgets/source/widgets/wcm/FeedImporter.js
3) Add your scheme:
{
"text":"Jira Feed",
"value":"jira”
}
7. © 2013 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
The Implementation
7
OSGi Bundle
1) Add service descriptors
@Service(value=Importer.class)
@Component(immediate = true, metatype = true)
@Properties({
@Property(name = "service.name", value = "Jira RSS Polling Importer"),
@Property(name = "service.description", value = "JIRA Polling Data Importer"),
@Property(name = "importer.scheme", value="jira") ,
@Property(name = "jira.username", description = "The JIRA service account to be used."),
@Property(name = "jira.password", description = "The JIRA servuce account password to be used."),
@Property(name = "xslt.path", description = "The JCR path to the XSLT to be applied to the Jira feed.")
})
2) Implement the importData method
public void importData(final String scheme, final String dataSource, final Resource resource) throws ImportException {}