


In this article we will explore ConfigurationAdmin interface. Service for administering configuration data. ConfigurationAdmin is a dictionary of properties. To identify a target service’s dictionary use its PID. Sharing as code snippet that reads “rootmapping.target” configuration of the OOTB “Day CQ Root Mapping” service. package com.techrevel.dam.core.servlets; import java.io.IOException; import java.util.Dictionary; import javax.servlet.Servlet; import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.SlingHttpServletResponse; import org.apache.sling.api.servlets.HttpConstants; import org.apache.sling.api.servlets.SlingAllMethodsServlet; import org.apache.sling.commons.osgi.PropertiesUtil; import org.osgi.service.cm.Configuration; import org.osgi.service.cm.ConfigurationAdmin; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Component(service = Servlet.class, property = { "sling.servlet.methods=" + HttpConstants.METHOD_GET, "sling.servlet.paths=" + "/apps/techrevel/accessserviceconfig" }) public class AccessServiceConfig extends SlingAllMethodsServlet { private final Logger LOGGER = LoggerFactory.getLogger(getClass()); @Reference private ConfigurationAdmin configAdmin; /** * The method fetches the Post Process Observation configuration * * @throws IOException */ private void getConfigs() throws IOException { Configuration taxonomyFeedConfig = configAdmin .getConfiguration("com.day.cq.commons.servlets.RootMappingServlet"); Dictionary<String, Object> properties = taxonomyFeedConfig.getProperties(); LOGGER.debug("[getConfigs] – Root Mapping Target: {}", PropertiesUtil.toString(properties.get("rootmapping.target"), "")); } @Override protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException { getConfigs(); } } view rawAccessServiceConfig.java hosted with ❤ by GitHub When a target service’s configuration is updated, config details would also refresh in ConfigurationAdmin API. Thus, if you read configuration once updates are persisted, you would get the updated values. Example: if we access above servlet after updating the “rootmapping.target”, we would receive the updated value in logs.
Please use this thread to ask the related questions.
Topics help categorize Community content and increase your ability to discover relevant content.
Views
Replies
Sign in to like this content
Total Likes