Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

system user

Avatar

Level 1

Hi Team,

I have created a systemUser and add the same into user mapper configuration like below

com.adobe.aem.guides.aem-guides-wknd.core:systemUser=systemUser

and getting the same via param.put(ResourceResolverFactory.SUBSERVICE,"systemUser");

1 Accepted Solution

Avatar

Correct answer by
Level 5

Sorry..its my bad...

ResourceResolver resourceResolver = resourceResolverFactory.getServiceResourceResolver(param);

Its working now...

View solution in original post

15 Replies

Avatar

Community Advisor

it seems you forgot to tell the issue?

Avatar

Level 5

Hi ,

Thanks for your reply .

Can you pls check my query here pls . systemuser is working some java class not for all ..

example :

com.aem.example.core.userTest - Its working ..its giving user id as systemUser

com.aem.example.core.impl.SearchService - Its not working ..its giving anonymous  

Avatar

Level 10

Could you validate if your bundle's symbolic name is correct per pom.xml - com.adobe.aem.guides.aem-guides-wknd.core

syntax:

<service-name>[:<subservice-name>]=<authorizable id of a JCR system user>

Could you explain more about "systemuser is working some java class not for all .." ?

Avatar

Level 5

Thanks for your reply..

I have created two different java class and try to consume same systemuser in both the class for different purpose.

By default ..this systemuser has all the permission(Read & Write)

com.aem.example.core.userTest.java & com.aem.example.core.impl.SearchService.java

UserTest.java - Its working fine

SearchService - Its throwing a anonymous user

Please find the below screenshot for your reference.

1720708_pastedImage_0.png

Avatar

Level 10

Could you share stacktrace and pom.xml's maven-bundle-plugin snippet?

Did you follow the tutorial as mentioned and tried above link shared by Scott?

Avatar

Level 5

HI Team,

core/pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<!--

|  Copyright 2017 Adobe Systems Incorporated

|

|  Licensed under the Apache License, Version 2.0 (the "License");

|  you may not use this file except in compliance with the License.

|  You may obtain a copy of the License at

|

|      http://www.apache.org/licenses/LICENSE-2.0

|

|  Unless required by applicable law or agreed to in writing, software

|  distributed under the License is distributed on an "AS IS" BASIS,

|  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

|  See the License for the specific language governing permissions and

|  limitations under the License.

-->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>

        <groupId>com.adobe.aem.guides</groupId>

        <artifactId>aem-guides-wknd</artifactId>

        <version>0.0.1-SNAPSHOT</version>

        <relativePath>../pom.xml</relativePath>

    </parent>

    <artifactId>aem-guides-wknd.core</artifactId>

    <packaging>bundle</packaging>

    <name>WKND Sites Project - Core</name>

    <description>Core bundle for WKND Sites Project</description>

    <build>

        <plugins>

            <plugin>

                <groupId>org.apache.sling</groupId>

                <artifactId>maven-sling-plugin</artifactId>

            </plugin>

            <plugin>

                <groupId>org.apache.felix</groupId>

                <artifactId>maven-bundle-plugin</artifactId>

                <extensions>true</extensions>

                <configuration>

                    <instructions>

                        <!-- Import any version of javax.inject, to allow running on multiple versions of AEM -->

                        <Import-Package>javax.inject;version=0.0.0,*</Import-Package>

                        <Sling-Model-Packages>

                            com.adobe.aem.guides.wknd.core

                        </Sling-Model-Packages>

                    </instructions>

                </configuration>

            </plugin>

        </plugins>

    </build>

    <dependencies>

        <!-- OSGi Dependencies -->

        <dependency>

            <groupId>org.osgi</groupId>

            <artifactId>osgi.core</artifactId>

        </dependency>

        <dependency>

            <groupId>org.osgi</groupId>

            <artifactId>osgi.cmpn</artifactId>

        </dependency>

        <dependency>

            <groupId>org.osgi</groupId>

            <artifactId>osgi.annotation</artifactId>

        </dependency>

        <!-- Other Dependencies -->

        <dependency>

            <groupId>org.slf4j</groupId>

            <artifactId>slf4j-api</artifactId>

        </dependency>

        <dependency>

            <groupId>javax.jcr</groupId>

            <artifactId>jcr</artifactId>

        </dependency>

        <dependency>

            <groupId>javax.servlet</groupId>

            <artifactId>servlet-api</artifactId>

        </dependency>

        <dependency>

            <groupId>com.adobe.aem</groupId>

            <artifactId>uber-jar</artifactId>

            <classifier>apis</classifier>

        </dependency>

        <dependency>

            <groupId>org.apache.sling</groupId>

            <artifactId>org.apache.sling.models.api</artifactId>

        </dependency>

        <dependency>

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

        </dependency>

        <dependency>

            <groupId>org.mockito</groupId>

            <artifactId>mockito-core</artifactId>

        </dependency>

        <dependency>

            <groupId>junit-addons</groupId>

            <artifactId>junit-addons</artifactId>

        </dependency>

        <dependency>

            <groupId>org.apache.sling</groupId>

            <artifactId>org.apache.sling.testing.sling-mock</artifactId>

        </dependency>

        <dependency>

            <groupId>uk.org.lidalia</groupId>

            <artifactId>slf4j-test</artifactId>

        </dependency>

    </dependencies>

</project>

Avatar

Level 10

Are both your Java classes in the same OSGi bundle - if they are in different bundles - that could be the issue.

Avatar

Level 5

Both are same in bundle...am i getting systemUser for class A and anonymous user for class B.

And also we are facing one more issue.. If i create a new package with existing maven project...its not getting deployed.. Anything i am missing here?

Avatar

Community Advisor

As you have verified all system user configurations and mapping, so let's dig into the code.
What are the annotations you are using? Could you please share the complete code for both the java classes?

com.aem.example.core.userTest.java
com.aem.example.core.impl.SearchService.java

Avatar

Level 5

Hi Yadav,

I am using the same line of code in both the classes . Only difference is usertest is a servlet class and SearchService is a normal java class and calling a addproperty() method from slightly.

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

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

ResourceResolver resourceResolver = null;

try {

resourceResolver = resourceResolverFactory.getResourceResolver(param);

log.info(resourceResolver.getUserID());

Avatar

Community Advisor

By normal java UserTest class, you mean Sling Model class for slightly component? i.e.

@Model(adaptables = Resource.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)

public class UserTest {

   @SlingObject
   private ResourceResolver resourceResolver;

  ...........................

  ........................

}


Or how you inject or initialize ResourceResolverFactory?

Avatar

Level 5

package com.adobe.aem.guides.wknd.core.impl;

import java.util.HashMap;

import java.util.Map;

import javax.jcr.Node;

import javax.jcr.RepositoryException;

import javax.jcr.Session;

import javax.jcr.ValueFormatException;

import javax.jcr.lock.LockException;

import javax.jcr.nodetype.ConstraintViolationException;

import javax.jcr.version.VersionException;

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

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

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

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

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

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

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import com.adobe.aem.guides.wknd.core.SearchService;

@Component

public class SearchServiceImpl implements SearchService {

   

@Reference

ResourceResolverFactory resourceResolverFactory;

protected final Logger log = LoggerFactory.getLogger(this.getClass());

    @Override

public void addProperty() {

// TODO Auto-generated method stub

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

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

ResourceResolver resourceResolver = null;

try {

resourceResolver = resourceResolverFactory.getResourceResolver(param);

log.info(resourceResolver.getUserID());

Resource pageResource = resourceResolver.getResource("/content/wknd/jcr:content");

log.info("page"+pageResource.getPath());

Node myNode = pageResource.adaptTo(Node.class);

myNode.setProperty("author","sathya");

Session session = resourceResolver.adaptTo(Session.class);

session.save();

log.info("Node saved sucessfully");

} catch (LoginException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ValueFormatException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (VersionException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (LockException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ConstraintViolationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (RepositoryException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

Avatar

Correct answer by
Level 5

Sorry..its my bad...

ResourceResolver resourceResolver = resourceResolverFactory.getServiceResourceResolver(param);

Its working now...