Create an OSGi configuration for Adobe Experience Manager(AEM), that could be use to manage different configuration values, based on the runmode.
- Create a Configuration class, ObjectClassDefinition.
package com.adobe.aem.guides.wknd.core.config; import org.osgi.service.metatype.annotations.AttributeDefinition; import org.osgi.service.metatype.annotations.ObjectClassDefinition; @ObjectClassDefinition( name = "Cognito Forms API Configuration", description = "Configuration for the Cognito Forms API integration" ) public @interface CognitoFormsApiConfiguration { @AttributeDefinition( name = "Endpoint", description = "Base endpoint URL for Cognito Forms API" ) String endpoint() default "https://api.cognitoforms.com"; @AttributeDefinition( name = "Client ID", description = "Client ID for the Cognito Forms API" ) String clientId(); @AttributeDefinition( name = "Client Secret", description = "Client Secret for the Cognito Forms API" ) String clientSecret(); }
- Now, create an interface with getter methods.
package com.adobe.aem.guides.wknd.core.services; public interface CognitoFormsApiService { String getEndpoint(); String getClientId(); String getClientSecret(); }
- Finally, create a class and implement the interface which we created in step 2.
package com.adobe.aem.guides.wknd.core.services.impl; 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.Designate; import com.adobe.aem.guides.wknd.core.config.CognitoFormsApiConfiguration; import com.adobe.aem.guides.wknd.core.services.CognitoFormsApiService; @Component(immediate = true, service = CognitoFormsApiService.class) @Designate(ocd = CognitoFormsApiConfiguration.class) public class CognitoFormsApiServiceImpl implements CognitoFormsApiService { private volatile String endpoint; private volatile String clientId; private volatile String clientSecret; @Activate @Modified protected void activate(CognitoFormsApiConfiguration config) { this.endpoint = config.endpoint(); this.clientId = config.clientId(); this.clientSecret = config.clientSecret(); } @Override public String getEndpoint() { return endpoint; } @Override public String getClientId() { return clientId; } @Override public String getClientSecret() { return clientSecret; } }
No comments:
Post a Comment