You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@sling.apache.org by Cris Rockwell <cm...@umich.edu> on 2018/05/10 19:48:57 UTC
Runmode property for Filter
Hi folks
If I have a filter like the one shown below and in the link, is it possible to set a property so it only takes effect on a certain Runmode? I would like my filter to only run on instances having the publish run mode.
https://sling.apache.org/documentation/the-sling-engine/filters.html <https://sling.apache.org/documentation/the-sling-engine/filters.html>
@Component(service = Filter.class,
property = {
Constants.SERVICE_DESCRIPTION + "=Demo to filter incoming requests",
EngineConstants.SLING_FILTER_SCOPE + "=" + EngineConstants.FILTER_SCOPE_REQUEST,
Constants.SERVICE_RANKING + "=-700",
EngineConstants.SLING_FILTER_PATTERN + "=/content/my-project/.*"
})
public final class OpenIDConnectFilter implements Filter {
}
Thanks!
Cris Rockwell
App Sys Analyst/Programmer Sr | U-M LSA Web Services
cmrockwe@umich.edu
Re: Runmode property for Filter
Posted by Robert Munteanu <ro...@apache.org>.
Hi Cris,
On Thu, 2018-05-10 at 15:48 -0400, Cris Rockwell wrote:
> Hi folks
>
> If I have a filter like the one shown below and in the link, is it
> possible to set a property so it only takes effect on a certain
> Runmode? I would like my filter to only run on instances having the
> publish run mode.
(snip)
The way this is usually achieved is by:
- making the component require a configuration ( configurationPolicy =
REQUIRE )
- deploying the configuration only in the publish runmode, for instance
by adding it to a `/apps/myapp/config.publish` folder.
Robert
Re: Runmode property for Filter
Posted by Cris Rockwell <cm...@umich.edu>.
Thank you Wim and Robert for the very useful advice!
I have two follow up questions:
1) Is it possible to set the value of EngineConstants.SLING_FILTER_PATTERN as a configuration? I have the code below. Ideally, I would be able to set something useful in the config and not just an enable boolean. Is this possible to set an @Component( property = {}) with configuration?
2) The filter component service type is singleton. For the configuration properties, should I set these to static?
Thanks!
Cris
/*
* example code
*/
@Component(service = Filter.class,
immediate = true,
configurationPolicy = REQUIRE,
property = {
Constants.SERVICE_DESCRIPTION + "=Demo to filter incoming requests",
EngineConstants.SLING_FILTER_SCOPE + "=" + EngineConstants.FILTER_SCOPE_REQUEST,
Constants.SERVICE_RANKING + "=-700",
EngineConstants.SLING_FILTER_PATTERN + “=/can/this/be/configuration.?"
},
configurationPid = "edu.yada.filters.MyFilter”)
@Designate(ocd=MyFilter.Configuration.class)
public final class MyFilter implements Filter {
private static String CONFIG_1; // static ok?
private static String CONFIG_2;
private static String PATH_PATTERN;
// inside MyFilter class there is this subclass
@ObjectClassDefinition(name = "LSA Filter Configurations")
public @interface Configuration {
@AttributeDefinition(
name = “Filter Pattern"
)
String filter_pattern() default "";
}
// using the configurations
protected void Activate(Configuration config) {
pattern = config.filter_pattern();
// How to set EngineConstants.SLING_FILTER_PATTERN from Activate?
}
}
> On May 10, 2018, at 3:54 PM, Wim Symons <wi...@gmail.com> wrote:
>
> Cris,
>
> See the explanation at http://www.computepatterns.com/43/osgi-component-in-aem-that-is-active-only-in-specific-run-mode-say-publish/.
>
> Kind regards
>
> Wim
>
>> Op 10 mei 2018 om 21:48 heeft Cris Rockwell <cm...@umich.edu> het volgende geschreven:
>>
>> Hi folks
>>
>> If I have a filter like the one shown below and in the link, is it possible to set a property so it only takes effect on a certain Runmode? I would like my filter to only run on instances having the publish run mode.
>>
>> https://sling.apache.org/documentation/the-sling-engine/filters.html <https://sling.apache.org/documentation/the-sling-engine/filters.html>
>>
>>
>> @Component(service = Filter.class,
>> property = {
>> Constants.SERVICE_DESCRIPTION + "=Demo to filter incoming requests",
>> EngineConstants.SLING_FILTER_SCOPE + "=" + EngineConstants.FILTER_SCOPE_REQUEST,
>> Constants.SERVICE_RANKING + "=-700",
>> EngineConstants.SLING_FILTER_PATTERN + "=/content/my-project/.*"
>> })
>>
>> public final class OpenIDConnectFilter implements Filter {
>>
>> }
>>
>> Thanks!
>> Cris Rockwell
>> App Sys Analyst/Programmer Sr | U-M LSA Web Services
>> cmrockwe@umich.edu
>>
>>
>>
Re: Runmode property for Filter
Posted by Wim Symons <wi...@gmail.com>.
Cris,
See the explanation at http://www.computepatterns.com/43/osgi-component-in-aem-that-is-active-only-in-specific-run-mode-say-publish/.
Kind regards
Wim
> Op 10 mei 2018 om 21:48 heeft Cris Rockwell <cm...@umich.edu> het volgende geschreven:
>
> Hi folks
>
> If I have a filter like the one shown below and in the link, is it possible to set a property so it only takes effect on a certain Runmode? I would like my filter to only run on instances having the publish run mode.
>
> https://sling.apache.org/documentation/the-sling-engine/filters.html <https://sling.apache.org/documentation/the-sling-engine/filters.html>
>
>
> @Component(service = Filter.class,
> property = {
> Constants.SERVICE_DESCRIPTION + "=Demo to filter incoming requests",
> EngineConstants.SLING_FILTER_SCOPE + "=" + EngineConstants.FILTER_SCOPE_REQUEST,
> Constants.SERVICE_RANKING + "=-700",
> EngineConstants.SLING_FILTER_PATTERN + "=/content/my-project/.*"
> })
>
> public final class OpenIDConnectFilter implements Filter {
>
> }
>
> Thanks!
> Cris Rockwell
> App Sys Analyst/Programmer Sr | U-M LSA Web Services
> cmrockwe@umich.edu
>
>
>