?????? ?? ????.

 
 
 
Сообщения:2
Получил задание - исправить легаси баг.
User can subscribe on topics, but user receive email notifications with unsubscribe link that lead to branch, not to topic.
Bug confirmed for Topics, Q&A, Code reviews for actions: moving, deleting.
Описание понятное: юзер может подписаться, но получает некорректную ссылку, ведущую на ветку форума, а не на тему. К описанию вопросов нет.
В сущностях Branch и Topic нашел как формируются суффиксы урлов:
Branch - URL_SUFFIX + getId() (format http://{forum root}/branches/{id})
Topic - URL_SUFFIX + getLastPost().getId() (format http://{forum root}/posts/{id})
А вот где формируется урл, который отправляется юзеру, в каком классе искать?
Я не работал с большими проектами, поэтому плохо ориентируюсь. Если есть другие идеи, подсказки, в сторону чего копать - приму с благодарностью.
Заранее спасибо за ответ(ы).
 
 
Сообщения:851
Вообще письма формируются с помощью Velocity шаблонов (*.vm файлы). Если сможешь найти где они формируются, то сможешь найти и какие данные там заполняются.
 
 
Сообщения:9
Если я правильно понимаю, то после отправки post запроса мы попадаем в
PostController
@RequestMapping(method = RequestMethod.POST, value = "/topics/{topicId}") //
public ModelAndView create(@RequestParam(value = "page", defaultValue = "1", required = false) String page,

и далее в данном методе через "третьи классы" в итоге мы вызываем в класс MailService метод
public void sendUpdatesOnSubscription(JCUser recipient, SubscriptionAwareEntity entity)
где и формируются ссылки.

Правда на qa.jtalks.org/jcommune мне приходят письма с корректными ссылками.
Изменен:14 янв 2016 06:49
 
 
Сообщения:2
Метод отправляющий обновления по подписке:
sendUpdatesOnSubscription(JCUser recipient, SubscriptionAwareEntity entity) класса MailService, в котором
В мапу загружаются ключи типа String и значения в виде Object

Map<String, Object> model = new HashMap<>();
model.put(LINK, url);
model.put(LINK_LABEL, getDeploymentRootUrlWithoutPort() + urlSuffix);
model.put(LINK_UNSUBSCRIBE, this.getDeploymentRootUrl() + getUnsubscribeBranchLink(entity));

Константы ключей имеют значения:
private static final String LINK = "link";
private static final String LINK_UNSUBSCRIBE = "link_unsubscribe";
private static final String LINK_LABEL = "linkLabel";
При отправке используется шаблон Velocity - subscriptionNotification.vm, в котором:

<p>${messageSource.getMessage("greeting", $noArgs, $locale)} ${escape.html($user.username)}!</p>
<br/>
<p>${messageSource.getMessage("subscriptionNotification.content", $noArgs, $locale)}</p>
<p>${messageSource.getMessage("subscriptionNotification.link", $noArgs, $locale)} <a href="${link}">${linkLabel}</a>.</p>
<br />
<p>${messageSource.getMessage("wish", $noArgs, $locale)}</p>
<p>${messageSource.getMessage("signature", $noArgs, $locale)}</p>
#if ($link_unsubscribe)
<br/>
<p><a style="font-size: 10px" href="${link_unsubscribe}">${messageSource.getMessage("subscriptionNotification.unsubscribe", $noArgs, $locale)}</a></p>
#end

Как я понимаю, ниже представлена строка, где закралась ошибка?
<p>${messageSource.getMessage("subscriptionNotification.link", $noArgs, $locale)} <a href="${link}">${linkLabel}</a>.</p>

subscriptionNotification.unsubscribe - Отписаться от таких оповещений
subscriptionNotification.content - На вашем любимом форуме появились обновления.
subscriptionNotification.link - Вы можете просмотреть их по ссылке

P.S: К сожалению, мне не удалось собрать war в эклипс.
В консоле после сборки выдает
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 45.783 s
[INFO] Finished at: 2016-01-14T11:57:09+02:00
[INFO] Final Memory: 11M/102M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project jcommune-web-view: Could not resolve dependencies for project org.jtalks.jcommune:jcommune-web-view:war:3.4-SNAPSHOT: Failed to collect dependencies at org.jtalks.jcommune:jcommune-web-controller:jar:3.4-SNAPSHOT: Failed to read artifact descriptor for org.jtalks.jcommune:jcommune-web-controller:jar:3.4-SNAPSHOT: Could not transfer artifact org.jtalks.jcommune:jcommune-web-controller:pom:3.4-SNAPSHOT from/to opencast-public (http://repository.opencastproject.org/nexus/content/repositories/public/): connect timed out -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
 
 
Сообщения:9
насколько я понимаю, тебе НЕ обязательно собирать war, можно прямо из среды запускать приложение
 
Модераторы:katctapobepІраїдаJulia AtlyginaJulik21Julikdsafjifb
Сейчас эту тему просматривают:Нет