-3

I would like to know, in the following three ways, which one should be used to get access to jcr data.

resolverFactory.getServiceResourceResolver(Map authInfo);
resolverFactory.getResourceResolver(Map authInfo);
session.getService('serviceName', null);

Could please share knowledge on these specific methods and how to provide authInfo and in what scenarios each of these methods used.

It seems, from AEM 6.0 onwards the getAdministrativeResourceResolver method is deprecated because of security reasons ??

Thank you, Sri

Sri
  • 1,205
  • 2
  • 21
  • 52

1 Answers1

0

From AEM 6.1 you cannot use "admin" to access the nodes. I have detailed a solution here ResourceResolverFactory getServiceResourceResolver throws Exception in AEM 6.1

And to here's what i have done to Read and Write data to JCR.

public class InteractHelper {

  @Reference
  private ResourceResolverFactory resolverFactory;
  private ResourceResolver resourceResolver;

  @Activate
  private void activate(ComponentContext context) {
  ...
  Map<String, Object> param = new HashMap<String, Object>();
  // AEM_SUBSERVICE is the service name that you need to define from the OSGI                 
  param.put(ResourceResolverFactory.SUBSERVICE, AEM_SUBSERVICE);

  try {
        resourceResolver = resolverFactory.getServiceResourceResolver(param);
  ...

  }

  /** Write data to a node */
  public void saveToRepository(ResourceResolver resourceResolver, String dataString) throws Exception {
     Session session = resourceResolver.adaptTo(Session.class);

     Node userNode;
     Node userJcrContentNode;
     String nodePath="";    

     if (session!=null) {
        Node usersRootNode = session.getNode(USERS_ROOT_FOLDER);
        userNode = session.getNode(usersRootNode.getPath() + "/" + "suren");

        if (userNode!=null) {                
            nodePath = userNode.getPath();
        }

        if (!session.itemExists(nodePath)) {
            userNode = usersRootNode.addNode("suren", "cq:Page");
            userJcrContentNode = userNode.addNode("jcr:content", "cq:PageContent");
        }

        if(!session.itemExists(nodePath+"/jcr:content")){
            userJcrContentNode = userNode.addNode("jcr:content", "cq:PageContent");    
        }
        userJcrContentNode = userNode.getNode("jcr:content");
        userJcrContentNode.setProperty("abc-shoppingcart",dataString);

        // Save the session changes and log out
        session.save();       
        session.logout();
     }
 }

 /** Read data from Node */
 public void readFromRepository(ResourceResolver resourceResolver, String encodedShoppingCartString) throws Exception {
    Session session = resourceResolver.adaptTo(Session.class);

    if (session!=null) {
        Node usersRootNode = session.getNode(USERS_ROOT_FOLDER);

        Node userNode = usersRootNode.addNode("suren", "cq:Page");
        Node userJcrContentNode = userNode.addNode("jcr:content", "cq:PageContent");

        userJcrContentNode = userNode.getNode("jcr:content");
        userJcrContentNode.setProperty("abc-shoppingcart",dataString);

        // Save the session changes and log out
        session.save();       
        session.logout();
    }
}
Community
  • 1
  • 1
Suren Konathala
  • 3,497
  • 5
  • 43
  • 73