luchob/softuni-sep-2023

Mobilele problems

Closed this issue · 4 comments

Връзка към проекта:
https://github.com/KrasimirKamzhalov/-JavaWeb-September-2023

Кратко описание:

Здравей Лъчо,
Предните преподаватели всички ни показваха на Maven .Видимо разликата е малка.Започнах с теб на Gradle, но нещо не тръгва още в началото при същите неща като теб.С безплатната версия съм.Предполагам е от това.Обърнах си на Maven.Имам проблемс "map" в UserServiceImpl не го хваща.По-надолу не вижда и .setFirstName .Може ли да погледнеш и да кажеш.Предполагам,че всичко идва от Gradle-Maven разлики.Закоментирал съм ги просто за да вървя напред с вас.Зипнал съм файл в репото.Благодаря.

  1. Какво очаквате да се случи
  2. Какво всъщност се случва
  3. Какво опитахте

Стъпки за репродуциране:

Опишете възможно най-лесните стъпки, с помощта на които може да се репродуцира проблемът.

mobileleMavenZIP.zip

luchob commented

Здравей!

Нито един от двата проблема няма нещо общо с грейдъл или пък с мейвън :-)

Относно проблема с map. Имаше една изпусната къдрава скоба в метода loginUser. Като няма скоба надолу почва да ти казва странни неща, т.к. не може да се компилира. Ето как трябва да изглежда:

@Override
  public boolean loginUser(UserLoginDTO userLoginDTO) {
    var userEntity = userRepository.findByEmail(userLoginDTO.email()).
        orElse(null);

    boolean loginSuccess = false;

    if (userEntity != null) {
      String rawPassword = userLoginDTO.password();
      String encodedPassword = userEntity.getPassword();

      loginSuccess = encodedPassword != null &&
          passwordEncoder.matches(rawPassword, encodedPassword);
      if (loginSuccess) {
        currentUser
            .setLogged(true)
            .setFirstName(userEntity.getFirstName())
            .setLastName(userEntity.getLastName());
      } else {
        currentUser.logout();
      }
    }
    return loginSuccess;
  }

Относно втория проблем със setFirstName. Той се корени в това, че аз си генерирам сетърите в IntelliJ с билдър патърн:

Screenshot 2023-10-05 at 21 27 02

Ето как изглеждат те (връща се същия обект след викането на сетъра):

    public UserEntity setLastName(String lastName) {
        this.lastName = lastName;
        return this;
    }

Затова може и да ги 'chain'-вам. Твоите не са генерирани така и изглеждат по този начин:

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

Затова не можеш да ги 'chain'-неш.

Поздрави,
Л.

Определено не ми тръгва с Грейдъл.Още в началото преди да сме почнали при стартиране ми дава проблеми.При едни и същи настройки с вашите.Едно към едно проекта само сменям .yaml с app.properies. със взети настройки от вашия файл с Грейдл не тръгва , а с Мейвън няма проблем. По тази причина си минах на Мейвън.
Смених патерна и направих наново гетери и сетери.
@OverRide
public boolean loginUser(UserLoginDTO userLoginDTO) {

    var userEntity = userRepository
            .findByEmail(userLoginDTO.email())
            .orElse(null);

    boolean loginSuccess = false;

    if (userEntity != null) {

        String rawPassword = userLoginDTO.password();
        String encodedPassword = userEntity.getPassword();

        loginSuccess = encodedPassword != null &&
                passwordEncoder.matches(rawPassword, encodedPassword);

        if (loginSuccess) {
            currentUser
                    .setLogged(true)
                .setFirstName(userEntity.getFirstName())      <-- тук продължава да свети
                    .setLastName(userEntity.getLastName());
        } else {
            currentUser.logout();
        }
    }

    return loginSuccess;
}

mobileleMavenZIPNEW.zip

luchob commented

Привет!

Тук:

currentUser
                    .setLogged(true)
                .setFirstName(userEntity.getFirstName())      <-- тук продължава да свети
                    .setLastName(userEntity.getLastName());

Проблемът е същият, с setter-ите и патърна. currentUser е инстанция на CurrentUser класа и там setLogged(true) връща void вместо CurrentUser. Очевидно при UserEntity си оправил проблема.

С удоволствие бих помогнал и с gradle но "дава проблеми" не ми е достатъчно като информация. Бих искал да видя проекта с gradle и ще може да кажа каква е причината.

Поздрави,
Л.

Така стана.Аз се сетих,че е от патерна,тъй като грешката е една и съща ,но явно пробвах да сменя в друг клас...Сега работи.Благодаря много.За Грейдъла не ми е важно така или иначе.Всички предишни ползваха Мейвън аз пробвах при вас с Грейдъл ,за да може ако имам грешка да съм сигурен ,че не идва от там.Не искам да отнемам от времето ти.Явно,че са елементарни грешки,но аз не съм толкова на ТИ все още с материала.Благодаря още веднъж!