Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn More

View all

Sign in to view all badges

Unable to set pipeline.type while migrating from SCR to OSGi DS annotation

Avatar

Avatar
Springboard
Level 4
bilal_ahmad
Level 4

Likes

66 likes

Total Posts

106 posts

Correct Reply

16 solutions
Top badges earned
Springboard
Validate 10
Validate 1
Ignite 1
Establish
View profile

Avatar
Springboard
Level 4
bilal_ahmad
Level 4

Likes

66 likes

Total Posts

106 posts

Correct Reply

16 solutions
Top badges earned
Springboard
Validate 10
Validate 1
Ignite 1
Establish
View profile
bilal_ahmad
Level 4

10-05-2020

Dear community members,

I am migrating my codebase from using SCR annotations to DS annotations. While the previous implementation sets the 'pipeline.type' property this way and it's working:

old-way.PNG
And I just tried this way to migrate it:

new-way.PNG

 

 

 but it couldn't set the property somehow. It threw:

bilala23933647_1-1589108387869.png

 

Valuable thoughts?

Thanks in advance, Bilal.

 

AEM 6.4 sling

Accepted Solutions (1)

Accepted Solutions (1)

Avatar

Avatar
Validate 1
MVP
ArpitVarshney
MVP

Likes

135 likes

Total Posts

185 posts

Correct Reply

36 solutions
Top badges earned
Validate 1
Establish
Give Back 5
Give Back 3
Give Back 25
View profile

Avatar
Validate 1
MVP
ArpitVarshney
MVP

Likes

135 likes

Total Posts

185 posts

Correct Reply

36 solutions
Top badges earned
Validate 1
Establish
Give Back 5
Give Back 3
Give Back 25
View profile
ArpitVarshney
MVP

10-05-2020

Hi @bilal_ahmad 

You are doing it wrong.

Refer this blog https://medium.com/adobetech/aem-6-4-creating-a-scheduler-using-osgi-r6-annotations-4ad0b8c6fce7

Unlike with SCR annotations, it is very clean and simple to create OSGi configurations using R6 annotations by simply using @AttributeDefinition.

 

If you want to create your OCD in same class then you can refer below code:

 

package aem.core.service;

import org.apache.sling.rewriter.Transformer;
import org.apache.sling.rewriter.TransformerFactory;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Modified;
import org.osgi.service.metatype.annotations.AttributeDefinition;
import org.osgi.service.metatype.annotations.Designate;
import org.osgi.service.metatype.annotations.ObjectClassDefinition;


@Component(service = TransformerFactory.class, immediate = true)
@Designate(ocd = LinkTransformerFactory.Config.class)
public class LinkTransformerFactory implements TransformerFactory {

@ObjectClassDefinition(name = "LinkTransformerFactory Service", description = "LinkTransformerFactory Configuration")
public @interface Config {

@AttributeDefinition(name = "Pipeline Type", required = true)
String getPipelineType() default "gatedassettransformer";
}

@Activate
@Modified
protected void activate(final Config config) {
String pipelineType = config.getPipelineType();
}

@Override
public Transformer createTransformer() {
return null;
}
}

 

bilal_ahmad
Thank you @ArpitVarshney for the quick response! However I tried setting that value the way you shared. Still it says "Unable to get component of class 'interface org.apache.sling.rewriter.Transformer' with type 'gatedassettransformer'". And that is strange!! Any other suspicion/thoughts ? Many Thanks, BIlal.
ArpitVarshney

Hi @bilal_ahmad 

 

I've tried the same code in my AEM instance and it is working fine for me. I am able to log the updated pipeline type which is correctly reflected.

However, if the shared code is somehow not working for you, please go through the blog link that I've shared.

 

Regards,

Arpit Varshney

ArpitVarshney

@bilal_ahmad 

Please refer below code which has been copied from Adobe's documentation.[Link]

 

package com.adobe.community.rewriter.core;

import org.apache.sling.rewriter.Transformer;
import org.apache.sling.rewriter.TransformerFactory;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* A TransformerFactory service instance for creating a Transformer to add link
* type icons into links to documents.
*
* @author dklco@apache.org
* @see com.perficient.adobe.rewriter.LinkTypeTransformer
*/
@Component(property = { "pipeline.type=linktype" }, service = { TransformerFactory.class })
public class LinkTypeTransformerFactory implements TransformerFactory {

private static final Logger log = LoggerFactory.getLogger(LinkTypeTransformerFactory.class);

/*
* (non-Javadoc)
*
* @see org.apache.sling.rewriter.TransformerFactory#createTransformer()
*/
@Override
public Transformer createTransformer() {
log.trace("createTransformer");
return new LinkTypeTransformer();
}

}

Answers (1)

Answers (1)

Avatar

Avatar
Coach
MVP
Arun_Patidar
MVP

Likes

1,261 likes

Total Posts

3,150 posts

Correct Reply

886 solutions
Top badges earned
Coach
Contributor 2
Ignite 10
Give Back 700
Boost 1000
View profile

Avatar
Coach
MVP
Arun_Patidar
MVP

Likes

1,261 likes

Total Posts

3,150 posts

Correct Reply

886 solutions
Top badges earned
Coach
Contributor 2
Ignite 10
Give Back 700
Boost 1000
View profile
Arun_Patidar
MVP

10-05-2020