Config factory not visible on configMgr console | Community
Skip to main content
maddy_23
Level 2
May 11, 2023
Solved

Config factory not visible on configMgr console

  • May 11, 2023
  • 1 reply
  • 899 views

Hi I am trying to create a config factory. Below are the three classes I have created

 

public interface OSGiConfig {
String getServiceUrl();
}

 

=====================================

 

import org.osgi.service.metatype.annotations.AttributeDefinition;
import org.osgi.service.metatype.annotations.ObjectClassDefinition;
import org.osgi.service.metatype.annotations.AttributeType;

@ObjectClassDefinition(name = "My Site - OSGi Factory Configs",
description = "OSGi Factory Config for service url")
public @interface OSGiFectoryConfig {

@AttributeDefinition(name = "Service Url Text",
description = "Enter Service Url ",
type = AttributeType.STRING)
public String serviceUrlStr();
}

 

=======================================


import org.osgi.service.component.annotations.*;
import org.osgi.service.metatype.annotations.Designate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.mysite.core.configs.OSGiConfig;
import com.mysite.core.configs.OSGiFectoryConfig;

@8220494(service = OSGiConfig.class, configurationPolicy = ConfigurationPolicy.REQUIRE)
@Designate(ocd = OSGiFectoryConfig.class, factory = true)
public class OSGiFactoryConfigImpl implements OSGiConfig {
private static final Logger LOG = LoggerFactory.getLogger(OSGiFactoryConfigImpl.class);

private String serviceUrlStr;

@580286
@9182423
protected void activate(final OSGiFectoryConfig config){
serviceUrlStr = config.serviceUrlStr();
}

@9944223
public String getServiceUrl() {
return serviceUrlStr;
}

}

 

When I deploy the code, I could not see my factory config in configMgr console. I am using AEM 6.5.5

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 Rohit_Utreja

Please try with below code.

 

 

public interface OSGiConfig { String getServiceUrl(); } ---------------------------------------- import org.osgi.service.metatype.annotations.AttributeDefinition; import org.osgi.service.metatype.annotations.AttributeType; import org.osgi.service.metatype.annotations.ObjectClassDefinition; @ObjectClassDefinition( name = "My Site - OSGi Factory Configs", description = "OSGi Factory Config for service url") public OSGiFectoryConfig { @AttributeDefinition( name = "Service Url Text", description = "Enter Service Url ", type = AttributeType.STRING) public String serviceUrlStr(); } ----------------------------------------------- import org.osgi.service.component.annotations.*; import org.osgi.service.metatype.annotations.Designate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Component(service = OSGiConfig.class,immediate=true, configurationPolicy = ConfigurationPolicy.REQUIRE) @Designate(ocd = OSGiFectoryConfig.class, factory = true) public class OSGIFactoryConfigImpl implements OSGiConfig { private static final Logger LOG = LoggerFactory.getLogger(OSGIFactoryConfigImpl.class); private String serviceUrlStr; protected void activate(final OSGiFectoryConfig config) { serviceUrlStr = config.serviceUrlStr(); } public String getServiceUrl() { return serviceUrlStr; } }

 

 

I hope it helps!

1 reply

Rohit_Utreja
Community Advisor
Rohit_UtrejaCommunity AdvisorAccepted solution
Community Advisor
May 11, 2023

Please try with below code.

 

 

public interface OSGiConfig { String getServiceUrl(); } ---------------------------------------- import org.osgi.service.metatype.annotations.AttributeDefinition; import org.osgi.service.metatype.annotations.AttributeType; import org.osgi.service.metatype.annotations.ObjectClassDefinition; @ObjectClassDefinition( name = "My Site - OSGi Factory Configs", description = "OSGi Factory Config for service url") public OSGiFectoryConfig { @AttributeDefinition( name = "Service Url Text", description = "Enter Service Url ", type = AttributeType.STRING) public String serviceUrlStr(); } ----------------------------------------------- import org.osgi.service.component.annotations.*; import org.osgi.service.metatype.annotations.Designate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Component(service = OSGiConfig.class,immediate=true, configurationPolicy = ConfigurationPolicy.REQUIRE) @Designate(ocd = OSGiFectoryConfig.class, factory = true) public class OSGIFactoryConfigImpl implements OSGiConfig { private static final Logger LOG = LoggerFactory.getLogger(OSGIFactoryConfigImpl.class); private String serviceUrlStr; protected void activate(final OSGiFectoryConfig config) { serviceUrlStr = config.serviceUrlStr(); } public String getServiceUrl() { return serviceUrlStr; } }

 

 

I hope it helps!

maddy_23
maddy_23Author
Level 2
May 11, 2023

@rohit_utreja I tried but it did not worked, even it was not compiling because of there is class type missing for OSGiFectoryConfig.

 

Can you please highlight what was wrong in the code I posted. So I will make those changes and try again.

Rohit_Utreja
Community Advisor
Community Advisor
May 12, 2023

You need to import 'OSGiFectoryConfig' in file OSGIFactoryConfigImpl.
It will resolve the compiling error.

I hope it helps!