juneau-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Bognar (Confluence)" <no-re...@apache.org>
Subject [CONF] Juneau > Dual-purpose REST Java interfaces
Date Sun, 07 Oct 2018 19:06:36 GMT
<html>
<head>
<title>Message Title</title> 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">

<base href="https://cwiki.apache.org/confluence">  
<style type="text/css">@media only screen and (max-device-width: 480px) {.mobile-only
{
    width: auto !important;
    height: auto !important;
    overflow: visible !important;
    line-height: normal !important;
    font-size: inherit !important;
    mso-hide: all;
}

.desktop-only {
    display: none !important;
}

/* iPhone 3GS fix for unwanted 20px right margin */
body {
    min-width: 100% !important;
    padding: 0;
    margin: 0;
}

#center-content-table {
    max-width: none;
!important;
}

#header-pattern-container {
    padding: 10px 10px 10px 10px !important;
    line-height: 20px !important;
}

#header-avatar-image-container {
    padding-right: 8px !important;
}

#email-content-container {
    padding: 0 !important;
}

.mobile-expand {
    border-radius: 0 !important;
    border-left: 0 !important;
    border-right: 0 !important;
    padding-left: 26px !important;
}

.mobile-resize-text {
    font-size: 16px !important;
    line-height: 22px !important;
}

#page-title-pattern-header {
    font-size: 20px !important;
    line-height: 28px !important;
}

#page-title-pattern-icon-image-container-cell {
    padding-top: 7px !important;
}

#inline-user-pattern {
    display: block !important;
}

#inline-user-pattern-avatar {
    padding-top: 3px !important;
}

.contextual-area-pattern {
    border-bottom: 1px solid #ccc !important;
    padding: 15px 10px 0 10px !important;
}

.users-involved-pattern-column-table {
    width: 100% !important;
}

.users-involved-pattern-avatar-table-cell {
    padding: 3px 5px 5px 0 !important;
}

.users-involved-pattern-column-container {
    padding-right: 0 !important;
}

.contextual-excerpt-pattern, #users-involved-pattern {
    border: 0 !important;
}

/** Aui Typography upsized for mobile **/
#content-excerpt-pattern-container, #contextual-excerpt-pattern-text-container {
    font-size: 16px !important;
    line-height: 22px !important;
}

#content-excerpt-pattern-container h1, #contextual-excerpt-pattern-text-container h1 {
    font-size: 24px !important;
    line-height: 28px !important;
}

#content-excerpt-pattern-container h2, #contextual-excerpt-pattern-text-container h2 {
    font-size: 20px !important;
    line-height: 28px !important;
}

#content-excerpt-pattern-container h3, #contextual-excerpt-pattern-text-container h3 {
    font-size: 18px !important;
    line-height: 24px !important;
}

#content-excerpt-pattern-container h4, #contextual-excerpt-pattern-text-container h4 {
    font-size: 16px !important;
    line-height: 22px !important;
}

#content-excerpt-pattern-container h5, #contextual-excerpt-pattern-text-container h5 {
    font-size: 14px !important;
    line-height: 20px !important;
}

#content-excerpt-pattern-container h6, #contextual-excerpt-pattern-text-container h6 {
    font-size: 14px !important;
    line-height: 20px !important;
}

.user-mention {
    line-height: 18px !important;
}

/** Aui Typography end **/

/* Show appropriate footer logo on mobile, display links vertically */
#footer-pattern {
    padding: 15px 10px !important;
}

#footer-pattern-logo-desktop-container {
    padding: 0 !important;
}

#footer-pattern-logo-desktop {
    width: 0 !important;
    height: 0 !important;
}

#footer-pattern-logo-mobile {
    padding-top: 10px !important;
    width: 30px !important;
    height: 27px !important;
    display: inline !important;
}

#footer-pattern-text {
    display: block !important;
}

#footer-pattern-links-container {
    line-height: 0 !important;
}

.footer-pattern-links.mobile-resize-text,
.footer-pattern-links.mobile-resize-text,
#footer-pattern-text.mobile-resize-text,
#footer-pattern-links-container.no-footer-links {
    font-size: 14px !important;
    line-height: 20px !important;
}

.footer-link {
    display: block !important;
}

#footer-pattern-links-container table {
    display: inline-block !important;
    float: none !important;
}

#footer-pattern-links-container, #footer-pattern-text {
    text-align: center !important;
}

#footer-pattern-links {
    padding-bottom: 5px !important;
}

/** Team Calendar overrides, these should be removed when notifications are updated in Team
Calendars. For now CSS
    overrides are being used because the structure of the content can't change without rereleasing
the plugin */
.mail-calendar-container .day-header + table tr td:first-child {
    vertical-align: top !important;
    padding-top: 5px !important;
}}
@media (min-width: 900px) {#center-content-table { width: 900px; }}
@media all {#outlook a {
    padding: 0;
}

/* Force Outlook to provide a "view in browser" menu link. */
/* Prevent Webkit and Windows Mobile platforms from changing default font sizes.*/
body {
    -webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
}

.ExternalClass {
    width: 100%;
}

/* Force Hotmail to display emails at full width */
#background-table {
    margin: 0;
    padding: 0;
    width: 100% !important;
}

/* Needed to override highlighting on date and time links in iOS */
.grey a {
    color: #707070;
    text-decoration: none;
}/* These styles are appended to the head element of a notification in order to prevent Apple
Mail and similar
   clients from underlining the due dates with a blue hyperlink */
/* a lozenge outside an inline task should always be #42526E (McFanning), lozenges inside
an inline task should be
   colored according to their upcoming due dates, a completed task date lozenge or deleted
task date
   lozenge should always be #5E6C84 (Clooney) */
.date-time-lozenge a {color: #42526E; text-decoration: none; }
.inline-task-text-container .date-time-lozenge.date-upcoming a {color: #FF8B00; text-decoration:
none; }
.inline-task-text-container .date-time-lozenge.date-past a {color: #DE350B; text-decoration:
none; }
.inline-task-text-container.content-deleted-color .date-time-lozenge a,
.inline-task-text-container.checked .date-time-lozenge a {
    color: #5E6C84; text-decoration: none;
}}
</style> 
</head>
<body>
<table id="background-table" cellpadding="0" cellspacing="0" width="100%" style="border-collapse:
collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333333; background-color:
#f5f5f5" bgcolor="#f5f5f5"> 
<tbody> 
<tr> 
<td id="header-pattern-container" style="padding: 0px; border-collapse: collapse; padding:
10px 20px"> 
<table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse:
collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333333"> 
<tbody> 
<tr> 
<td id="header-avatar-image-container" valign="top" style="padding: 0px; border-collapse:
collapse; vertical-align: top; width: 32px; padding-right: 9px" width="32"><a href="https://cwiki.apache.org/confluence/display/~jamesbognar?src=mail&amp;src.mail.product=confluence-server&amp;src.mail.timestamp=1538939196907&amp;src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Ablogpost-created-notification&amp;src.mail.recipient=8aa980875d295aa8015d3440fd6a002c"
style="color: #3b73af; text-decoration: none"><img id="header-avatar-image" class="image_fix"
src="cid:avatar_2eaf85c34c077566e5688f27ff70c893" height="32" width="32" border="0" style="border-radius:
3px; vertical-align: top"></a></td>
<td id="header-text-container" valign="middle" style="padding: 0px; border-collapse: collapse;
vertical-align: middle; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px;
mso-line-height-rule: exactly; mso-text-raise: 1px">James Bognar <strong>created</strong>
a blog post</td> 
</tr> 
</tbody> 
</table> </td> 
</tr> 
<!-- End Header pattern --> 
<tr> 
<td id="email-content-container" style="padding: 0px; border-collapse: collapse; padding:
0 20px"> 
<table id="email-content-table" cellspacing="0" cellpadding="0" border="0" width="100%"
style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333333;
border-spacing: 0; border-collapse: separate"> 
<tbody> 
<tr> 
<td class="email-content-rounded-top mobile-expand" style="padding: 0px; border-collapse:
collapse; color: #ffffff; padding: 0 15px 0 16px; height: 15px; background-color: #ffffff;
border-left: 1px solid #cccccc; border-top: 1px solid #cccccc; border-right: 1px solid #cccccc;
border-bottom: 0; border-top-right-radius: 5px; border-top-left-radius: 5px" height="15" bgcolor="#ffffff">&nbsp;</td>

</tr> 
<tr> 
<td class="email-content-main mobile-expand" style="padding: 0px; border-collapse: collapse;
border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom:
0; padding: 0 15px 15px 16px; background-color: #ffffff" bgcolor="#ffffff"> 
<table id="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%"
style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333333">

<tbody> 
<tr> 
<td id="page-title-pattern-icon-image-container" valign="top" style="padding: 0px; border-collapse:
collapse; width: 16px; vertical-align: top" width="16"> 
<table cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace:
0pt; mso-table-rspace: 0pt; color: #333333"> 
<tbody> 
<tr> 
<td id="page-title-pattern-icon-image-container-cell" style="padding: 0px; border-collapse:
collapse; width: 16px; padding: 9px 8px 0px 0px; mso-text-raise: 5px; mso-line-height-rule:
exactly" width="16"><a href="https://cwiki.apache.org/confluence/display/JUNEAU/2018/10/07/Dual-purpose+REST+Java+interfaces?src=mail&amp;src.mail.product=confluence-server&amp;src.mail.timestamp=1538939196907&amp;src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Ablogpost-created-notification&amp;src.mail.recipient=8aa980875d295aa8015d3440fd6a002c&amp;src.mail.action=view"
title="blogpost icon" style="vertical-align: top;; color: #3b73af; text-decoration: none"><img
style="vertical-align: top; display: block;" src="cid:blogpost-icon" alt="blogpost icon" title="blogpost
icon" height="16" width="16" border="0"></a></td> 
</tr> 
</tbody> 
</table> </td>
<td style="vertical-align: top;; padding: 0px; border-collapse: collapse; padding-right:
5px; font-size: 20px; line-height: 30px; mso-line-height-rule: exactly" id="page-title-pattern-header-container"><span
id="page-title-pattern-header" style="font-family: Arial, sans-serif; padding: 0; font-size:
20px; line-height: 30px; mso-text-raise: 2px; mso-line-height-rule: exactly; vertical-align:
middle"><a href="https://cwiki.apache.org/confluence/display/JUNEAU/2018/10/07/Dual-purpose+REST+Java+interfaces?src=mail&amp;src.mail.product=confluence-server&amp;src.mail.timestamp=1538939196907&amp;src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Ablogpost-created-notification&amp;src.mail.recipient=8aa980875d295aa8015d3440fd6a002c&amp;src.mail.action=view"
title="Dual-purpose REST Java interfaces" style="color: #3b73af; text-decoration: none">Dual-purpose
REST Java interfaces</a></span></td> 
</tr> 
</tbody> 
</table> </td> 
</tr> 
<tr> 
<td class="email-content-main mobile-expand" style="padding: 0px; border-collapse: collapse;
border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom:
0; padding: 0 15px 15px 16px; background-color: #ffffff" bgcolor="#ffffff"> 
<table class="content-excerpt-pattern" cellspacing="0" cellpadding="0" border="0" width="100%"
style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333333;
font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule:
exactly; mso-text-raise: 1px"> 
<tbody> 
<tr> 
<td class="content-excerpt-pattern-container mobile-resize-text " style="padding: 0px;
border-collapse: collapse; padding: 0 0 0 24px"> <p style="margin: 10px 0 0 0; margin-top:
0"> <strong>New in Juneau 7.2.1:&nbsp;</strong> </p> <p style="margin:
10px 0 0 0">Method and argument annotations such as&nbsp;@RestMethod, @Path, etc...,
are now inheritable from parent classes and interfaces.&nbsp;&nbsp;</p> <p
style="margin: 10px 0 0 0">This means you can now define the same Java interface for both
your server and client side APIs.&nbsp;&nbsp;</p> <p style="margin: 10px
0 0 0">For example, the Pet Store application now defines a top-level <strong>PetStore</strong>
interface:</p> <p style="margin: 10px 0 0 0"> <span class="confluence-embedded-file-wrapper
confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border"
height="387" width="600" src="https://cwiki.apache.org/confluence/download/attachments/embedded-blogpost/JUNEAU/2018/10/07/Dual-purpose%20REST%20Java%20interfaces/Screen%20Shot%202018-10-07%20at%202.47.38%20PM.png?api=v2"></span>
</p> <p style="margin: 10px 0 0 0">The <strong>PetStoreResource</strong>
class implements this interface using the normal RestServlet API.</p> <p style="margin:
10px 0 0 0"> <span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img
class="confluence-embedded-image confluence-content-image-border" height="458" width="631"
src="https://cwiki.apache.org/confluence/download/attachments/embedded-blogpost/JUNEAU/2018/10/07/Dual-purpose%20REST%20Java%20interfaces/Screen%20Shot%202018-10-07%20at%202.49.41%20PM.png?api=v2"></span>
</p> <p style="margin: 10px 0 0 0">In this particular case, the&nbsp;@RestMethod
annotations are specified in the implementation class, although they could be located in the
interface as well.</p> <p style="margin: 10px 0 0 0">The <strong>PetStore</strong>
interface can be used as the remote proxy interface like so:</p> <p style="margin:
10px 0 0 0"> <span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img
class="confluence-embedded-image confluence-content-image-border" height="111" width="630"
src="https://cwiki.apache.org/confluence/download/attachments/embedded-blogpost/JUNEAU/2018/10/07/Dual-purpose%20REST%20Java%20interfaces/Screen%20Shot%202018-10-07%20at%203.01.26%20PM.png?api=v2"></span>
</p> <p style="margin: 10px 0 0 0">The advantages to this design approach are:</p>

<ul style="margin: 10px 0 0 0"> 
<li>It's much easier to keep server and client side APIs in sync since they're working
off the same interface.</li> 
<li>The annotations can be moved into your interface where they won't interfere with
the readability of your servlet code.</li> 
</ul> <p style="margin: 10px 0 0 0"> <br> </p> </td> 
</tr> 
</tbody> 
</table> </td> 
</tr> 
<tr> 
<td class="email-content-main mobile-expand action-padding last-row-padding" style="padding:
0px; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc;
border-top: 0; border-bottom: 0; padding: 0 15px 15px 16px; background-color: #ffffff; padding-bottom:
10px; padding-bottom: 10px" bgcolor="#ffffff"> 
<table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse:
collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333333; font-family: Arial,
sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise:
1px"> 
<tbody> 
<tr> 
<td id="actions-pattern-container" valign="middle" style="padding: 0px; border-collapse:
collapse; padding: 15px 0 0 24px; vertical-align: middle"> 
<table align="left" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace:
0pt; color: #333333"> 
<tbody> 
<tr> 
<td class="actions-pattern-action-icon-container" style="padding: 0px; border-collapse:
collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule:
exactly; mso-text-raise: 0px; vertical-align: middle"><a href="https://cwiki.apache.org/confluence/display/JUNEAU/2018/10/07/Dual-purpose+REST+Java+interfaces?src=mail&amp;src.mail.product=confluence-server&amp;src.mail.timestamp=1538939196907&amp;src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Ablogpost-created-notification&amp;src.mail.recipient=8aa980875d295aa8015d3440fd6a002c&amp;src.mail.action=view"
title="View blog post Icon" style="color: #3b73af; text-decoration: none"><img class="actions-pattern-action-icon-image"
height="16" width="16" border="0" title="View blog post Icon" src="cid:com.atlassian.confluence.plugins.confluence-email-resources_view-blogpost-email-adg-footer-item_icon"
alt="View blog post Icon" style="vertical-align: middle"></a></td>
<td class="actions-pattern-action-text-container" style="padding: 0px; border-collapse:
collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule:
exactly; mso-text-raise: 4px; padding-left: 5px; white-space: nowrap"><a href="https://cwiki.apache.org/confluence/display/JUNEAU/2018/10/07/Dual-purpose+REST+Java+interfaces?src=mail&amp;src.mail.product=confluence-server&amp;src.mail.timestamp=1538939196907&amp;src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Ablogpost-created-notification&amp;src.mail.recipient=8aa980875d295aa8015d3440fd6a002c&amp;src.mail.action=view"
title="View blog post" style="color: #3b73af; text-decoration: none">View blog post</a></td>
<td class="actions-pattern-action-bull" style="padding: 0px; border-collapse: collapse;
font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule:
exactly; mso-text-raise: 4px; color: #999999; padding: 0 5px">•</td> 
</tr> 
</tbody> 
</table> 
<table style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt;
color: #333333"> 
<tbody> 
<tr> 
<td class="actions-pattern-action-icon-container" style="padding: 0px; border-collapse:
collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule:
exactly; mso-text-raise: 0px; vertical-align: middle"><a href="https://cwiki.apache.org/confluence/plugins/likes/like.action?contentId=95649968&amp;src=mail&amp;src.mail.product=confluence-server&amp;src.mail.timestamp=1538939196907&amp;src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Ablogpost-created-notification&amp;src.mail.recipient=8aa980875d295aa8015d3440fd6a002c&amp;src.mail.action=like&amp;jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ4c3JmOjhhYTk4MDg3NWQyOTVhYTgwMTVkMzQ0MGZkNmEwMDJjIiwicXNoIjoiZmRlNGIyZDc4NzYzYmQ2ODUzY2VjZmU1YWJlZTM3NGMxYjE1YThhZDgxNzk0ZGQwY2M5NjM4NGFhOTE0OWUwMCIsImlzcyI6ImNvbmZsdWVuY2Vfbm90aWZpY2F0aW9uc0FSRUgtWFVEMS1QT1FHLUNTQU8iLCJleHAiOjE1Mzk1NDM5OTYsImlhdCI6MTUzODkzOTE5Nn0.OxOefmhBlhdKZ4Gkl5fPR2fHt1iV6heYqzbffjGElT4"
title="Like Icon" style="color: #3b73af; text-decoration: none"><img class="actions-pattern-action-icon-image"
height="16" width="16" border="0" title="Like Icon" src="cid:com.atlassian.confluence.plugins.confluence-like_view-email-adg-content-item_icon"
alt="Like Icon" style="vertical-align: middle"></a></td>
<td class="actions-pattern-action-text-container" style="padding: 0px; border-collapse:
collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule:
exactly; mso-text-raise: 4px; padding-left: 5px; white-space: nowrap"><a href="https://cwiki.apache.org/confluence/plugins/likes/like.action?contentId=95649968&amp;src=mail&amp;src.mail.product=confluence-server&amp;src.mail.timestamp=1538939196907&amp;src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Ablogpost-created-notification&amp;src.mail.recipient=8aa980875d295aa8015d3440fd6a002c&amp;src.mail.action=like&amp;jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ4c3JmOjhhYTk4MDg3NWQyOTVhYTgwMTVkMzQ0MGZkNmEwMDJjIiwicXNoIjoiZmRlNGIyZDc4NzYzYmQ2ODUzY2VjZmU1YWJlZTM3NGMxYjE1YThhZDgxNzk0ZGQwY2M5NjM4NGFhOTE0OWUwMCIsImlzcyI6ImNvbmZsdWVuY2Vfbm90aWZpY2F0aW9uc0FSRUgtWFVEMS1QT1FHLUNTQU8iLCJleHAiOjE1Mzk1NDM5OTYsImlhdCI6MTUzODkzOTE5Nn0.OxOefmhBlhdKZ4Gkl5fPR2fHt1iV6heYqzbffjGElT4"
title="Like" style="color: #3b73af; text-decoration: none">Like</a></td> 
</tr> 
</tbody> 
</table> </td> 
</tr> 
</tbody> 
</table> </td> 
</tr> 
<tr> 
<td class="email-content-rounded-bottom mobile-expand" style="padding: 0px; border-collapse:
collapse; color: #ffffff; height: 5px; line-height: 5px; padding: 0 15px 0 16px; background-color:
#ffffff; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; border-top: 0; border-left:
1px solid #cccccc; border-bottom: 1px solid #cccccc; border-right: 1px solid #cccccc; mso-line-height-rule:
exactly" height="5" bgcolor="#ffffff">&nbsp;</td> 
</tr> 
</tbody> 
</table> </td> 
</tr> 
<tr> 
<td id="footer-pattern" style="padding: 0px; border-collapse: collapse; padding: 12px 20px">

<table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" width="100%"
style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333333">

<tbody> 
<tr> 
<td id="footer-pattern-links-container" width="100%" style="padding: 0px; border-collapse:
collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif;
mso-line-height-rule: exactly; mso-text-raise: 2px"> 
<table align="left" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace:
0pt; color: #333333; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule:
exactly; mso-text-raise: 2px"> 
<tbody> 
<tr> 
<td class="footer-pattern-links mobile-resize-text" style="padding: 0px; border-collapse:
collapse"><a href="https://cwiki.apache.org/confluence/users/removespacenotification.action?spaceKey=JUNEAU&amp;src=mail&amp;src.mail.product=confluence-server&amp;src.mail.timestamp=1538939196907&amp;src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Ablogpost-created-notification&amp;src.mail.recipient=8aa980875d295aa8015d3440fd6a002c&amp;src.mail.action=stop-watching&amp;jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ4c3JmOjhhYTk4MDg3NWQyOTVhYTgwMTVkMzQ0MGZkNmEwMDJjIiwicXNoIjoiMDkyYzE1NTBhZTUyODhiNjAyMzhjY2NhMjgwOThjZDNiYzE2MjIyNTI1NjExYWJkYjRlYTJmYmJhNzRiNzZkMCIsImlzcyI6ImNvbmZsdWVuY2Vfbm90aWZpY2F0aW9uc0FSRUgtWFVEMS1QT1FHLUNTQU8iLCJleHAiOjE1Mzk1NDM5OTYsImlhdCI6MTUzODkzOTE5Nn0.VMC1ynfAPNlAbcNfAXXmYizYt8VIJSGKfqNd6y-HiyQ"
title="" style="color: #3b73af; text-decoration: none">Stop watching space</a></td>
<td class="footer-pattern-links-bull" style="padding: 0px; border-collapse: collapse; padding:
0 5px; color: #999999">•</td> 
</tr> 
</tbody> 
</table> 
<table style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt;
color: #333333; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule:
exactly; mso-text-raise: 2px"> 
<tbody> 
<tr> 
<td class="footer-pattern-links mobile-resize-text" style="padding: 0px; border-collapse:
collapse"><a href="https://cwiki.apache.org/confluence/users/editmyemailsettings.action?src=mail&amp;src.mail.product=confluence-server&amp;src.mail.timestamp=1538939196907&amp;src.mail.notification=com.atlassian.confluence.plugins.confluence-content-notifications-plugin%3Ablogpost-created-notification&amp;src.mail.recipient=8aa980875d295aa8015d3440fd6a002c&amp;src.mail.action=manage"
title="" style="color: #3b73af; text-decoration: none">Manage notifications</a></td>

</tr> 
</tbody> 
</table> </td>
<td id="footer-pattern-logo-desktop-container" rowspan="2" valign="top" style="padding:
0px; border-collapse: collapse; padding-left: 20px; vertical-align: top"> 
<table style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt;
color: #333333"> 
<tbody> 
<tr> 
<td id="footer-pattern-logo-desktop-padding" style="padding: 0px; border-collapse: collapse;
padding-top: 3px"><img id="footer-pattern-logo-desktop" src="cid:footer-desktop-logo"
alt="Confluence logo big" title="Confluence logo big" width="132" height="20" class="image_fix"></td>

</tr> 
</tbody> 
</table> </td> 
</tr> 
<tr> 
<td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0px;
border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family:
Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px; display: none">This
message was sent by Atlassian Confluence 6.9.0<br> <img id="footer-pattern-logo-mobile"
src="cid:footer-mobile-logo" alt="" title="" width="0" height="0" style="display: none; mso-hide:
all"></td> 
</tr> 
</tbody> 
</table> </td> 
</tr> 
</tbody> 
</table> 
<table id="sealed-section" border="0" cellpadding="0" cellspacing="0" width="0" style="border-collapse:
collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; color: #333333; display: none; mso-hide:
all"> 
<tbody> 
<tr> 
<td style="padding: 0px; border-collapse: collapse; border: 0; font-size: 0px; line-height:
0; mso-line-height-rule: exactly"></td> 
</tr> 
</tbody> 
</table>
</body>
</html>
Mime
  • Unnamed multipart/related (inline, None, 0 bytes)
View raw message