Liferay - Крючок для GroupWrapper - PullRequest
0 голосов
/ 23 мая 2011

Я пытаюсь переопределить метод getDescriptiveName () в com.liferay.portal.model.Group

Я нашел оболочку (com.liferay.portal.model.GroupWrapper), поэтому я попыталсянаписать крюк, как написано в документации:

liferay-hook.xml:

<service>
    <service-type>com.liferay.portal.model.GroupWrapper</service-type>
    <service-impl>fr.villedeniort.hook.expando.GroupWrapperImpl</service-impl>
</service>

fr.villedeniort.hook.expando.GroupWrapperImpl.java:

public class GroupWrapperImpl extends GroupWrapper {
    public GroupWrapperImpl(Group group) {
    super(group);
}

@Override
public java.lang.String getDescriptiveName()
  throws com.liferay.portal.kernel.exception.PortalException,
  com.liferay.portal.kernel.exception.SystemException {
    return super.getDescriptiveName();
}

Когда крюк развернут, он поднимаетисключение:

java.lang.NoSuchMethodException: fr.villedeniort.hook.expando.GroupWrapperImpl.<init>(com.liferay.portal.model.GroupWrapper)

Я просматриваю код, который обнаружил, что он ломается в этой части по причине, которую я игнорирую:

Constructor<?> serviceImplConstructor = serviceImplClass.getConstructor(new Class<?>[] {serviceTypeClass});

На данный момент переменные имеют значения тезисов:

serviceType "com.liferay.portal.model.GroupWrapper" (id=14829)
serviceImpl "fr.villedeniort.hook.expando.GroupWrapperImpl" (id=14830)
serviceTypeClass Class<T> (com.liferay.portal.model.GroupWrapper) (id=14831)
serviceImplClass Class<T> (fr.villedeniort.hook.expando.GroupWrapperImpl) (id=14832)

У вас есть идеи?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 июня 2011

Очевидно, что невозможно подключить другие классы, кроме Services, поэтому мне пришлось искать другой путь.Для моего случая я подключил JSP и написал свой собственный метод, чтобы получить правильное описательное имя из ловушки.

0 голосов
/ 01 июня 2011

Вы также должны иметь конструктор без каких-либо аргументов. Теперь у вас есть один с аргументами конструктора, но нет чистого конструктора класса, который ищет java, когда он создает экземпляр класса. После вызова чистого конструктора java вызывает аргументированный.

У меня был похожий случай в каком-то другом контексте, и это было решением. <init> тег в сообщении об ошибке относится к такого рода проблеме.

...