0

I am a newbie at Java programming and Jhipster framework and maybe my question is an annoying one, but despite the many topics I read on it I can't solve my question. So, I am asking for some help. In this topic getting the current logged in user in JHipster I found this piece of code:

final Optional<User> isUser = userService.getUserWithAuthorities();
if(!isUser.isPresent()) {
   log.error("User is not logged in");
   return new Shinything()
}

final User user = isUser.get();
// continue with the user

which is exactly what I need in my class NjdUserConfiguration.java: this class contains a field (User) user and I aim to get NjdUserConfiguration retrieved by logged in user login.

So, firstly, I add to NjdUserConfigurationRepository.java this query annotation:

    @Query("select njd_user_configuration from NjdUserConfiguration njd_user_configuration where njd_user_configuration.user =:user")
    Optional<NjdUserConfiguration> findOneByUser(@Param("user") User user);

Secondly, I create NjdUserConfigurationService.java like this: package it.tal.app.service;

import it.tal.app.domain.NjdUserConfiguration;
import it.tal.app.domain.User;
import it.tal.app.repository.NjdUserConfigurationRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Optional;

/**
 * Service Implementation for managing NdjUserConfiguration.
 */
@Service
@Transactional
public class NjdUserConfigurationService {

    private final Logger log = LoggerFactory.getLogger(NjdUserConfigurationService.class);

    private final NjdUserConfigurationRepository NjdUserConfigurationRepository;

    public NjdUserConfigurationService(NjdUserConfigurationRepository njdUserConfigurationRepository) {
        this.NjdUserConfigurationRepository = njdUserConfigurationRepository;
    }
    /**
     * Get one NdjUserConfiguration by user.
     *
     * @param user the user of the entity
     * @return the entity
     */
    @Transactional(readOnly = true)
    public Optional<NjdUserConfiguration> findOneByUser(User user) {
        log.debug("Request to get NdjUserConfiguration : {}", user);
        return NjdUserConfigurationRepository.findOneByUser(user);
    }
}

Thirdly, I tried to used it in NjdUserConfiguration.java mocking the original code in this new method:

    public NjdUserConfiguration getCurrentUser() {
        Optional<User> isUser = new UserService.getUserWithAuthorities();
        if(isUser.isPresent()) {
            //final User user = isUser.get();
            return new NjdUserConfigurationService.getOneByUser(isUser.get());
        } else {
             return null;
        }
    }

No matter my efforts both getUserWithAuthorities() and getOneByUser(isUser.get()) result in "cannot resolve symbol getUserWithAuthorities()" and "cannot resolve symbol getOneByUser()", though both

import it.tal.app.service.NjdUserConfigurationService;
import it.tal.app.service.UserService;

are present. What did I do so badly or what am I missing?

Thank you

Nicholas K
  • 15,148
  • 7
  • 31
  • 57
mlstoppa
  • 97
  • 9

1 Answers1

0

You misuse new operator. Instead of

return new UserService.getUserWithAuthorities();

use

return UserService.getUserWithAuthorities();

assuming UserService is an injected bean.

BTW, java code conventions recommend naming variables so they start with lowercase letter.

Nikolai Shevchenko
  • 7,083
  • 8
  • 33
  • 42
  • Thank you Nikolay, applying your suggestion to getUserWithAuthorities() returns "Non static method getUserWithAuthorities() cannot be referenced from a static context". Whereas, dropping off new from getOneByUser(isUser.get()) doesn't change anything. At this point I think I missed the injection. I'll look for documentation on it. – mlstoppa Aug 09 '18 at 16:51
  • I am not sure how to go on: do I have to create an Inject class? – mlstoppa Aug 09 '18 at 17:15