Building a Custom Polling Importer in AEM

Preview:

Citation preview

Developing a Custom Polling Importer: Ingesting and Processing External ContentMarcel Boucher | AEM Evangelist | @marcelboucher

© 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 …

© 2013 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.

The Use Case

3

© 2013 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.

The Required Pieces

4

Data Source Importer Scheme Implementation

© 2013 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.

The Data Source

5

Jira QueryResult is a 13MB XML document

o Useless elements

o Calculations needed to be applied in parallel

© 2013 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.

The Importer Scheme

6

Add a custom Scheme1) Make a Copy of: /libs/cq/ui/widgets/source/widgets/wcm/FeedImporter.js2) To: /apps/cq/ui/widgets/source/widgets/wcm/FeedImporter.js3) Add your scheme:

{ "text":"Jira Feed", "value":"jira”}

© 2013 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.

The Implementation

7

OSGi Bundle1) 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 {}

DEMO

Thank You

Recommended