How to call activate method of Parent class | Community
Skip to main content
Ankur_Khare
Community Advisor
Community Advisor
May 2, 2019
Solved

How to call activate method of Parent class

  • May 2, 2019
  • 3 replies
  • 2647 views

Hi Team,

I am trying to extend OOB QRCodeGenerator servlet & here i am trying to initialize the parameters in activate method of OOB QRcodeGenerator Servlet whenever my custom servlet is called-

My Servlet-

@Component(service = Servlet.class, property = {"sling.servlet.paths=/bin/qrcode", "sling.servlet.extensions=png", "sling.servlet.methods=GET"})

@Designate(ocd = QRCodeGeneratorServlet.Configuration.class)

public class QRCodeGeneratorServlet extends QRCodeImageGenerator {

   protected void activate(Configuration config) {

        dataNameWhitelist = config.dataNameWhitelist();

    }

}

QRCodeGenerator Servlet-

@Component(metatype=true,

           label="AEM WCM QR-Code Generator Servlet",

           immediate=true)

@Service(value=Servlet.class)

@Properties( {

        @Property(name=Constants.SERVICE_DESCRIPTION,

                  value="QR Code Image Generator"),

        @Property(name="sling.servlet.paths",

                  value="/libs/wcm/mobile/qrcode",

                  propertyPrivate=true),

        @Property(name="sling.servlet.extensions",

                  value="png",

                  propertyPrivate=true),

        @Property(name="sling.servlet.methods",

                  value="GET",

                  propertyPrivate=true)

    } )

@SuppressWarnings("serial")

public class QRCodeImageGenerator extends AbstractImageServlet {

    protected void activate(ComponentContext componentContext) {

        Dictionary<String, Object> properties = componentContext.getProperties();

        dataNameWhitelist = OsgiUtil.toStringArray(properties.get(DATA_NAME_WHITELIST));

        if (externalizer != null) {

            author = externalizer.authorLink(null, "");

            publish = externalizer.publishLink(null, "");

        }

    }

}

Now here whenever i am calling my custom servlet -

These params are coming null-

        if (externalizer != null) {

            author = externalizer.authorLink(null, "");

            publish = externalizer.publishLink(null, "");

        }

author,publish & externalizer.

Is there any way by which we can initialize these params whenever my custom servlet is called?

Regards

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 joerghoh

Please don't inherit from product servlets. The fact, that this class is exported from the bundle, is problemtic, and with updated versions it will definitely go away. Typically the servlet classes are not exported to the classpath available by you, and the fact that it's done here, is an issue.

3 replies

smacdonald2008
Level 10
May 2, 2019

Are you trying to read OSGI config values? 

joerghoh
Adobe Employee
joerghohAdobe EmployeeAccepted solution
Adobe Employee
May 2, 2019

Please don't inherit from product servlets. The fact, that this class is exported from the bundle, is problemtic, and with updated versions it will definitely go away. Typically the servlet classes are not exported to the classpath available by you, and the fact that it's done here, is an issue.

smacdonald2008
Level 10
May 2, 2019

Joerg is correct - you should not be using a Servlet like this.