Issue- AEM 6.4 Configurations not picking values from runmode config | Community
Skip to main content
New Participant
June 4, 2018
Solved

Issue- AEM 6.4 Configurations not picking values from runmode config

  • June 4, 2018
  • 9 replies
  • 7155 views

All,

I am in the process of migrating code to 6.4 and i noticed that i see the configurations in config tab of felix console,it is also registered as a component,  and i can edit and set values as well which persist, but persistence occurs at the system folder and not at config.local.author or config.local. Neither does it retrieve the values from the config.local.author folder for the configuration.

I did set up the run mode for the instance

Sample class

@Component(immediate = true,name="Service",service= Service.class, configurationPid="com.test.core.services.Service",property={

        Constants.SERVICE_DESCRIPTION + "=Service",

        Constants.SERVICE_VENDOR + "=Test"

}) // added configurationPid="com.test.core.services.Service" so that it reflects the configuration in the components tab for the component

//@Designate(ocd = Service.Config.class)  // Commented this out to avoid duplicate configurations from appearing in felix console

public class Service {

private static String appID;

public String getAppID() {

        return appID;

    }

@ObjectClassDefinition(name = "Service config", pid="com.test.core.services.Service",description = "Description") // added PID for it to reflect in the felix console configuration

    public @interface Config {

    @AttributeDefinition(name = "App ID",  description = "Description")

    String getAppID();

    @Activate

  protected void activate(Config config) {

    if (config != null) {

            String appID = PropertiesUtil.toString(config.getAppID(), "");

          }

     }

}

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by arunpatidar

I don't know if I understood your above query correct or not.

You want to save appid config value in repository based config?

you can use Apache Sling Logging Logger config, where values store and name has period.

If you want to create names for Osgi config properties like above org.apache.sling ... with dot  , you can use "_", It will be converted into dot.

The AttributeDefinition method naming convention will immediately seem out of place. It's very Pythonic looking with its use of underscores. You don't need to write your method names that way, but the reason for doing so is that the underscores are converted to dots for display in the Felix console and your OSGi configs. For example, you're probably familiar with seeing properties defined as something like resource.resolver.searchpath. To achieve this in your configuration class, your method would be named resource_resolver_searchpath.

More info below

Official OSGi Declarative Services Annotations in AEM - Adobe Experience Manager | AEM/CQ | Apache Sling

Thanks

Arun

9 replies

New Participant
June 5, 2018

Thanks Arun, followed above steps and have it working now., Appreciate it

arunpatidar
arunpatidarAccepted solution
New Participant
June 4, 2018

I don't know if I understood your above query correct or not.

You want to save appid config value in repository based config?

you can use Apache Sling Logging Logger config, where values store and name has period.

If you want to create names for Osgi config properties like above org.apache.sling ... with dot  , you can use "_", It will be converted into dot.

The AttributeDefinition method naming convention will immediately seem out of place. It's very Pythonic looking with its use of underscores. You don't need to write your method names that way, but the reason for doing so is that the underscores are converted to dots for display in the Felix console and your OSGi configs. For example, you're probably familiar with seeing properties defined as something like resource.resolver.searchpath. To achieve this in your configuration class, your method would be named resource_resolver_searchpath.

More info below

Official OSGi Declarative Services Annotations in AEM - Adobe Experience Manager | AEM/CQ | Apache Sling

Thanks

Arun

Arun Patidar
New Participant
June 4, 2018

so i figured out the issue, i see that the name being stored by the prev developers was com..test.core.abc.appid. How do i set this to a configuration in 6.4? I don't believe we could have a string with period as the name ?

arunpatidar
New Participant
June 4, 2018

Hi,

If you change the value of config in Felix console, it would be save in flat file in config.local e.g. /apps/myproj/config.author/com.aem64.core.DeveloperInfoImpl.config/jcr:content

You can click on view in jcr:date property and check the values.

Thanks

Arun

Arun Patidar
New Participant
June 4, 2018

ok so now i change values in felix console and it reflects on the config.local config but i dont see the values from the config under config.local in felix console, is there an issue with the code?

New Participant
June 4, 2018

Thanks i see the run mode set in sling settings but unable to get the values in the config, is the code that i have attached look ok?

arunpatidar
New Participant
June 4, 2018

I tried above steps again and I can see my config values are reflecting web console config manager when I changed in Repository.

The run mode basically for repository based configuration but seems your want to change web console based config location.

To achieve that, if you change repository config values from web console your web console changes will be saved in config.local and your repository config will be invalidated.

Thanks

Arun

Arun Patidar
New Participant
June 4, 2018

Hey Arun,

Thanks for the response.

So i refactored the code for 6.4 removing scr annotations, and the code package contained configurations under the specific run mode , so when i build the apps to aem, should the values not reflect in the configuration manager for the configuration? I am sorry i am new to 6.4 unsure if i am missing something here.

I did test it by setting values and they get stored under /system, so i knocked them off and ran a build, still no luck, the config values are empty although i see the values under config.local.author/com....test.config

I tried knocking off the configs under \crx-quickstart\launchpad\config\..some further path but in vain

Could i be setting the run mode incorrectly? i now again don't see the local run mode. Would you mind letting me know the way i could start with a run mode in 6.4

arunpatidar
New Participant
June 4, 2018

Hi,

You may have to create the config under your custom location /apps/my-project/config.local prior to making any changes in configMgr. Only then the changes made in configMgr will be reflected in that custom directory because the OSGI will bind the config properly to your /apps/my-project/config.local.

If you make changes in configMgr prior to creating this your custom /apps/my-project/config.local then the config will be bound to /apps/system/config and you're doomed. you need to delete in crx/de the related files from /apps/system/config

You might also need to delete the related config in crx-quickstart:

\crx-quickstart\launchpad\config\..some further path

and restart the instance.

Thanks

Arun

Arun Patidar