Expand my Community achievements bar.

SOLVED

resourceresolver null java.lang.NullPointerException

Avatar

Level 5

I'm getting java.lang.NullPointerException

Here's my code

package com.adobe.aem.xxx.screens.core;

import java.util.HashMap;

import java.util.Map;

import javax.annotation.PostConstruct;

//Sling Imports

import org.apache.sling.api.resource.ResourceResolverFactory;

import org.apache.sling.api.resource.ResourceResolver;

import org.apache.sling.api.resource.Resource;

import org.apache.sling.api.resource.ValueMap;

import org.apache.sling.models.annotations.Model;

import org.osgi.service.component.annotations.Component;

import org.osgi.service.component.annotations.Reference;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

@Component(immediate=true)

@Model(adaptables = Resource.class)

public class DisplayLocation{

    Logger logger = LoggerFactory.getLogger(DisplayLocation.class);

   

    private String locationTitle;

    private String srcLocation;

    private String title = "No data";

    private String location = "/content/screens/xxx-screens/locations/xxx/xxx-displays/jcr:content";

   

    //Inject a Sling ResourceResolverFactory

    @Reference

    private ResourceResolverFactory resolverFactory;

   

    @PostConstruct

    protected void init() {

        logger.info("Post Construct Entrance");

       

        Map<String, Object> param = new HashMap<String, Object>();

        param.put(ResourceResolverFactory.SUBSERVICE,"screensLocationService");

        ResourceResolver resourceResolver = null;

        try {

            logger.info("ResourceResolver");

            logger.info("RF " + resolverFactory);

            title = param.toString();

            resourceResolver = resolverFactory.getServiceResourceResolver(param);   //this is the error. It then proceed to catch.

            logger.info(resourceResolver.getUserID());                                                       //lines from here isn't read.

            logger.info("Resource");

            Resource resource = resourceResolver.getResource(location);

            logger.info("ValueMap");

            ValueMap properties = resource.adaptTo(ValueMap.class);

           

            title = properties.get("sling:resourceType", String.class);

           

           

            resourceResolver.close();

        } catch (Exception e) {

            e.printStackTrace();

            logger.error("Error in Try Catch " + e);

        }

       

        locationTitle = title;

        srcLocation = location;

       

    }

   

    public String getLocationTitle() {

        return locationTitle;

    }

    public String getLocationTitle2() {

        return srcLocation;

    }

}

I've searched and searched but to no avail.

Apache Sling Service Mapper: (tried both)(and many more)

1753127_pastedImage_8.png

1752970_pastedImage_3.png

my system-user

1753124_pastedImage_4.png

1753125_pastedImage_5.png

Bundle Name:

1753126_pastedImage_6.png

Why do I get?

1753128_pastedImage_9.png

1 Accepted Solution

Avatar

Correct answer by
Level 10
4 Replies

Avatar

Community Advisor

Hey Karl,

Shouldn't you be using @OSGiService for your ResourceResolverFactory, instead of @Reference?

Regards,

Peter

Avatar

Community Advisor

Addition to Peters response, no need to use @Component annotation with @Model



Arun Patidar

Avatar

Correct answer by
Level 10

Avatar

Level 10

alao Do not use @compnent and @model like that. If you use @model, you do not use @ component,