Изменение существующих классов Liferay 7

Мне нужно внести некоторые изменения в портлет обмена личными сообщениями liferay 7, и я хотел спросить:

Есть ли способ переопределить классы портала liferay с помощью модуля? В моем случае я хочу изменить класс PrivateMessagingUtil.

С наилучшими пожеланиями,

Даниэль


person Breiti    schedule 20.11.2016    source источник


Ответы (2)


Вы можете настроить сервисы Liferay 7, создав тип проекта servicewrapper. Вы можете создать его с помощью командной строки:

blade create -t service-wrapper -p com.liferay.docs.serviceoverride -c UserLocalServiceOverride -s com.liferay.portal.kernel.service.UserLocalServiceWrapper service-override

Мне нужно, чтобы электронное письмо с подтверждением смены пароля не было отправлено пользователю, поэтому я переопределяю метод updatePassword из класса UserLocalServiceWrapper и передаю SilentUpdate как true.

@Component(
immediate = true,
property = {
},
service = ServiceWrapper.class)

public class UserLocalServiceOverride extends UserLocalServiceWrapper {

public UserLocalServiceOverride() {
    super(null);
}

@Override
public com.liferay.portal.kernel.model.User updatePassword(long userId,
    java.lang.String password1, java.lang.String password2,
    boolean passwordReset)
    throws com.liferay.portal.kernel.exception.PortalException {

    return updatePassword(userId,
            password1, password2,
            passwordReset, true);
}

@Override
public com.liferay.portal.kernel.model.User updatePassword(long userId,
    java.lang.String password1, java.lang.String password2,
    boolean passwordReset, boolean silentUpdate)
    throws com.liferay.portal.kernel.exception.PortalException {

    return super.updatePassword(userId, password1, password2,
        passwordReset, silentUpdate);
}
}

Посмотрите на эту ссылку из документации Liferay:

https://dev.liferay.com/es/develop/tutorials/-/knowledge_base/7-0/customizing-liferay-services-service-wrappers

Я надеюсь, что это поможет вам.

person Diego de Juan Canales    schedule 11.01.2018

Не глядя на код: Если есть точка расширения: используйте ее. Поскольку вы называете класс, который хотите изменить, я предполагаю, что его нет, поэтому точки расширения, вероятно, находятся в других классах, которые вызывают этот метод. Не у каждого отдельного класса есть точка расширения. Если все остальное не сработает, вам придется стиснуть зубы и поддерживать версию ветки - по крайней мере, это (вероятно, я не смотрел код) плагин, поэтому размер и влияние будут относительно ограничены.

Если за изменениями, которые вы хотели бы внести, стоит хорошая история, пожалуйста, отправьте заявку, а еще лучше с предлагаемая реализация. Обсудите с владельцем компонента.

... и отдельно отвечая на вопрос комментария Даниэля здесь: я не смотрел на код - в этом проблема такого рода вопросов: в другом настроении я бы отклонил вопрос "Я хочу изменить некоторый код в классе Xxx " с встречным вопросом в комментарии: "Чего вы на самом деле пытаетесь достичь?" Довольно часто есть лучшие решения, но когда задается подобный технический вопрос, любой ответ может быть неоптимальным. Поскольку Брейти выбрал решение, которое он намеревается использовать для решения своей проблемы, я поддерживаю свои слова — не стесняйтесь добавлять лучший ответ, предполагая его действительное намерение.

person Olaf Kock    schedule 20.11.2016
comment
Привет, Олаф, почему бы тебе не предложить реализовать новую версию osgi-модуля службы обмена сообщениями в социальных сетях? - person Daniele Baggio; 21.11.2016
comment
Потому что я не смотрел код. Это ваша возможность для лучшего ответа :) - person Olaf Kock; 21.11.2016
comment
Привет, есть ли какая-нибудь документация или книга о том, как создать новую версию сервисных модулей osgi? - person Breiti; 21.11.2016
comment
dev.liferay.com и github.com/liferay/liferay-blade-samples являются хорошей отправной точкой. - person Olaf Kock; 21.11.2016