Cette conversation a été verrouillée en raison de son inactivité. Veuillez créer une nouvelle publication.
Niveau 1
Niveau 2
Se connecter à la communauté
Connectez-vous pour voir tous les badges
Cette conversation a été verrouillée en raison de son inactivité. Veuillez créer une nouvelle publication.
Hello, it appears that the Felix SCR annotations have been deprecated in AEM 6.3. This is not reflected on the Sling website or documentation as far as I can tell, but is appearing that way when we compile against the 6.3 uberjar.
In fact, the latest AEM Maven Archetype does not include the Felix SCR dependency at all.
I see this blog post from last year that covers a lot of conversion questions.
And this very recent one from Feike.
The OSGi 6 method for registering configuration properties using a separate interface class is fairly convoluted, and thinly documented, but with enough time and money I am sure we can figure it out.
However, there does not seem to be mention in either article of what is replacing the @SlingFilter annotation, which is mentioned as the recommended approach even in fairly recent articles.
All our classes that use the @SlingFilter annotation no longer work (they are throwing ArrayIndexOutOfBounds exceptions), even keeping the Felix SCR dependency, and updating it to the latest version.
Is there documentation somewhere of what is replacing the @SlingFilter annotation?
Is there a plan for a more complete document describing the recommended migration path, and changes to the product that cause existing @SlingFilter usage not to work?
Thanks!
Tim
Résolu ! Accéder à la solution.
Vues
Réponses
Nombre de J’aime
when using non-String types make sure to use the correct data-type.
Example here for the service-ranking and using :Integer
Vues
Réponses
Nombre de J’aime
I am not aware that the Felix annotations are deprecated in AEM6.3.
To your question on @SlingFilter, this is same like @SlingServlet
There isn't an equivalent you can use. You need to specify the properties like in this sample for a servlet.
Vues
Réponses
Nombre de J’aime
when using non-String types make sure to use the correct data-type.
Example here for the service-ranking and using :Integer
Vues
Réponses
Nombre de J’aime
Yes, most of the Felix annotations show deprecated when compiling against the 6.3 UberJar. I'll try setting things up with @Component. Thanks!
See also this article by Nate: http://www.nateyolles.com/blog/2017/05/osgi-declarative-services-annotations-in-aem
I use OSGI R6 annotation based approach:
@Component(service = Filter.class, property = {
EngineConstants.SLING_FILTER_SCOPE + "=" + EngineConstants.FILTER_SCOPE_REQUEST,
Constants.SERVICE_RANKING + ":Integer=" + -10002
})
public class MyCustomFilter implements Filter {
Vues
Réponses
Nombre de J’aime
Here another sample that I made: htl-examples/DatalayerFilter.java at master · heervisscher/htl-examples · GitHub
Vues
Réponses
Nombre de J’aime
import com.icfolson.aem.library.core.services.OsgiConfiguration
import com.ingredion.aem.core.services.EloquaService
import com.ingredion.aem.core.services.EloquaServiceUS
import com.ingredion.aem.core.services.SalesforceService
import org.apache.felix.scr.annotations.Activate
import org.apache.felix.scr.annotations.Component
import org.apache.felix.scr.annotations.Modified
import org.apache.felix.scr.annotations.Property
import org.apache.felix.scr.annotations.Service
@Component(label = "Ingredion Eloqua Connector Service For US", metatype = true)
@Service(EloquaServiceUS)
class DefaultEloquaServiceUS implements EloquaServiceUS
{
private static final String DEFAULT_URL = "https://s2141011786.t.eloqua.com/e/f2"
private static final String DEFAULT_ELQ_SITE_ID = "2141011786"
@Property(label = "Eloqua URL", description = "Eloqua Url",
value = DefaultEloquaServiceUS.DEFAULT_URL)
private static final String URL = "url"
@Property(label = "Eloqua Site ID", description = "This ID will tell Eloqua that the request is coming from Ingredion",
value = DefaultEloquaServiceUS.DEFAULT_ELQ_SITE_ID)
private static final String ELQ_SITE_ID = "elqSiteId"
String url
String elqSiteId
@Activate
@Modified
void activate(Map<String, Object> properties) {
def configuration = new OsgiConfiguration(properties)
url = configuration.getAsString(URL, DEFAULT_URL)
elqSiteId = configuration.getAsString(ELQ_SITE_ID, DEFAULT_ELQ_SITE_ID)
}
}
This is my code and this was written in groovy.
Now we are upgrading to aem 6.3 from 6.1.
@Activate, @Modified, @Component, @Service is dericated.
So i replaced with osgi annotations.
But not sure how to replace below lines.
@Property(label = "Eloqua URL", description = "Eloqua Url",
value = DefaultEloquaServiceUS.DEFAULT_URL)
private static final String URL = "url"
Can anyone suggest me how to replace @Property?
Vues
Réponses
Nombre de J’aime
Vues
Réponses
Nombre de J’aime
Hi,
Did you get the replacement for @Property? Also what is the replacement for @Service in osgi? Can you share the exact import here. I'm struck with the two issues. Thanks in advance.
Regards,
Vijay
Vues
Réponses
Nombre de J’aime
did you find replacement for @Property ?
Vues
Réponses
Nombre de J’aime
Hi,
Replacement of @Property is property attribute inside component annotation.
And for service it is service attribute
e.g.
@Component(service = WorkflowProcess.class, property = { | |
Constants.SERVICE_DESCRIPTION + "=A workflow process to Build Package.", | |
"process.label=A workflow process to Build Package." }) |
Please check Using OSGi annotations (>= AEM6.2) - Experience Delivers and Migration of SCR annotations to OSGi R6 annotations in AEM 6.3 for more details.
Thanks
Arun
Vues
Réponses
Nombre de J’aime
my question is for property attribute outside @Service annotation.
I am looking for replacement for below
@Property(label = "Eloqua URL", description = "Eloqua Url",value = DefaultEloquaServiceUS.DEFAULT_URL)
private static final String URL = "url"
Vues
Réponses
Nombre de J’aime
Vues
Réponses
Nombre de J’aime
check above question above from cmr96960454 . I meant to say declaration not inside @searcice, its outside it.
import com.icfolson.aem.library.core.services.OsgiConfiguration
import com.ingredion.aem.core.services.EloquaService
import com.ingredion.aem.core.services.EloquaServiceUS
import com.ingredion.aem.core.services.SalesforceService
import org.apache.felix.scr.annotations.Activate
import org.apache.felix.scr.annotations.Component
import org.apache.felix.scr.annotations.Modified
import org.apache.felix.scr.annotations.Property
import org.apache.felix.scr.annotations.Service
@Component(label = "Ingredion Eloqua Connector Service For US", metatype = true)
@Service(EloquaServiceUS)
class DefaultEloquaServiceUS implements EloquaServiceUS
{
private static final String DEFAULT_URL = "https://s2141011786.t.eloqua.com/e/f2"
private static final String DEFAULT_ELQ_SITE_ID = "2141011786"
@Property(label = "Eloqua URL", description = "Eloqua Url",
value = DefaultEloquaServiceUS.DEFAULT_URL)
private static final String URL = "url"
@Property(label = "Eloqua Site ID", description = "This ID will tell Eloqua that the request is coming from Ingredion",
value = DefaultEloquaServiceUS.DEFAULT_ELQ_SITE_ID)
private static final String ELQ_SITE_ID = "elqSiteId"
String url
String elqSiteId
@Activate
@Modified
void activate(Map<String, Object> properties) {
def configuration = new OsgiConfiguration(properties)
url = configuration.getAsString(URL, DEFAULT_URL)
elqSiteId = configuration.getAsString(ELQ_SITE_ID, DEFAULT_ELQ_SITE_ID)
}
}
This is my code and this was written in groovy.
Now we are upgrading to aem 6.3 from 6.1.
@Activate, @Modified, @Component, @Service is dericated.
So i replaced with osgi annotations.
But not sure how to replace below lines.
@Property(label = "Eloqua URL", description = "Eloqua Url",
value = DefaultEloquaServiceUS.DEFAULT_URL)
private static final String URL = "url"
Can anyone suggest me how to replace @Property?
Vues
Réponses
Nombre de J’aime
Hello!
May I ask if you found a way to replace @property? For example, how to replace the following?
private static final boolean R_FWD_FLOWS_EXPORT = true;
@property(name = "ReactiveForwardingFlowExport", boolValue = R_FWD_FLOWS_EXPORT,
label = "Reactive Forwarding application flow exported via IPFIX on removal")
Private Boolean reactiveForwardingFlowExport = R_FWD_FLOWS_EXPORT;
Vues
Réponses
Nombre de J’aime
Hi,
I am not sure what you are trying to do here.
Are you trying to create configurations for your service? then please check below threads
Using OSGi annotations (>= AEM6.2) - Experience Delivers
Note sure what are you upto.
Thanks
Arun
Vues
Réponses
Nombre de J’aime
here a filter example: htl-examples/MySampleFilter.java at master · heervisscher/htl-examples · GitHub
Vues
Réponses
Nombre de J’aime
Vues
Likes
Réponses